;awnXuvuUM5WFoKg38?d z9DpI|J7fhQ$1sRpQB_{)`ydv>GzD6)OX3O|Pi_YOaM;saAM#C_#5yMP&u@DA>yoex?Ftwh*GaKW1VPcA70ANW>en5 z%WxOpz>*~R0V-Mhf5BK8b(Dh3Ado?}>AStkcMj%bCn2t#kwvUi$5s0 B8>V|g({FhX~j;StXWy$|2m&}Kl(A>SY5@Bm}yvh$e- zrg8)Py^5VT63)-V=Lg`Ntz_N+%1ZNfk${;O |^Hf+Fm;5&t^UaP~)gNrhI_%84-%Xx;_ISjVS{|oHu#{ ;bSd*YlkYZ?CsejHb%~YXX~KGkyrEw&1(* zJ$MVg7vG1s;`{LfcpH9@UBDRgvkTc8b`iUnt!0<6OSj;MA) svv?)D6=pn=-3H$vmyk5no1~3d${;}W4jgiHB_M#HS(zKo5FDKll&Qy*sd2i1 zKlMQNaLno|*K#S>C=k_A5?vzc3Ysg(Xh+FNnGF$8% kl3q-N$P|woeP+! z7s#ad6p=s&AK;IL4nD*mv1{115KG`sA(mLrv TE z1NbZaHU5TO&u(Bh4&bBsJN!MniT#7!BIubpYHfN>(XA118K&Oy7lKXhRpm~v@Zj*o za_Xojyv}wW^26p8LUwg8{spG^S9~0Dcjn$+XM5`^AMdSGDC}>Ye6h_^wP@4NcddQv z&AQ|4X36iKz`wV^9&N5F@5d(~yup9K^M8(h-jFln?IVjy&bTz;gYZq<+7;|(?ez8y zVvMGJ<~#8df*SFNfyhW0OfU%{q3m{c$FK=*?f|Pfb!y>sp`@V5T2U}D&s3P7pKG#} z kytUT3n-}~ z$&d~q@g#vHk|Z|3HnO|erj0~RQm~R}*k*PgSmvY5FjwIALNqZ?r1!#K^CioYLM7oa zA{cQ51DHTJnIuQ(Mo+RxHZicf**$CvyLTg?(IE(8GXZsK!T6#Cr=8paahZ@Xf=oZZ zLLe622FD8N)B^U|$lAf2W@DSX2keL&Q7Jy|_CPcRo88$1rUu(sH9|yeUGT#JJqyV+ zIGrIyWFjdhlgMOp2AM*pvaRfX_5j<)9%K)(huI^->5T9LNGkn+{=$!dqS6nHBS)B! zK#HmzjMwY#;)S5D+S%%X0J6d*3^EY435PUeN;d`Q_egoe>E!FH%A25WMB~QO2}7pE z(GFB(q`1H*$JPaAYNY6C)o$!<^{#?=wR@zz<#bKgd)z|SS|BMSpE#}V!NkR|p$3+* zfixjwA8BNd^^s<_T`;R?VBbOe6se%J9p<6k{bW8_z#eB$1sO3}Oj-fmh@C7U4)z3l zlI<8E@hFq uu+?)4fYXa0n>aMS4cH zp8)N9VgE(3r t(}Bc; zVC35A^G3FDC)tXOTge8}NBYSC*+}jpo5*HzH@SywA@`E|*lzYOwuimSUSqGbH`tqO zFWblVvwyP#Tgm<80kTctD+Krpd6Yaxwv)%n6M!3Uv3LDg0FOvNRtUeM{W#W-)BV`y z$MrBUSowqoz72vAX>0*X1#}G1AZakWBGrkU!CUF}2$c(^lg-AqrMz&6n$ghf0wD1@ zU1GjMjL3X&ItJ-yF;)@I_TYR<2f3v-zO>ib)eh~Hbaf3E^j3A$@_akr4$~FTLpr|& zRbnNxZ(0hI*FM7`oS#B_Nm9L#PjhvGA}%R6RORY$gGqx Y#ILQ+T=A~d6v)E=p= zU11f@&4ip+7vx9VhmuLs@JfL#w~G(LARx8?&;%6&aZ*r4Whv;ktj7&UL0(Z>I8K&q zZa3Q5k5`jD5GcGYu>Bw%CvS?>`yIPt$^T5+U?}zu?5+LeZ6Po`ha4bpvGdqL_TB(_ zhrCM;vP0}w_Pbybxqn5rt6 |3ZFN%8;x z;_!4FaCkbN9U0{Cbi$Y%esEoBEL8#jqe>dbzGmO_(|DS|zGXiNX!*A!U4*97k^Ddh zDKrgWnWj<=<=9d79s7O&e^0eE1L*e;>_?%azv0RMgB*P?HJ~V(Gnzt=LBXjRL@lF5 zN3-p~(DP`4Ft_>mLw1Z^(~m!ew9k4-`e;uHSOW5s=~R)6(<#8kf9b~#2zL5}VCOXQ z<+KtuE3IJ1`{)dI0ygUqq|s^-(tfim>Q PK9$T&mZnJ%MU zw41u-1v3nO9OB0^Kc;>h{=eWlv~UwadE@?troe=IXfGVJQ7`rRai|}M_0#2ag&&Xe z LJ;@YVq+)0$J8b;s*C8w zBkk%^dO4gh)64u=-bb(SV@Uig0wO1{a0mdz#Kx%e1Zf$sfn`L|a6@iNpz-VJjbNif zSs%U0k7EYuD7^*J&7x!=-AwO*TXle2chU{C&ySUU9OuXIeSmJHclmL=A1C{ 8r`i>h0X|C0a;>GN(h>j^TYhetsl-;CZz`zB zEh?)lD# )zT(GRAN`jfrwPjbw{#Ha?RENyG+#e2J_Pd>=xr}O1PM;MkM5`crU&R- z^lkbMeU~1j@A$_G615Tm3lKkMsOEpK0eiy%k-~PT`&-&}g{A1u$0*nAZk(upB<%_1%y? z7+zfE1@aA7E`1<>O2r%}B%UFh1uK!BXe^&4CLUZstVgsRKwa3klH~A!VP5dzV6~)C zrK8)~1>r&5aD9Y4OqamVU@cEw?J-KGwlDX!i{mq$B0cFpF{l>FfB=O~c{;DqoY&&4 z7p!f*^pQK!m>XEn6EXyeAo@E!N&leWt_u9P(2tA!c;ZGGmJu110qPg~@gzT8j#a zwxxp2Ix;wEa{7ct67JEBtZ0!gvyW9(*CSkXgB7ukdTKB(60W87b_-|wlEF9fo#G)@ zvlz}b!(J-LQydZDPbNpZ2V_w)g$&}&DSlk$$7cpZZJAP*08UvJCsWA)%%=MBG(Vm` zAWM`b$-pO<_;D!=Q5cy3Ln8+;qGz~i;P!}NrI1Vd3&B!2N^InX>o3C2R%HLRwA6=~ zP}5GAf^;;S8(binR;C|I`7Bws47OIeA6NKsB{OKJ4Q4yr5T_%E+bgr6D4A83D}bMn zQmTuVMVxZYDD40Ib%Sx^n>=t20NyoFBt}e#RjO064c1AM&(KaOshT;fx~6f?+=ceR z8{U!fC`EKk5Vr CpaP3;W#tU+S zPt{J(l;%77QUwbe2Uou1!Mx2S!U=k#m@R9r68b2G{O~?`j?rYc*cI_oze8Efpd}}r zS~F~bsu+eZlCg2Z$Z`vk2lDc5(%tfb!lH?60)&cjEEYDe)PyjI;KLA})Haqi35rzm z4k5$Q$onAi(diu~k`NGSu4?weaZj*nuS!03dfzm-t*#XMF0DxJFDnPkRrFWRVB+0s zNby4JftH0U#%|A0Dh&o4tQ9h|Lp2Jd2;Ey-S3mpjFX`4dz>-Kez2J$a=2LGbHMKOr zT8p=o04$}k3X?7l1)i8UU-0kZdJoNe|AK}wN 6Zj ^zBST;!(FFQj9C<{nh<;ODtO#OJ4A6IXZ zO~XoAiL4aP(11nOuogeA_2W7?uxJtBHT|z~P_VAQ6#|_=NdMO@2||s&Rf13Y8%ZIX zFG^~s58g7~E3h9~wZwi@^R8P1E+c7i6Wsn@#W{Rj?!-w}tK@U)#oKmZE{P}|8R7M+ zN$|eHY}5ib4Hv^JJK>OE&`<--rG<1NyrMIWmcUCo6%bjiq1Vtppx1Z7%QyE>AhYxV zc=_gef!|SJb94{9dh-U|3l!^XdP0^XYmzOOZI|tneJeW}A`giQQHSJ&m_jTexgq%> z1tCQt#UW>g%nYdxsST+QX$WZwX$hGdvMl8Mko6&Vg**|mC**^WuS1T7{1S3J &>@=)Xlksrw; &vBXS{sfd{oQx!8SW=G7 2bwzrEwK;Gvcb^TydAj z-5>XC-1~7qsm7_4syvlVRj8V%nxr~IHB~iTRjMjiEmGN44pp0qS9PkKDvxTF>KxU1 zstZ(p)jHKRs`aYtReh=f)m^I1sz+3hsUBB7sd`oQuIfG2`>GFB->8no<9He$5+4@7 zBA&&sjlUwkFaFK=_v3$zKNkN>{PFk`@h9W|Ouz{=AtWIzL7kAAz$K(7WF%xJWF;69 zj0xrhYeHT^U4l1ZeZnINZzuebn4VaYxFqqs#I=c+C0>zuRpO0_cP92F4kX@{xH<8j z#CsDTPkbuznZ)N3UrKyAad+aL#4nR3Bqb)LCUHsWN&2Mhq?{yEQgPCmNwbpXCfSo5 zNo`4dQdg2IsVB*k Gh=Vl8z^bCMPB*Cubz*BwLe YLOX)cxv>>P_mq)mzjrt3OK_my(uZPMMZcl2VpZ zkuoEtDrHtmO-fzLl9bkz_LPp4r735nbfvgbdQv JzD7q#jHC zHTAdDlc|4duqIBEs?ln68oef4Q>dAunWibxlxb#asx`HmdQF37iKbh_G?!^^)ZDJQ zQ`4sz&}`A%r@3FVP4kduhvsF?E1KP!J(|}v2Q}|&KGb}o`AqY<<~z+X%`ckcniJeO zE{cohV!1d@&82c2m(FEyX0C`U=Voy=Tpc%?o6F7T7IKTZC7g#lhr5&;;O^o!bN6uf za$C6vxCgn1xktI}+!Ndm?kVnV?p^LZ?gQ>4?i21X_XYPA_bvB5_Y?OEcbq$srb^3C zo1WI0c6C}`+V-^lX 8kUEWJD3oqlfm`ROeE!t~G5e@H)`ej@#3 z`k&fR?Ko|?c7j%}E!Cc@y-a(hcAfTG?RDB4wEf!c+9$L-v`=ZD(LSerLHnY1m-ZFy zzqB7}Kh}P#J*@pgdqn%S_FL_D+8?w(X@Aa$&B)7W$yk|jTgLMlhjk&k3|)zCrmjX; zr<<*tuWQrsx=x)_w@lZqTdli5=hv;#U8=iWccpHf?m^vax`Vopb)V`E>%Pz()qSt~ zQFl!DOJ+i5Nv1dR+|0`|Z_B(Rb93e+nY%Jy$vlvGF!NC62brH{9?twC^GN1#eW*S{ zAE}ShEA=XUf<8%~tuNFU>nH1{>Zj{V^>zB$`bK@TezX1&{iFKF^pERb)W59Xt$$Vj zy8cc5`})uHpX ^}_?43P%8L19QS za0aa*(~xb*F%%oB4b6tRhWUnt2B)FR;4++T@EMjHE-+kZxX7^9aGl{6!|jF*h5^GC z!&bvK!^4J04F_`MIYl|;IWux*=G5fW=QQN-Ij)@LITz$ym~%zW`kb3`Hs);3*^;w0 zXIsugIWOkCmh*PbL1UsZ-DopTHkKP_8=H)CjPs3)jCSMg#!bctj1L)~G440MWqj9o z$oQf06XRjym&UJ+M~y$2!c5~$6HIcG!W3nG#KElg5;8$}m|>l_tAsrRfS&ziGSa zInx2tw`OFHF*lm$n|sVF%om!kHs5T%)qID!&%DvR)x6F8u=z3b6XqS}{pO>VaLW`+ znWf4y%hF_7U|DQ&SlTTe7O!Qs !MU4b}zLR_ijW*LI=pV%s{~ZMFg17Tb2)PTMZqZriK2H*EWC2W+3% z4%@!4eP#RB_MPnq+fN0F1yc)_7OXG0wP0hx)`D#X&lJ2|@X8<=B+{p>VI&zW_}6~{ DSxQ#C literal 0 HcmV?d00001 diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcshareddata/xcschemes/NfcLockFramework.xcscheme b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcshareddata/xcschemes/NfcLockFramework.xcscheme new file mode 100644 index 0000000..7254169 --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcshareddata/xcschemes/NfcLockFramework.xcscheme @@ -0,0 +1,67 @@ + + + diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..74f55db --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.docc/NfcLockFramework.md b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.docc/NfcLockFramework.md new file mode 100644 index 0000000..611bf6f --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.docc/NfcLockFramework.md @@ -0,0 +1,13 @@ +# ``NfcLockFramework`` + +Summary + +## Overview + +Text + +## Topics + +### Group + +- ``Symbol`` \ No newline at end of file diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.swift b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.swift new file mode 100644 index 0000000..a22fd31 --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/NfcLockFramework.swift @@ -0,0 +1,174 @@ +import CoreNFC +import NFCSDK + +@objc(NFCManager) +public class NFCManager: NSObject, NFCTagReaderSessionDelegate { + static let instance = NFCManager() + private let helper = IOSNFCHelper() + private var session: NFCTagReaderSession? + private var readyToStart = true + private var controlName = "" + + private override init() { + + } + + @objc + public func startScan() { + if (readyToStart) { + readyToStart = false + session = NFCTagReaderSession( + pollingOption: [.iso14443], + delegate: self, + queue: nil, + ) + session?.alertMessage = "请将 iPhone 靠近设备" + session?.begin() + } + } + + @objc + public func endScan() { + session?.invalidate() + Task { + try? await Task.sleep(nanoseconds: 2_000_000_000) + readyToStart = true + } + } + + @objc + public func endScan(errorMessage: String) { + session?.invalidate(errorMessage: errorMessage) + Task { + try? await Task.sleep(nanoseconds: 2_000_000_000) + readyToStart = true + } + } + + public func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) { + print("NFC Session Active") + } + + public func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) { + endScan() + } + + public func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [CoreNFC.NFCTag]) { + + guard let tag = tags.first else { return } + + session.connect(to: tag) { error in + if error != nil { + self.endScan(errorMessage: "NFC 连接失败") + return + } + + switch tag { + + case .miFare(let miFareTag): + + self.helper.setTransceiver { data, resolve in + let length = Int(data.size) + var buffer = [UInt8](repeating: 0, count: length) + for i in 0..+ +SchemeUserState ++ +NfcLockFramework.xcscheme_^#shared#^_ ++ +orderHint +0 +SuppressBuildableAutocreation ++ +185AC0562F22284600E22FA2 ++ +primary ++ Bool) { + helper.setLoopCb { id, isNew, rssi in + let isNew0 = isNew.boolValue + let rssi0 = rssi?.intValue ?? 0 + self.session?.alertMessage = "检测到设备" + return KotlinBoolean(bool: cb(id, isNew0, rssi0)) + } + } + + @objc + public func setFinishedCb(cb: @escaping () -> Void) { + helper.setFinishedCb(cb: { + self.endScan() + cb() + }) + } + + @objc + public func setChargingCb(cb: @escaping (String, Int) -> Void) { + helper.setChargingCb { res, level in + let level0 = level?.intValue ?? 0 + switch (res) { + case "OK": + self.session?.alertMessage = "充电中(\(level0)%)" + break + case "UNAUTHORIZED": + self.endScan(errorMessage: "验证失败") + break + default: + self.endScan(errorMessage: "NFC 标签丢失") + } + cb(res, level0) + } + } + + @objc + public func setControllingCb(cb: @escaping (String, Int) -> Void) { + helper.setControllingCb { res, progress in + let progress0 = progress?.intValue ?? 0 + switch (res) { + case "OK": + if (progress0 < 100) { + self.session?.alertMessage = "\(self.controlName)中(\(progress0)%)" + } else { + self.session?.alertMessage = "\(self.controlName)成功" + } + break + default: + self.endScan(errorMessage: "\(self.controlName)失败") + } + cb(res, progress0) + } + } + + @objc + public func lock(password: String) { + controlName = "关锁" + helper.lock(password: password) + } + + @objc + public func unlock(password: String) { + controlName = "开锁" + helper.unlock(password: password) + } +} diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/Info.plist b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/Info.plist new file mode 100644 index 0000000..d9a4b3f --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Headers/NFCSDK.h b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Headers/NFCSDK.h new file mode 100644 index 0000000..d56f6de --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Headers/NFCSDK.h @@ -0,0 +1,707 @@ +#import+ +AvailableLibraries ++ ++ +BinaryPath +NFCSDK.framework/NFCSDK +DebugSymbolsPath +dSYMs +LibraryIdentifier +ios-arm64_x86_64-simulator +LibraryPath +NFCSDK.framework +SupportedArchitectures ++ +arm64 +x86_64 +SupportedPlatform +ios +SupportedPlatformVariant +simulator ++ +BinaryPath +NFCSDK.framework/NFCSDK +DebugSymbolsPath +dSYMs +LibraryIdentifier +ios-arm64 +LibraryPath +NFCSDK.framework +SupportedArchitectures ++ +arm64 +SupportedPlatform +ios +CFBundlePackageType +XFWK +XCFrameworkFormatVersion +1.0 ++#import +#import +#import +#import +#import +#import + +@class NFCSDKCV, NFCSDKCVCompanion, NFCSDKCallFunctionTask, NFCSDKChargeLevel, NFCSDKCommonTask, NFCSDKControlProgress, NFCSDKControlTask, NFCSDKCtrl, NFCSDKCtrlCompanion, NFCSDKDevice, NFCSDKDeviceInfo, NFCSDKDeviceLog, NFCSDKDeviceManager, NFCSDKGetLogTask, NFCSDKKotlinArray , NFCSDKKotlinByteArray, NFCSDKKotlinByteIterator, NFCSDKKotlinEnum , NFCSDKKotlinEnumCompanion, NFCSDKKotlinException, NFCSDKKotlinIllegalStateException, NFCSDKKotlinPair<__covariant A, __covariant B>, NFCSDKKotlinRuntimeException, NFCSDKKotlinThrowable, NFCSDKKotlinUnit, NFCSDKMet, NFCSDKMetCompanion, NFCSDKParameters, NFCSDKResult, NFCSDKSetKeyTask, NFCSDKSetParametersTask, NFCSDKUserType, NFCSDKUserTypeCompanion; + +@protocol NFCSDKKotlinComparable, NFCSDKKotlinIterator, NFCSDKNFCCallbacks, NFCSDKNFCTag; + +NS_ASSUME_NONNULL_BEGIN +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunknown-warning-option" +#pragma clang diagnostic ignored "-Wincompatible-property-type" +#pragma clang diagnostic ignored "-Wnullability" + +#pragma push_macro("_Nullable_result") +#if !__has_feature(nullability_nullable_result) +#undef _Nullable_result +#define _Nullable_result _Nullable +#endif + +__attribute__((swift_name("KotlinBase"))) +@interface NFCSDKBase : NSObject +- (instancetype)init __attribute__((unavailable)); ++ (instancetype)new __attribute__((unavailable)); ++ (void)initialize __attribute__((objc_requires_super)); +@end + +@interface NFCSDKBase (NFCSDKBaseCopying) +@end + +__attribute__((swift_name("KotlinMutableSet"))) +@interface NFCSDKMutableSet : NSMutableSet +@end + +__attribute__((swift_name("KotlinMutableDictionary"))) +@interface NFCSDKMutableDictionary : NSMutableDictionary +@end + +@interface NSError (NSErrorNFCSDKKotlinException) +@property (readonly) id _Nullable kotlinException; +@end + +__attribute__((swift_name("KotlinNumber"))) +@interface NFCSDKNumber : NSNumber +- (instancetype)initWithChar:(char)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedChar:(unsigned char)value __attribute__((unavailable)); +- (instancetype)initWithShort:(short)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedShort:(unsigned short)value __attribute__((unavailable)); +- (instancetype)initWithInt:(int)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedInt:(unsigned int)value __attribute__((unavailable)); +- (instancetype)initWithLong:(long)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedLong:(unsigned long)value __attribute__((unavailable)); +- (instancetype)initWithLongLong:(long long)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable)); +- (instancetype)initWithFloat:(float)value __attribute__((unavailable)); +- (instancetype)initWithDouble:(double)value __attribute__((unavailable)); +- (instancetype)initWithBool:(BOOL)value __attribute__((unavailable)); +- (instancetype)initWithInteger:(NSInteger)value __attribute__((unavailable)); +- (instancetype)initWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable)); ++ (instancetype)numberWithChar:(char)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedChar:(unsigned char)value __attribute__((unavailable)); ++ (instancetype)numberWithShort:(short)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedShort:(unsigned short)value __attribute__((unavailable)); ++ (instancetype)numberWithInt:(int)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedInt:(unsigned int)value __attribute__((unavailable)); ++ (instancetype)numberWithLong:(long)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedLong:(unsigned long)value __attribute__((unavailable)); ++ (instancetype)numberWithLongLong:(long long)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable)); ++ (instancetype)numberWithFloat:(float)value __attribute__((unavailable)); ++ (instancetype)numberWithDouble:(double)value __attribute__((unavailable)); ++ (instancetype)numberWithBool:(BOOL)value __attribute__((unavailable)); ++ (instancetype)numberWithInteger:(NSInteger)value __attribute__((unavailable)); ++ (instancetype)numberWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable)); +@end + +__attribute__((swift_name("KotlinByte"))) +@interface NFCSDKByte : NFCSDKNumber +- (instancetype)initWithChar:(char)value; ++ (instancetype)numberWithChar:(char)value; +@end + +__attribute__((swift_name("KotlinUByte"))) +@interface NFCSDKUByte : NFCSDKNumber +- (instancetype)initWithUnsignedChar:(unsigned char)value; ++ (instancetype)numberWithUnsignedChar:(unsigned char)value; +@end + +__attribute__((swift_name("KotlinShort"))) +@interface NFCSDKShort : NFCSDKNumber +- (instancetype)initWithShort:(short)value; ++ (instancetype)numberWithShort:(short)value; +@end + +__attribute__((swift_name("KotlinUShort"))) +@interface NFCSDKUShort : NFCSDKNumber +- (instancetype)initWithUnsignedShort:(unsigned short)value; ++ (instancetype)numberWithUnsignedShort:(unsigned short)value; +@end + +__attribute__((swift_name("KotlinInt"))) +@interface NFCSDKInt : NFCSDKNumber +- (instancetype)initWithInt:(int)value; ++ (instancetype)numberWithInt:(int)value; +@end + +__attribute__((swift_name("KotlinUInt"))) +@interface NFCSDKUInt : NFCSDKNumber +- (instancetype)initWithUnsignedInt:(unsigned int)value; ++ (instancetype)numberWithUnsignedInt:(unsigned int)value; +@end + +__attribute__((swift_name("KotlinLong"))) +@interface NFCSDKLong : NFCSDKNumber +- (instancetype)initWithLongLong:(long long)value; ++ (instancetype)numberWithLongLong:(long long)value; +@end + +__attribute__((swift_name("KotlinULong"))) +@interface NFCSDKULong : NFCSDKNumber +- (instancetype)initWithUnsignedLongLong:(unsigned long long)value; ++ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value; +@end + +__attribute__((swift_name("KotlinFloat"))) +@interface NFCSDKFloat : NFCSDKNumber +- (instancetype)initWithFloat:(float)value; ++ (instancetype)numberWithFloat:(float)value; +@end + +__attribute__((swift_name("KotlinDouble"))) +@interface NFCSDKDouble : NFCSDKNumber +- (instancetype)initWithDouble:(double)value; ++ (instancetype)numberWithDouble:(double)value; +@end + +__attribute__((swift_name("KotlinBoolean"))) +@interface NFCSDKBoolean : NFCSDKNumber +- (instancetype)initWithBool:(BOOL)value; ++ (instancetype)numberWithBool:(BOOL)value; +@end + +__attribute__((swift_name("KotlinComparable"))) +@protocol NFCSDKKotlinComparable +@required +- (int32_t)compareToOther:(id _Nullable)other __attribute__((swift_name("compareTo(other:)"))); +@end + +__attribute__((swift_name("KotlinEnum"))) +@interface NFCSDKKotlinEnum : NFCSDKBase +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)); +@property (class, readonly, getter=companion) NFCSDKKotlinEnumCompanion *companion __attribute__((swift_name("companion"))); +- (int32_t)compareToOther:(E)other __attribute__((swift_name("compareTo(other:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) NSString *name __attribute__((swift_name("name"))); +@property (readonly) int32_t ordinal __attribute__((swift_name("ordinal"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("CV"))) +@interface NFCSDKCV : NFCSDKKotlinEnum ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); +@property (class, readonly, getter=companion) NFCSDKCVCompanion *companion __attribute__((swift_name("companion"))); +@property (class, readonly) NFCSDKCV *low __attribute__((swift_name("low"))); +@property (class, readonly) NFCSDKCV *medium __attribute__((swift_name("medium"))); +@property (class, readonly) NFCSDKCV *high __attribute__((swift_name("high"))); ++ (NFCSDKKotlinArray *)values __attribute__((swift_name("values()"))); +@property (class, readonly) NSArray *entries __attribute__((swift_name("entries"))); +@property (readonly) uint16_t value __attribute__((swift_name("value"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("CV.Companion"))) +@interface NFCSDKCVCompanion : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)companion __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKCVCompanion *shared __attribute__((swift_name("shared"))); +- (NFCSDKCV * _Nullable)fromValueValue:(uint16_t)value __attribute__((swift_name("fromValue(value:)"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("ChargeLevel"))) +@interface NFCSDKChargeLevel : NFCSDKBase +- (instancetype)initWithLevel:(uint16_t)level complete:(BOOL)complete __attribute__((swift_name("init(level:complete:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKChargeLevel *)doCopyLevel:(uint16_t)level complete:(BOOL)complete __attribute__((swift_name("doCopy(level:complete:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) BOOL complete __attribute__((swift_name("complete"))); +@property (readonly) uint16_t level __attribute__((swift_name("level"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("ControlProgress"))) +@interface NFCSDKControlProgress : NFCSDKBase +- (instancetype)initWithProgress:(uint16_t)progress complete:(BOOL)complete __attribute__((swift_name("init(progress:complete:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKControlProgress *)doCopyProgress:(uint16_t)progress complete:(BOOL)complete __attribute__((swift_name("doCopy(progress:complete:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) BOOL complete __attribute__((swift_name("complete"))); +@property (readonly) uint16_t progress __attribute__((swift_name("progress"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Ctrl"))) +@interface NFCSDKCtrl : NFCSDKKotlinEnum ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); +@property (class, readonly, getter=companion) NFCSDKCtrlCompanion *companion __attribute__((swift_name("companion"))); +@property (class, readonly) NFCSDKCtrl *lock __attribute__((swift_name("lock"))); +@property (class, readonly) NFCSDKCtrl *unlock __attribute__((swift_name("unlock"))); ++ (NFCSDKKotlinArray *)values __attribute__((swift_name("values()"))); +@property (class, readonly) NSArray *entries __attribute__((swift_name("entries"))); +@property (readonly) uint8_t value __attribute__((swift_name("value"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Ctrl.Companion"))) +@interface NFCSDKCtrlCompanion : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)companion __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKCtrlCompanion *shared __attribute__((swift_name("shared"))); +- (NFCSDKCtrl * _Nullable)fromValueValue:(uint8_t)value __attribute__((swift_name("fromValue(value:)"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Device"))) +@interface NFCSDKDevice : NFCSDKBase +- (instancetype)initWithS:(uint32_t)s __attribute__((swift_name("init(s:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKDevice *)doCopyS:(uint32_t)s __attribute__((swift_name("doCopy(s:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (uint32_t)shiftC:(uint16_t)c __attribute__((swift_name("shift(c:)"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) uint32_t s __attribute__((swift_name("s"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("DeviceInfo"))) +@interface NFCSDKDeviceInfo : NFCSDKBase +- (instancetype)initWithId:(uint64_t)id isNew:(BOOL)isNew __attribute__((swift_name("init(id:isNew:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKDeviceInfo *)doCopyId:(uint64_t)id isNew:(BOOL)isNew __attribute__((swift_name("doCopy(id:isNew:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) uint64_t id __attribute__((swift_name("id"))); +@property (readonly) BOOL isNew __attribute__((swift_name("isNew"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("DeviceLog"))) +@interface NFCSDKDeviceLog : NFCSDKBase +- (instancetype)initWithTimestamp:(uint64_t)timestamp username:(NSString *)username ctrl:(NFCSDKCtrl * _Nullable)ctrl __attribute__((swift_name("init(timestamp:username:ctrl:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKDeviceLog *)doCopyTimestamp:(uint64_t)timestamp username:(NSString *)username ctrl:(NFCSDKCtrl * _Nullable)ctrl __attribute__((swift_name("doCopy(timestamp:username:ctrl:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) NFCSDKCtrl * _Nullable ctrl __attribute__((swift_name("ctrl"))); +@property (readonly) uint64_t timestamp __attribute__((swift_name("timestamp"))); +@property (readonly) NSString *username __attribute__((swift_name("username"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("DeviceManager"))) +@interface NFCSDKDeviceManager : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)deviceManager __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKDeviceManager *shared __attribute__((swift_name("shared"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)controlT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key ctrl:(NFCSDKCtrl *)ctrl completionHandler:(void (^)(NFCSDKResult * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("control(t:d:key:ctrl:completionHandler:)"))); +- (NFCSDKKotlinByteArray *)encKey:(NFCSDKKotlinByteArray *)key info:(NFCSDKDeviceInfo *)info __attribute__((swift_name("enc(key:info:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getChargeLevelT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key completionHandler:(void (^)(NFCSDKKotlinPair * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getChargeLevel(t:d:key:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getControlProgressT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key completionHandler:(void (^)(NFCSDKKotlinPair * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getControlProgress(t:d:key:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getInfoT:(id )t d:(NFCSDKDevice *)d completionHandler:(void (^)(NFCSDKKotlinPair * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getInfo(t:d:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getLogT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key completionHandler:(void (^)(NFCSDKKotlinPair *> * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getLog(t:d:key:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getRssiT:(id )t d:(NFCSDKDevice *)d completionHandler:(void (^)(NFCSDKKotlinPair * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getRssi(t:d:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getVersionT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key completionHandler:(void (^)(NFCSDKKotlinPair *> * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("getVersion(t:d:key:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)doInitT:(id )t completionHandler:(void (^)(NFCSDKKotlinPair * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("doInit(t:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)selectT:(id )t d:(NFCSDKDevice *)d type:(NFCSDKUserType *)type completionHandler:(void (^)(NFCSDKResult * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("select(t:d:type:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)setKeyT:(id )t d:(NFCSDKDevice *)d info:(NFCSDKDeviceInfo *)info key:(NFCSDKKotlinByteArray *)key sKey:(NFCSDKKotlinByteArray *)sKey completionHandler:(void (^)(NFCSDKResult * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("setKey(t:d:info:key:sKey:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)setParametersT:(id )t d:(NFCSDKDevice *)d key:(NFCSDKKotlinByteArray *)key p:(NFCSDKParameters *)p completionHandler:(void (^)(NFCSDKResult * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("setParameters(t:d:key:p:completionHandler:)"))); +- (NFCSDKKotlinByteArray *)toFixed16Input:(NSString *)input __attribute__((swift_name("toFixed16(input:)"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("IOSNFCHelper"))) +@interface NFCSDKIOSNFCHelper : NFCSDKBase +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (void)controlPassword:(NSString *)password ctrl:(NFCSDKCtrl *)ctrl __attribute__((swift_name("control(password:ctrl:)"))); +- (void)lockPassword:(NSString *)password __attribute__((swift_name("lock(password:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)processWithCompletionHandler:(void (^)(NSError * _Nullable))completionHandler __attribute__((swift_name("process(completionHandler:)"))); +- (void)setChargingCbCb:(void (^ _Nullable)(NSString *, NFCSDKInt * _Nullable))cb __attribute__((swift_name("setChargingCb(cb:)"))); +- (void)setControllingCbCb:(void (^ _Nullable)(NSString *, NFCSDKInt * _Nullable))cb __attribute__((swift_name("setControllingCb(cb:)"))); +- (void)setFinishedCbCb:(void (^ _Nullable)(void))cb __attribute__((swift_name("setFinishedCb(cb:)"))); +- (void)setLoopCbCb:(NFCSDKBoolean *(^)(NSString *, NFCSDKBoolean *, NFCSDKInt * _Nullable))cb __attribute__((swift_name("setLoopCb(cb:)"))); +- (void)setLostCbCb:(void (^ _Nullable)(void))cb __attribute__((swift_name("setLostCb(cb:)"))); +- (void)setTransceiverT:(void (^ _Nullable)(NFCSDKKotlinByteArray *, NFCSDKKotlinUnit *(^)(NFCSDKKotlinByteArray *)))t __attribute__((swift_name("setTransceiver(t:)"))); +- (void)unlockPassword:(NSString *)password __attribute__((swift_name("unlock(password:)"))); +@property void (^ _Nullable charging)(NSString *, NFCSDKInt * _Nullable) __attribute__((swift_name("charging"))); +@property void (^ _Nullable controlling)(NSString *, NFCSDKInt * _Nullable) __attribute__((swift_name("controlling"))); +@property void (^ _Nullable finished)(void) __attribute__((swift_name("finished"))); +@property NFCSDKBoolean *(^ _Nullable loop)(NSString *, NFCSDKBoolean *, NFCSDKInt * _Nullable) __attribute__((swift_name("loop"))); +@property void (^ _Nullable lost)(void) __attribute__((swift_name("lost"))); +@property void (^ _Nullable transceiver)(NFCSDKKotlinByteArray *, NFCSDKKotlinUnit *(^)(NFCSDKKotlinByteArray *)) __attribute__((swift_name("transceiver"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Met"))) +@interface NFCSDKMet : NFCSDKKotlinEnum ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); +@property (class, readonly, getter=companion) NFCSDKMetCompanion *companion __attribute__((swift_name("companion"))); +@property (class, readonly) NFCSDKMet *single __attribute__((swift_name("single"))); +@property (class, readonly) NFCSDKMet *voltage __attribute__((swift_name("voltage"))); +@property (class, readonly) NFCSDKMet *timer __attribute__((swift_name("timer"))); ++ (NFCSDKKotlinArray *)values __attribute__((swift_name("values()"))); +@property (class, readonly) NSArray *entries __attribute__((swift_name("entries"))); +@property (readonly) uint8_t value __attribute__((swift_name("value"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Met.Companion"))) +@interface NFCSDKMetCompanion : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)companion __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKMetCompanion *shared __attribute__((swift_name("shared"))); +- (NFCSDKMet * _Nullable)fromValueValue:(uint8_t)value __attribute__((swift_name("fromValue(value:)"))); +@end + +__attribute__((swift_name("NFCTag"))) +@protocol NFCSDKNFCTag +@required + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)transceiveData:(NFCSDKKotlinByteArray *)data completionHandler:(void (^)(NFCSDKKotlinByteArray * _Nullable, NSError * _Nullable))completionHandler __attribute__((swift_name("transceive(data:completionHandler:)"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Parameters"))) +@interface NFCSDKParameters : NFCSDKBase +- (instancetype)initWithMethod:(NFCSDKMet *)method clampingVoltage:(NFCSDKCV *)clampingVoltage totalMotorRuntime:(uint16_t)totalMotorRuntime p1:(uint16_t)p1 p2:(uint16_t)p2 __attribute__((swift_name("init(method:clampingVoltage:totalMotorRuntime:p1:p2:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKParameters *)doCopyMethod:(NFCSDKMet *)method clampingVoltage:(NFCSDKCV *)clampingVoltage totalMotorRuntime:(uint16_t)totalMotorRuntime p1:(uint16_t)p1 p2:(uint16_t)p2 __attribute__((swift_name("doCopy(method:clampingVoltage:totalMotorRuntime:p1:p2:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) NFCSDKCV *clampingVoltage __attribute__((swift_name("clampingVoltage"))); +@property (readonly) NFCSDKMet *method __attribute__((swift_name("method"))); +@property (readonly) uint16_t p1 __attribute__((swift_name("p1"))); +@property (readonly) uint16_t p2 __attribute__((swift_name("p2"))); +@property (readonly) uint16_t totalMotorRuntime __attribute__((swift_name("totalMotorRuntime"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Result"))) +@interface NFCSDKResult : NFCSDKKotlinEnum ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); +@property (class, readonly) NFCSDKResult *ok __attribute__((swift_name("ok"))); +@property (class, readonly) NFCSDKResult *error __attribute__((swift_name("error"))); +@property (class, readonly) NFCSDKResult *unauthorized __attribute__((swift_name("unauthorized"))); ++ (NFCSDKKotlinArray *)values __attribute__((swift_name("values()"))); +@property (class, readonly) NSArray *entries __attribute__((swift_name("entries"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("UserType"))) +@interface NFCSDKUserType : NFCSDKKotlinEnum ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable)); +@property (class, readonly, getter=companion) NFCSDKUserTypeCompanion *companion __attribute__((swift_name("companion"))); +@property (class, readonly) NFCSDKUserType *normal __attribute__((swift_name("normal"))); +@property (class, readonly) NFCSDKUserType *supervisor __attribute__((swift_name("supervisor"))); ++ (NFCSDKKotlinArray *)values __attribute__((swift_name("values()"))); +@property (class, readonly) NSArray *entries __attribute__((swift_name("entries"))); +@property (readonly) uint8_t value __attribute__((swift_name("value"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("UserType.Companion"))) +@interface NFCSDKUserTypeCompanion : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)companion __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKUserTypeCompanion *shared __attribute__((swift_name("shared"))); +- (NFCSDKUserType * _Nullable)fromValueValue:(uint8_t)value __attribute__((swift_name("fromValue(value:)"))); +@end + +__attribute__((swift_name("CommonTask"))) +@interface NFCSDKCommonTask : NFCSDKBase +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("CallFunctionTask"))) +@interface NFCSDKCallFunctionTask : NFCSDKCommonTask +- (instancetype)initWithPassword:(NSString *)password data:(NSArray *)data index:(uint8_t)index callback:(void (^)(NFCSDKResult *, NSArray * _Nullable))callback __attribute__((swift_name("init(password:data:index:callback:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKCallFunctionTask *)doCopyPassword:(NSString *)password data:(NSArray *)data index:(uint8_t)index callback:(void (^)(NFCSDKResult *, NSArray * _Nullable))callback __attribute__((swift_name("doCopy(password:data:index:callback:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) void (^callback)(NFCSDKResult *, NSArray * _Nullable) __attribute__((swift_name("callback"))); +@property (readonly) NSArray *data __attribute__((swift_name("data"))); +@property (readonly) uint8_t index __attribute__((swift_name("index"))); +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("ControlTask"))) +@interface NFCSDKControlTask : NFCSDKCommonTask +- (instancetype)initWithPassword:(NSString *)password ctrl:(NFCSDKCtrl *)ctrl ignoreProgress:(BOOL)ignoreProgress chargeCallback:(void (^)(NFCSDKResult *, NFCSDKChargeLevel * _Nullable))chargeCallback controlCallback:(void (^)(NFCSDKResult *, NFCSDKControlProgress * _Nullable))controlCallback __attribute__((swift_name("init(password:ctrl:ignoreProgress:chargeCallback:controlCallback:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKControlTask *)doCopyPassword:(NSString *)password ctrl:(NFCSDKCtrl *)ctrl ignoreProgress:(BOOL)ignoreProgress chargeCallback:(void (^)(NFCSDKResult *, NFCSDKChargeLevel * _Nullable))chargeCallback controlCallback:(void (^)(NFCSDKResult *, NFCSDKControlProgress * _Nullable))controlCallback __attribute__((swift_name("doCopy(password:ctrl:ignoreProgress:chargeCallback:controlCallback:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) void (^chargeCallback)(NFCSDKResult *, NFCSDKChargeLevel * _Nullable) __attribute__((swift_name("chargeCallback"))); +@property (readonly) void (^controlCallback)(NFCSDKResult *, NFCSDKControlProgress * _Nullable) __attribute__((swift_name("controlCallback"))); +@property (readonly) NFCSDKCtrl *ctrl __attribute__((swift_name("ctrl"))); +@property (readonly) BOOL ignoreProgress __attribute__((swift_name("ignoreProgress"))); +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("GetLogTask"))) +@interface NFCSDKGetLogTask : NFCSDKCommonTask +- (instancetype)initWithPassword:(NSString *)password callback:(void (^)(NFCSDKResult *, NSArray * _Nullable))callback __attribute__((swift_name("init(password:callback:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKGetLogTask *)doCopyPassword:(NSString *)password callback:(void (^)(NFCSDKResult *, NSArray * _Nullable))callback __attribute__((swift_name("doCopy(password:callback:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) void (^callback)(NFCSDKResult *, NSArray * _Nullable) __attribute__((swift_name("callback"))); +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@end + +__attribute__((swift_name("NFCCallbacks"))) +@protocol NFCSDKNFCCallbacks +@required +- (void)onFinished __attribute__((swift_name("onFinished()"))); +- (BOOL)onLoopInfo:(NFCSDKDeviceInfo *)info rssi:(NFCSDKUInt * _Nullable)rssi __attribute__((swift_name("onLoop(info:rssi:)"))); +- (void)onLost __attribute__((swift_name("onLost()"))); +@end + +__attribute__((swift_name("NFCHelper"))) +@interface NFCSDKNFCHelper : NFCSDKBase +- (instancetype)initWithCallback:(id )callback __attribute__((swift_name("init(callback:)"))) __attribute__((objc_designated_initializer)); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)getNFCTagParameter:(id _Nullable)parameter completionHandler:(void (^)(id _Nullable_result, NSError * _Nullable))completionHandler __attribute__((swift_name("getNFCTag(parameter:completionHandler:)"))); + +/** + * @note This method converts instances of CancellationException to errors. + * Other uncaught Kotlin exceptions are fatal. +*/ +- (void)processParameter:(id _Nullable)parameter completionHandler:(void (^)(NSError * _Nullable))completionHandler __attribute__((swift_name("process(parameter:completionHandler:)"))); +- (void)setTaskTask:(NFCSDKCommonTask * _Nullable)task __attribute__((swift_name("setTask(task:)"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("SetKeyTask"))) +@interface NFCSDKSetKeyTask : NFCSDKCommonTask +- (instancetype)initWithPassword:(NSString *)password sKey:(NSString *)sKey callback:(void (^)(NFCSDKResult *))callback __attribute__((swift_name("init(password:sKey:callback:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKSetKeyTask *)doCopyPassword:(NSString *)password sKey:(NSString *)sKey callback:(void (^)(NFCSDKResult *))callback __attribute__((swift_name("doCopy(password:sKey:callback:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) void (^callback)(NFCSDKResult *) __attribute__((swift_name("callback"))); +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@property (readonly) NSString *sKey __attribute__((swift_name("sKey"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("SetParametersTask"))) +@interface NFCSDKSetParametersTask : NFCSDKCommonTask +- (instancetype)initWithPassword:(NSString *)password parameters:(NFCSDKParameters *)parameters callback:(void (^)(NFCSDKResult *))callback __attribute__((swift_name("init(password:parameters:callback:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKSetParametersTask *)doCopyPassword:(NSString *)password parameters:(NFCSDKParameters *)parameters callback:(void (^)(NFCSDKResult *))callback __attribute__((swift_name("doCopy(password:parameters:callback:)"))); +- (BOOL)isEqual:(id _Nullable)other __attribute__((swift_name("isEqual(_:)"))); +- (NSUInteger)hash __attribute__((swift_name("hash()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) void (^callback)(NFCSDKResult *) __attribute__((swift_name("callback"))); +@property (readonly) NFCSDKParameters *parameters __attribute__((swift_name("parameters"))); +@property (readonly) NSString *password __attribute__((swift_name("password"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("Platform_iosKt"))) +@interface NFCSDKPlatform_iosKt : NFCSDKBase ++ (int64_t)platformGetCurrentTimestamp __attribute__((swift_name("platformGetCurrentTimestamp()"))); ++ (NSString *)platformGetName __attribute__((swift_name("platformGetName()"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("KotlinEnumCompanion"))) +@interface NFCSDKKotlinEnumCompanion : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)companion __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKKotlinEnumCompanion *shared __attribute__((swift_name("shared"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("KotlinArray"))) +@interface NFCSDKKotlinArray : NFCSDKBase ++ (instancetype)arrayWithSize:(int32_t)size init:(T _Nullable (^)(NFCSDKInt *))init __attribute__((swift_name("init(size:init:)"))); ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (T _Nullable)getIndex:(int32_t)index __attribute__((swift_name("get(index:)"))); +- (id )iterator __attribute__((swift_name("iterator()"))); +- (void)setIndex:(int32_t)index value:(T _Nullable)value __attribute__((swift_name("set(index:value:)"))); +@property (readonly) int32_t size __attribute__((swift_name("size"))); +@end + +__attribute__((swift_name("KotlinThrowable"))) +@interface NFCSDKKotlinThrowable : NFCSDKBase +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithCause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer)); + +/** + * @note annotations + * kotlin.experimental.ExperimentalNativeApi +*/ +- (NFCSDKKotlinArray *)getStackTrace __attribute__((swift_name("getStackTrace()"))); +- (void)printStackTrace __attribute__((swift_name("printStackTrace()"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@property (readonly) NFCSDKKotlinThrowable * _Nullable cause __attribute__((swift_name("cause"))); +@property (readonly) NSString * _Nullable message __attribute__((swift_name("message"))); +- (NSError *)asError __attribute__((swift_name("asError()"))); +@end + +__attribute__((swift_name("KotlinException"))) +@interface NFCSDKKotlinException : NFCSDKKotlinThrowable +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithCause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer)); +@end + +__attribute__((swift_name("KotlinRuntimeException"))) +@interface NFCSDKKotlinRuntimeException : NFCSDKKotlinException +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithCause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer)); +@end + +__attribute__((swift_name("KotlinIllegalStateException"))) +@interface NFCSDKKotlinIllegalStateException : NFCSDKKotlinRuntimeException +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithCause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer)); +@end + + +/** + * @note annotations + * kotlin.SinceKotlin(version="1.4") +*/ +__attribute__((swift_name("KotlinCancellationException"))) +@interface NFCSDKKotlinCancellationException : NFCSDKKotlinIllegalStateException +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (instancetype)initWithMessage:(NSString * _Nullable)message __attribute__((swift_name("init(message:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithCause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(cause:)"))) __attribute__((objc_designated_initializer)); +- (instancetype)initWithMessage:(NSString * _Nullable)message cause:(NFCSDKKotlinThrowable * _Nullable)cause __attribute__((swift_name("init(message:cause:)"))) __attribute__((objc_designated_initializer)); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("KotlinByteArray"))) +@interface NFCSDKKotlinByteArray : NFCSDKBase ++ (instancetype)arrayWithSize:(int32_t)size __attribute__((swift_name("init(size:)"))); ++ (instancetype)arrayWithSize:(int32_t)size init:(NFCSDKByte *(^)(NFCSDKInt *))init __attribute__((swift_name("init(size:init:)"))); ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); +- (int8_t)getIndex:(int32_t)index __attribute__((swift_name("get(index:)"))); +- (NFCSDKKotlinByteIterator *)iterator __attribute__((swift_name("iterator()"))); +- (void)setIndex:(int32_t)index value:(int8_t)value __attribute__((swift_name("set(index:value:)"))); +@property (readonly) int32_t size __attribute__((swift_name("size"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("KotlinPair"))) +@interface NFCSDKKotlinPair<__covariant A, __covariant B> : NFCSDKBase +- (instancetype)initWithFirst:(A _Nullable)first second:(B _Nullable)second __attribute__((swift_name("init(first:second:)"))) __attribute__((objc_designated_initializer)); +- (NFCSDKKotlinPair *)doCopyFirst:(A _Nullable)first second:(B _Nullable)second __attribute__((swift_name("doCopy(first:second:)"))); +- (BOOL)equalsOther:(id _Nullable)other __attribute__((swift_name("equals(other:)"))); +- (int32_t)hashCode __attribute__((swift_name("hashCode()"))); +- (NSString *)toString __attribute__((swift_name("toString()"))); +@property (readonly) A _Nullable first __attribute__((swift_name("first"))); +@property (readonly) B _Nullable second __attribute__((swift_name("second"))); +@end + +__attribute__((objc_subclassing_restricted)) +__attribute__((swift_name("KotlinUnit"))) +@interface NFCSDKKotlinUnit : NFCSDKBase ++ (instancetype)alloc __attribute__((unavailable)); ++ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable)); ++ (instancetype)unit __attribute__((swift_name("init()"))); +@property (class, readonly, getter=shared) NFCSDKKotlinUnit *shared __attribute__((swift_name("shared"))); +- (NSString *)description __attribute__((swift_name("description()"))); +@end + +__attribute__((swift_name("KotlinIterator"))) +@protocol NFCSDKKotlinIterator +@required +- (BOOL)hasNext __attribute__((swift_name("hasNext()"))); +- (id _Nullable)next __attribute__((swift_name("next()"))); +@end + +__attribute__((swift_name("KotlinByteIterator"))) +@interface NFCSDKKotlinByteIterator : NFCSDKBase +- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer)); ++ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +- (NFCSDKByte *)next __attribute__((swift_name("next()"))); +- (int8_t)nextByte __attribute__((swift_name("nextByte()"))); +@end + +#pragma pop_macro("_Nullable_result") +#pragma clang diagnostic pop +NS_ASSUME_NONNULL_END diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Info.plist b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Info.plist new file mode 100644 index 0000000..fde4c1f --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Info.plist @@ -0,0 +1,35 @@ + + + + \ No newline at end of file diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Modules/module.modulemap b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Modules/module.modulemap new file mode 100644 index 0000000..4348bc5 --- /dev/null +++ b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/Modules/module.modulemap @@ -0,0 +1,8 @@ +framework module "NFCSDK" { + umbrella header "NFCSDK.h" + + export * + module * { export * } + + use Foundation +} diff --git a/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/NFCSDK b/NfcLock.Ios.Binding/NfcLockFramework/NfcLockFramework/shared_nfc_kmp.xcframework/ios-arm64/NFCSDK.framework/NFCSDK new file mode 100755 index 0000000000000000000000000000000000000000..db0a37a1ec5caee642522b8bc2908d52d3321f02 GIT binary patch literal 1854976 zcmeGF3w%`7wZM<>Geck|2_hsR5L6Pl)+C@vl~+ +CFBundleExecutable +NFCSDK +CFBundleIdentifier +com.lvcheng.lock.shared.nfc.kmp.NFCSDK +CFBundleInfoDictionaryVersion +6.0 +CFBundleName +NFCSDK +CFBundlePackageType +FMWK +CFBundleShortVersionString +1.0 +CFBundleSupportedPlatforms ++ +iPhoneOS +CFBundleVersion +1 +MinimumOSVersion +12.0 +UIDeviceFamily ++ +1 +2 +UIRequiredDeviceCapabilities ++ +arm64 +yFeTzC@O@J3NpKWd&VE*9VXZ|w(-$&IrZ_COS zF1qK|h4CUUyv>J9I1~GsugJX N* Xs+hDw~EqHV0RV-X60KNFF zecFWgw}1)3zCQ!Ee#xFDBym<)4}G1`abJ*!Nw-o3n7y-BowpZoS~eZ_O(vysumM z+4o(;yXUTZtM2+jS=C*)&F3XAydnQwN`0Ctjjc*4xjxmX*z`C|kJr&RgftEBoT2yA$x+XyMar34`1_;fXl^*ah#-`O*nh zi^^`h=dL*k@X9YU>2{OWa7xL&6JF2(OMaG>dF9qkzvjzLc-Q>g>`l4vUT){y=43o? zf1K&dG%>K4L++jUdC&ttEw@_E=2b0RlmM@f39r>^@0r|t;F*kR0k+`XHE+(mg~{N( zn_|MV#6rn^58%zISR~LA`K8^0ca2rQ-1h+97w?|GXnr#Miu;=Qm0RtVdnY`5{ITh1 zwYTcdireRk=z8f_-_PA%x$j tV?!3F_-p26e zg_r+D6Te~$h}=8jG3F-gUrj%O=!N&ig(f^(KIGmB5Bep8r}-}#yp}~Kyol8xxp%^& zI2pW!_b}`xgSYh_6JEUqPwsmFuj)$`GKweC@1`$V?X}>^eGmHg3l)nhlET|+!D}95 z0+f3XepXH9rK~ItDk;1#uCnm^l=;5gcduU-Ro*?f;tORoSgav$|F-Nh;WeA!l-xV< z%dpDr3wD|b@79IdxbniQ{gnxCqWu9^Cp?P`@uy{F79gv{3$NLNw|7GP6IXjJv5r5K zajlrYva*>aSIxL=ddY12ku_q~SO%Xxf?Z|a3mhk`{@hC&hIq BQRSGcE}wSY z^cffE0r}qfcUM~lN{vve=0d)a5%RI~6n|N2BUMZslcl7*lIv>>5uu_i)ym)^yd`zy z-<+jBfvvLf%xqOYIYryW*HAA1+Gv#g3Bf;`qtqT XG5&l#0-*pM%51g z`46W}dHRJHzrX3PH+}sFpQJ38Ka }DT^}(|oB}zTdx4`u@;`H|lV9@X zME>NN32P>*#!zGKS$OxDc~!T{-*t-@E}DDi1ye8h!eZ`tk$>`?&?Wxel)X^P{oR~V zqb?Y0eUw CuH_ zE}wtTT?k{<{JR|e+*t@P{s}(PPd5JP#t%kne7c5veaVcfMGlbqUSP?;#P*q->7?V` za~IB^_oWLaIa?^-mGfugVYcrP)lK`R&A)qYXLB3~xgP+Oe`mqh`CO%*(A@jx&bfz4 z#=N;@S{gcu=6-M9{E9Eky*uF@f%ggigs*aEWT^o2$pY(M LoF9muj&`W_{3iMK- zmjb;M=%qj}1$rsaOMzYr^irUg0=*RIr9dwQdMVILfnEyqQlOUty%gxBKraP)DbP!S zUJCS5pqB!@6zHWuF9muj&`W_{3iMK-mjb;M=%qj}1$rsaOMzYr^irUg0=*RIr9jUq zaP;c`Z0J~GG;~Z;;Uj*d@u*)l7N@Fr14E}r1BPm9^=CF7@MknW;#YO$J{9d)Qq*wt z>R;A3`^#Q!y3JqL9*bqiRvP<`-{_~j53o{zWrU9c>xctZtx`=tRchNkeM3?9vt|B( zZ+{w#HD#%qmt$!v8cJ2`RP(@aK!u{pnDVN8E5Cykp=g_5$zM2Fp`tDQ)VnG?y`#0C z>WF2lX#AZ4yfepqr!_-$+|y5O`;spdZN4KEtxz?yQa jxt06+M3 z)xP_#P_%GoXwnSYyew~el)YCM7xI28?-pi-qNOP+T$rVzJ1+6Rk`++V2)I@O_s{^o z1E1kW=Hb>pYW6n2+Ez<>;MfD-3K(2J7ur62s9JEqr)J*(>{nOhgj+s(qh)wdz1OVN zY})&-s>um2S883}*1qBWZ}{u#piOu0?BSgazO2Ko*&A}$m&r!Fnptcy%M3unWO!A4 z7@M8TJC)$o<`-H@|6N8uO>a1U *%wE;H7zDc}_Uc(RCZ1 z1i#9U%J(ZHqtwYKqv-1+9kHgr!z=E(-29dgzs)w(wi@aao{Rbtd2R@>GT|HA{<6ID zZjyK0b#%6;1s*&?d&+_D#Lo}Rg%(U_d2E{SwGVpv;cIx?Z)h1g2Jgh+H!shM?8N!8 zAN)Ad!?S6sBQ9Hh)ie&Cd4#^PdGxcl`0Io(oqQTx+YOHzNq97 A7hW #4_CHi5F^ zH@-mMqR*H38ah^rPB;6|sn }2nx#$w|S z`%`DM`3nn|ovRk?LH8{Sss%Ips@Z8qX#29W)q=NE)a jDld^$oYz;8d#+qg6QkJF0w)!b6GRrm#yrF7rNXo7?%h-K7yX l-+A>2esQ&(%oa&`U#=NEXKa^fI@A(b9UqD&u(`$03 z7^&4SeiWO{zSd0nreJC4p-u2=U|?{K^uM1!>Fa}<{!^iE5wf$ZzFZA|wSf1J($^(i z-{)Gz^_YH{CmV-lq2n=qdC*##QKjgzLAy;II1$SE0L%GeY-wxF*x# zM=hCf+9&k`RMUnLYC!;fQuoW+obuFAbh$5Ujp*}_yFb>Z!MmRR7%gR<{&*>sGEaYO zmNKs_NZG$o7VQ2ISvZIsh Dqz%luIY`R`bgIJOnQ3%`RGO1Qqn zwTkN=t|{=$O0KK8{|(m$uD{}X>#eFz#>4h9A9C)tYlUa7$9AjFnI6p_%6Qm?9U$$` zr~QoQ@)ypx+b`oGwyW46&>@-|RNG{XNXBQYk^6!HHM2^L;ObM#{sALV?^3ol1Kx1* z8fBxU%*kt%rAwKU*C^XOh%zUyQ8rV`oV@lI dVtTBx(^rs%vc;8D~8OxrBr-Sge{KkOGF0g(-!|xL7x9H9)>-T1Ue|nCdpJ~~U z?|w*GgZ2D-{C3(s?Pb`J)?7khe}m@&cP-b^z?r~RVApb8#r3OP8@PUjYiyc-U)#uj zcYbhtprO4ih`gmTzNTTnq+@UUJMHaJDyrU6SGTS-w#0_1?eziXsLL-1qm!PA#8iS! z>axW%u*I>3;`7JHk-_XvTf8 >3QcE6+JP>2xlX^E$FTQx+`*# z>Ua!ZQq`g8PTDa4#`wH)Yr)Q}_`I@2`14G)Jvbjd)x-H^gt}!OCw5oc7?a<<_y{h7 zLu6QJyD?4;Yz6O``&3 }O3mcZrshj?H!Z(3 zz&8=-cYL_J9(3{EK;ryvugp;^lzLa@sD=N7Z4Dib 59170qLr%M_>xV^ZcZR8bq!s~jjb^ERUx-SUt zcR9xR@WU95Cm3sF>=+DPV#|z%T=5y;BeBO>p?!RuWt@>Q20q=ZtT9ISsrYgFsHXPR z(DqvXe8!NpR&=A;p23ae{iu_1XoWoUw@+yIwNH@oyI2iL3(|MYv#N{HK`lPBf0olf zqv@M3G49q2pZd) ykpw_` Ep|! dI$U R)34$^DTW~|Mm3uqx5%+tG~19?^5Vh0^N$~Z~7W} z5#QZx`ueBQ*!Tl{Fa4ZJKWEX;gX!mNM?YUgKMM~#`#HzzXVC@Hr$7I#x1R?$UK#IK z;f1WmXL!f%_vP_^9@2Q5?&l$mE9vLomZ9IvegUoqIOB&{g8yun_##r!X?>7wKYk@s z#|chxJ%zt 0$D7ps=U4o7i=d6^cbNw4snk&fJ$|MA(F38y z#E)W4cT@kV^o;mLM8|49GY9>OjyHA9gO|3h{0e_7`CD;mEJNEGojPZkitFK|I*0i{ zT<2^;=irOB+gA+lE%s$re}O)a>zrjvP5xWn$$z)R`R|O6Mei&_?^L39`WTtebTBj( znH|#Tr{8O#X %Qy!dn15Sr19h`=+m(x#M0vCt*z9-$!k$ zM9yvhLO|9Gm>(I;9crm3NIm0I)Pm`ZzxYFEEgTV=lwG94^1a{^*|TWka3iC-9N%PJ zUo~)pZ*cYbvDj>Ku4Y~ZF81?0%EY$?j6o4U%Nt9FU)QlDQGSZ}=AjR@&v;g{=gE92 zwj7Dxw)wms-*&x){}dy$dN*^Nz|M=;1d3`V+2gfs!`SxA;gKplim|!@yS2a=AI={b zSQ9XE! 9|Z2sI%`kHX8-8($@P%!e~b48`2Hc;`i=AjxJ#eg zeeo6gB7?rDOX!P*^hIX1_=y+N7t5@^2tfD4WzrYsbLk6N|N1}5>Q2U*fHlbU;U@Nn z*O%+XyAr(Xy1;uUc-nYhWbu&TEViWZPXw80DK&AbF>zjS8Mq0)JHX9;R%GG(Gs^zp z!ne~8+Qk}@mYJ3=WbX&S6a2g~`H#xpw}2aKyjprF}9!uLYiy=Nh16;I|jAp-oYl6Lc(b)2IsA&iCuZ=M0Z_hqKVn#@W_2 zKe}CI-T*9b`S&UBYEB{RIHJo~i`?5HzN>(#%aYA2 7Oc&-UN#&9&whA`cg* zsB4=Ts~7cYpCEck;6|XyfiEv=KfpLx@6>HYA!Ij8`wsDWOu!D?x5200JBmEdgbw5l z&CH`s?@1rB4v}TUqy6=_ENYi|aWQLy=sC@&qT{lJp7t}=?`$1cDYjF5UgBP(an4Ip z_ jlyZh3i6M^Ggs}UG~0fx6MwyO{Rkn}rG&hL*+ ze+IVA0BoEyv2_MwM-9SO?xTGoVwc9SFSX6$XMQxGX0qiM>9kewi`e?swpF_Ei)>Zj zkI#{|${eZo9M$wNwA^T|p 6re| z8wF~?{IRQZ{$`w!c1G3ciTL!wQzomY+x-0-tKroR=+i6FuR-9|E)9JvmG#KO)HkoH zYT}($ckov*ab8v7M41B;Kd_JWrNg7pqr$Vf_^njU$Z#HGNPv63f2fUbr&Q%nY~|{I z%Wv8?{1&_CD(q>oQKO8HQT!mWDGvV>?L5JI)?8<+_D@}+I@Uusna}Q|j{lnFudAX? zr*BH;u(p4yg!zp4r@HI6s-VP73=Z!=UdI^^uh)GC9&umQ1p1D#+l!mv6#<`m=0LU& zNahY3nRmqfKfw8!$Nw`G|Ie9k;`g`wKT&)&(vOFzNBe*H#@W{sta@z!Pc87{{xIGZ ze^_e3^#26#|A CFjPM(}?T@UN`J7<{)1)1DQO|MPk3~Jt>vjx|`>}kq z<9`qO>wNyfY2tH=BCoZyqwN&*(mp5P$-GQ_PUpYo@HtuECi _FpzpMf((+!9j>1RovXOtmH{P-&I!=Et<7*{rm{p9i z1=>aqR=57pZ6ntMPsZ0|wxn&}!0)!dYp*jVNNh~eW5Ej1? mC2Q?~j{4 z=Kh%8O@D|T0L_#3g=-w4FS5Gmi~1yeu_sAi1f?$w`l6_Ll9rKf`XM_>Kdhl2#E0VT zhhvM}{m{?R4=;=FlYY2?e%SaKZ$HFsM^iT7?ON>TD*jT9U}?UQpUNEY?f~|CAglJ4 zGJZ1ybIk|e`7H4s3G(KKD>kHtt95L47{C3x(w&3Dz+Mm t>vvLR4y6DjWT#!iIYg zcs;b?;`-5RuPp+Gx9n87h~4h(*IR*;th_r|LMt=ADWlPcEn?H^fmG)I8ZR?;)A{UP zp1EOm_Mr(cL)Hdfc7AgQ-+anyr}x>M1bB)4nG8qf-kIlif#X#PFi(wR5#J2#0>@7! z!0Q=~qxtS6aihubKQ{s9sc{^_HxUglk;VfP;PnhgKi}=|0>_g wMSH1 -z@`XqA#KI`>y0< zBj0{e _$0Fk^<;GWCoZai3&K=e%9}T)p#p#+1NN-?hWPqZT~*$qnl{6e4pB_`X8ysjVx7 z#y1n|SS$8bH!-NEtCyxjo6IigJvo8iJ>&f`d>11QH<`@m%QL@!-^uxXv9FV_VanR2 zo}1&Z=(aDgnXqB)n1ro%OuOA5^;xRPjx*TAIDGxp<~&g5Zmdae4HW$c>!qr(p0z1^ zP0F5s@3z(=cVp9f*CLOBS8SQTL1O2nKeR1PpSI13 V76KQgzn~~w*Mdq z{}yyy7EJ|qiNGcn%*J~;c=rRg^oK<^)^ZENvfi1`TCTl@EA`kkYfC~if{CG7N<*Ap zBc<;QyYJTN`Nw&x;|bbS&b(Xb)pnIhul1}S-@?1nwjA14)r0xAZX0u6q1Tj-4Yd*I z<%IpR1^cvNGUtuMgicx>M+y(9=<9>5dut8o9_XN-TXwkE$;sB7PtLzQzV190xw)=u z`)-~1l#0dPWsX_JpR9js`?;z1mR7&pRy+q-#}i;_9jxKh%UpFt^Ca8m5r5i1zVVhN z(J7tZ4+<@Ies9S4p0e)0Z+3nE-p%s8yR6&qJ#*~?^1Y|5`|oR9bM<}tdv{q^-?s?; zQbRAO*YZB^q(QTZLqd61a3VIG@8u3quT{8UZLwh`c^2~<``l~8as90ON5&)J6L>s2 zBB1t8tsNO|okm=SuV&WRH_*@gp2$^?N&J@B?3K;X55Be6uBb!%J=TDS!~(n9;I1zM zUuMXhi8`y0W7nLCxW_!1Gx1E;@4f4O3xR(f^CgAcJ89{z&%?W(e!kVDm8(D9-@Eax zwdRe%vsK0&%)6#6FRaENIjEp%)h)w`XK(eda?QO;fuA^U^x))?r^$kor_7C0=l8-- zmAtDayXTUlfsw4dD>%vIde~{;k?i}l)Be6@lCvK_yh-TbF6#<^u`SC-geI%+1qP_^ zorz4i F6ns?NZ2*bH9h1PqZ9?yGxEnB1gn0ma*4G z{Ft|K)pEpdk)x+~*m7j9Ur~paqwV0(V>yB+6Xb~XR4qrsuSw)+6Yx)4jy(Li4jA3@ zteZZ1JYqgx#UJC*;jYG`F9Y{<$D=z>iA$&aXukD~J)e{BJ!M_-o%y|c?732Z?=I{1 zdyh_ 7BDK4ly?V*Iy<~$QL2ecLb=ST zy!-oP&V(J_ISx^OTz=+R<4~WPS>OD#ISxI-)j19w_)prc$00LLfjYGOv=J-ZWBH-Z z1o>&R wJf`2u^RT8T1xwYWeCD=j7(*ofB;T$*lZ}+MHDG6>thFR_ACtaa&D- zjp)Xwv(IX=9kgx3_dmebd|<9`fC6?QI31YVSO0F~cR)=%M=^dn+a4K?&(l-31iWo{ zKg7?h{i2?CJ{DX&V`n6`VU~A1y(t+kp6@;;T- <8m(6vi1E<^REBMRxyvO+5Zt{%A=XR54EPP!0iO~3OIr)eC zm!0=-6GLqCj)jlwc~|&oeU2 ^MqlC%`r+H? zdM}3PM*OMo77t@Ccb2x%Um!+Od>yX+`!2r|K8LnxrhlQHeH1}_Pi+HKM?P=@o7{WK zb-cnxz2{(EUha@^|Gn%3koP9DAD4O}PZ1kTY)Fhb`6}%6!V1=f@hwQ~d)qM8aqVO? zcHj`Uzjw}_$~#iOJzpPUeBzv8OR}#!>oaQ5hxkmE#r!(_dP%17=E=A%u6D~IUkew1!yDvSO4YV z*PZCAuDvJr9ASJavkKbVWv_hn-1uYo!decgfy3`H7Wm+Gat>rZ?hk(QOP}#wEAZ@R zE6Eq|#^2P~BIM*!pSpO1UoCix*uw+ e<4Pq?GjZN*!!(nfjJF# zE91O#R9@~m;;%SN9cNQVvhUvFyM7lX|1On!O?cbm@T!0nxpKv<%4?pBmx<0d%YGOy z`#!km(O-h!;<2huV&5eGL+*<{Y4#QS%J&A0OT#4+`&ZOIJe)S=Z>n8Cly%yA?2l|? z=&1h)s@b+*C-T5DGiG*iXUy!^OBu76CkBefge6|0#fsU^KC?4czYsn;Rjj`3YtZ-< zT^i0V$EPGXEjMw>1E&$omhG1~l*peL`+qZOjjTBej=t!!{clnx-`B#IZ6i&;O8h?C zbD!3EZ|
Umo8#ay_^-`7Q}>V=l|@cbk6c3qQ^8{lp8O!*$RN$=5Ko z{NQ^LoqL2iZVh^+5**_`UVOO2-yzmf`q>(H?Qz)FT{0fqW3hMs`%~&)XyzK|R@d5i zh^=75mHMQvT*iE-Ui&UEyIL!B!dZ^3C-z=$Zh2ChV=Zu;@3?J_+rFEdTX9Y>_V<^u zIo7AD+rF!SLp#^&xj+wW4jY$ ic>z%If z$|t7QruF4X`cZ61XFr-Y!F{eV_Ea{?UuSprXTKiUC^pRk4%|K=G1d1+;{2rXy1$dZ zEWA$3R@v#m>pT;$ZfzACFKufG?}ywzi!C-hPkC3gmoZal@6-d|wqQ8RWDTZmWD2%Q z_v @z_r5-W5F)Q 7GppJji@gS_*~BvmJNgFXISWd7FU&xQOJI1y}*lMdUbme@D3eeREK zcvftmLi*7z`=5_CJUim6HG?Ex_c-fiP8&w{`-m;_)`i$2xBT+u%F&VcmFUpC@^j4l zcJsaoJx%+yJ-20ghde*uzJJ=h*R}_Cr?lmkF_!H?pUC|P;0x`O*dFhBZI3Smy0<;< zD*l(-9`8AAkKL~&+8)26EN*KI>$EMjEn= QtJ?`52R>og@?Dg6h>#6^AY>Y~=F+?XZ9tVJH*A?t2 z-|zKztOWKk+UC|vrhmiMakaoB_Goc%GX8e1Q#N()Z@&we$^7j$Jgw_IzRL=}>E3tA zx~0s8u;ujk9^c@#^1Y|b-6rq%Zr@;${@z`7I^T~y?eA+AJN0^={@z{IRs9heD+Yy@ zCiAfmFzJx=Sy%7^!Y?+wB y=$cE40&2QoigZ21ef>UFD;roVlq$SuED zb4BMi%5U+vzp|Zv)BZxYzx~hD*_FT0t}g=KdfkeCPw*EWv;2j^uSxvvzXpC!{DsuD zx0C1G{ILxf-Zjr;aVioQA^KKgR1`eyjO%sz3Ybf`L6@L8{_WLq5#)=pagcu6v0_}c ztRvL>d;=RKZj$|Cx!2~ek=$VGz(=0v;#+j)R!g~pJy_H)aR9`_ldEA^*qK{x6m4|n z|1(r#{=b20yYy47% (*A4A_8<1P|JRp$+D{I| z({6uI>A1yHwx7HPZ6kemCd-`@2$i4n&+ {Gu_|#Hyqxx4M!To8_kp~YyUg{LuS26hdiqH8 zkhIa+M>VXcnEJOf&iVnqO;+yiqa?6W6Jb>gtR&^#!Kx%DT+JYSH1vz@r?K<&NnWVn zh#uyJn%pNbFBD~)*@N!N3q{#XDRbt9vcGlag`(^w$y4Oa3q{#HD|gXGd`PL1kFTiD z>E(sueQ)j}XFfi6j;9R056s(V1z?o5_ ~Ti(3QBFOKIMvgJnlNAixyUJ3cF Nv_=@*duieR#{keb!~zmegm(wCVkR zw$HPk*g45dGLG?V$B53jwpBir5DR#mc(5HShqc@FH>}KQZ 4zuE{ASC_0 Es4cjkWl5 zTdcM@+Z9xa?K;XnD~aEHZ98)nbcfW{cAn4}eMVbYLzr{`|Lau7 sQI;Y8-=*Uai zm!sdc=1(0<+& 3h)QKxH;-3M<%S!T!VL*=n||f!KZ5hAwY=%ENQ4hdhdIJHdO8 zv7cfhdm!%{);?h|^vESnaWHfAmd}&>#NkK(`E)&(CBAe_Jib)=VhDcpd}0@cxA3E% zGUtuNnMxj;1Ng^fUE-`){B^RvVdLAda%g+wQ^vkj`ot_#QTz*Ao2K>;%eT58ET6gL zc0ItH{TI*r>qHKoJ?IZhKmPHfvf7r9g0;J2v2l@Dv)+3mG&uB=sSQQ!=?t8$230;? zyWYnh%@FVZ92_2I4{;0M{n7d^+fd_#o;&e}Y+MnFY8l;`tMeS^4@6FZTdCT|w}MOE zAG)qT5822o9u<~)M)0@sH0vrxCz$z1zRF(K&Kx8*y}bRa^V-nA57V#L_h}!m`}vK& z4F|Ca%E*0t!&cLWBmR^WVy}0Qk02F4Pd#}}BYnxOfDO>*A6K~B7ffSs>w>4SrwiGy zTC(8&ZwVfU@#VZt4%KpF`R27n>b;%V(`CfRv_hvQz6qoR*X;IX%@}^Jx{rOX3*`9@ z^oNbF^lt <2tPvMc`zsJVki$1uGd&z&7ewC_gyISdd zzggt@aPr)vev{{lz`@IN^{mfGthd;VtM;4uf=`EMBiNiyp8YE@1lE_hPO))~#U^~H z$3Gvrxcbnp6x!F9cJ@PW1<1SSBkz%)d;vc4 M@zy#m7JN znB~9RtC|?Y&|wp04#~P`Eq0?BTQ7NiGRW(b-8hkbcpFpH#d*`nA%J|__D Hbtnpwk2gZE;@S0CWJx1rHVetYpv7kod6jjIROwm6>@L%%Da ?J94+LV;NEoEmray%dKot{m}`#rZQ&(i!Le7qQ2 z{Rp;M>u|L_0 #jPMTs(DtL)5w-NY*lP{`A?*!*pQ+>6hb(s9b@(F|`ZB`x zD~FtnkgtvXkni2+t6d*R3vDmRF!LZvKD0M}q3XtG)NIdZ4pR@@>@>-NXzm@CoNWg` zShoMb9Dl=A$Zf qd z*YuwCY`te)_WsD8^|90$@MoKKUhS^47JiS*Q3 )1zMA@&2bNO#iVMmJ7JMhYGo;4!rE+a0k-E7AMIjk69P1-FgZNrU@` zqPwZ{QFuSXReWI=JzbkaZrKGt8mwjyVZURPdj7=UCFC?Yi@yTdSAw54h+Y9!bqVtt zficAxR^7%}S@7TYx0n9+l6J}Murm`F{Zx2KKXvW5`CH~2a@ZiIZ4 HNi`=j~dz4yu`ZBx>r5Cv>#sb(r>1xPnS6QROojrefo=+vFq$U zy~s^JZ=Y!#EFRhq4|(gm&{N-+J@rkczKzsZY}YrTXZ7VHALJGtDDsg_9r^HS0rJrR ztt5v-sqBp=M` Lx|i=31j`jIF93{xKD zyTB&)EitD49KJk;-orNDDt_QVf7KL~@A*4`UHm%>&TxO=u&*sPI|Eq=qz_p$Bp8ae z&mlHy|Fnkn=u~Ncy+d~n6J8fRiF}mAbz@HBW6 3X90`O#puNk zZU+u q+9NrQ74&yIdT)b216? z(Kr&D?Wf;=Kht0L7`BV#2$s3cN%&*bnQC@B{q;EW-ekJxS^8M^hDv`N8y*( k&(~br~aJK#CqnR^_1270y8Ro0ki!}RP+ckQ|aML zxwmZx7Y!b? W!Q$o+i{;`$!VSe!uvh44;?gUHq`jY52rT-&=E4XZ5=K?_|IU=--1nlGq(Lr z*!VY+d*=q`iPy7!-cQdHBiMp6_syWaUl~Pw82UBG@P{MtNEWcfw^x}YuJOi@_Q$Yq zbxcAoTHDu$KW1xpag9>fkUYQkrw_v?a|B$(E|76u;uc%6-?kBFTPZTleH(hOsye^@ z#MkhbCE*kCKUa}YTlnNs4?mD&NAtrPe937B{nwxtj26E#x$~8j4K&MM8crGfP;T>s zyq8NE^l7&FfwGxW20!H5{6N_}DT5!R@8djSmwS0)%W3ii@Arr&hMID5fU!hmL;SC; zYsiC>Su=~h?&~H^J10C0+7vJr|K+5abH5s$T*CbU?r)nxjzx5VZA;rSxH?_VddcdP zzZ9uQa<-awi=MB36TZW?l{~3$BAaJ04kUwBsL%6pz=F^0`E;(xGWa-UIpHjyrAg*_ zl)Z$F;95Jd%bfE(yUaPyv&)?GJiF{{$2@QOY0mR_zej!MXn*U0e&cO>rv6B*DH;9t z9680g5a6D0E`(j?JQu<)gFYdfx9u|Mvr+V#=sLR$`Y2o1*=1)VEB4w7?LDn?A(GIi zfV^|J)Bi#EQGQE4df`=xEtad4mGN8nRnCTxtCZcs?<#&bT30E%p5Ln|`@VIRvTOL= zK-os?DrGbHT|n6dTuZqA@FNq}*~r6_#Baa;p;`V3o>%dF1J74+&EmP-v!<=@AE&&5 z`vH{8bI}7sc_wA@J8V6d-x-v@R7yVRm6BI64IfN8`nf-P`V92-0QB~m_+ZGbIL*wf zDD!{Q59=rAJb4u}Y9=4wg|3u5@H; p| 6z)?diILqB|h5(0ksAvoJQJ`o-SmsCBM$P)2 zPZIm?&|!gVMZcIiKJhz6YcfoDgY%5A&R@v9(`yIH+`^s**zx_c-t_pV%{8DBV)~tH zP9@g48g||Z*7n!A;x<&`+P?T#>|BMmZREv6aQGB4^|$y<-%X4-$Q%8Su8%NAI&&8; zcwW_=99E;xt`NBG+73QT+rbAIQ+>>R5ByGS_p|ib6;bBC(szycYznEv+n1M6CbTz# z*ncBc_-5eSxeMd--hP}%*=OV3g#*by&wDz5p=Yj}tRHM2XDf5v5bGYANAP1g{eOWH zbN!P2^c=USGG%V$rA^!~0iM$LH~4GxoW`ch3Gf!&3&Gva>nOB&UDL)qH)1EW83Aq9 zLz@xgb<}5YT+zMlZqLUhAL2&f$$Ek0Lu}h+=Jb&DUnjrcYu$sFX`3-Vb}YFT8NUWu zzZ#jp3faFB+iWJb*$iSi%)E#zOZ;`BTjab2Y}~zaF2e2Pl9x5zJa{5crH6m~PV7 z0f$TE?-@CH|PXb0{kH_^<`N`a*P12EN%v*80{XtW(um>r|~H zIaBo#;zsDlTFM`>$_G2vugX{GIXZgET)%4JOfy--7T%CK2m7O(>(cA&b?NB->BJrn zeKF86?V+|K#xqsdKm2~i(%=&rXS7dvmT#N2ZJL;;e(Pj>JbKTKJ5RlwlVGpaVw ~jy*Ru^cWLYo!idW(PXnn`?14(|7A7%wHpCEor4Dk^dwA@(}Ita(y_U;AelOnmzB z^^bMLw#j(|Pr;ws#^SfwSAY8n{v7n?U*M1SvQR@iJSOmL9*e@8N3g;Afs^;y5$4-+ zmVxA$!xuPP@IH!u+`+x9qdk19+E@Gj8xt!zQ?X{n=iBcmeq84U0G`b8?~{A#Gtc{Q zuSLt5GT!|``-nr9G5yzES8x?t6_=>GT$TF=;bkY@GUv@FmQG^E;?FD^df&6pzdX)2 zvVY5L!{DTCm=SNoVBLl*xEHy3^(B!TIr}4Vt;t>^H^^#GE5@Rq zV?5o-cxuKbnd9l1#0dH_59ea1Ze-5eO23Q#bLu_Y-Yz9~bsKxRWiE3QZF_YEd`JIE z+{1G8&527L<51BVVTmD>*s=ni$@xxp+(S>sA^0wunJ)bqz@F#Kl($$%8myucpWm$= z{& )P2TUR z9d4h~7Q;5FwDl9~aEIPh;Z$VQEHkfd_-SOW-Lb^I#%8atNnb?Z_Y$uE$8`YwFa4kQ zZfv%k#aTspE7w(A|Ceh6*Z<+_jlZ&Wb%Zt4T=c$D!^1MhIAfICi6iamnT!iv@16BE zwlgM3E~;bjw!{^A`CG;ddmXP0{?_B4*ozVe jK);H8bLfUg|MZSO^~FQ}A%%y@iJi_qjvx2mv;G}_{~5m>mpW`m zfm-m*v1@YPG5V*SPk!nE@d5An&uIMHN3rJ~^|e1IzQz8`Q-Z*Y_ydK^{mFx^PMHUr z_0vox<7|zY2V2gz6FeK`jII)0&p?4aQ}((sZ;)qZer(of&?j0yQzq-YU;VLZ3+w<#edNqEeb7ul6qwRA+!*h#2B|_Y;*SK81NDL9OBuG>sR-P zKK(uPNww&+MRd_=(kIvrJvJwy#}8ce$ZC9Vi ``= dO#cF9=KHqssg-1fZWIJfQiFfqsDK8lSeo^ZQ9_YB+zGndsiy)wdge;#{^HVF?$ zn4d~q+09R@I&A#CdCkMa<{9FH8`u3*&IU2UzD>+)ct>K-jy_|R?d1FddA}xCKYP%A z_kjIwW@DTEu3?z(hVt~gU$)<6KCIym2yOpg>s^C+nUrnj9ozo=!J*ir=fca!so$7m z;QuwkSx*_#o~<%R`Lx}hX|(4$+Qao+XM4DpGrK+u%!9uKKKEjG?4-_v2QA#1!Hx3k z SdMC5-dEPlN!o2^Q1E+c5B=+d4M#e$xO5Hc$CF8TRpKjShjH>4>b3MM^bzM-fuHa@@;mVlfsU 3V+APTWmA& z&uG51&WyA9G9SL24PQ!Jf%x#{oS)z7{U`7xzI4+zNp7FpGIxlW)=YR) jpn<4Pj&`m0wv%Hg6|BD>w9}2II ;_seoy*s#ZUmRXmV=&(D!y5g%--k7( z(eGx=YXDzbkok1-xYzi8AACN#UmRzYoT^`3b`bs2w$hAi)qP`~QDXN^3-fB`kKuOa zw%+q6?6WcCJ3ZIEM0MDEg2cz9J{7m^*$ cI$59jSGo)O@n8<^Dzm2 )(wj8{gm4 zulaqw4$iycduqpK7kkofTm1-Ruj7pt@ezuCxulDB+U*-h`|3S@wI`_Gd6tHGCT! 2}zo({s-l!4DF6Tfm6e&rN>UXQk~@Y%(66n^E{DDN0* zG!)C2YWtZvzsEb4x@5!Q&xy+heq~!W>N%f$oX#1N5q=~a|KA*R349T|&TOyt3C$or zgE&Ru!?>JWtz2gukDt`NoCN3hOir|HP`Av3HN9t;x>M^oc&Y`SlJzj{`^I h`Z9FLLMK+xM*j0V4(5)4^+46iFx%OlnkIS&dQ}O)8abK|HFTNhRoQ-^5 zhn&trUa!T6b`5fUHNM~!Z5u1(IxaK+7i;<(GA{jY+gu08H!k+99%Jzf=QE~?f9tY( z#zlYfoVK<+)?!E0qALR(Z`9&Pl6VtyfABQcZlL`V=pnY)3a)yb=C{mof6JI_+DGOY zfp%WoSEl*vBu2Tb9EM5iZHd?G$Yc09tKKho>itQ)UUweD=N$DOztIOxIp1|jAL7RG zQCsoL;=i-@dAjBTE}N^L!{%ZwOMDzQ&iU+rW8$at(Fs;u2V=&9!3?DATbD&UI`l6Tg_#e@59$@~zW zpNW51 sI zi&k?_Qzm)8r?j$t+VEXtE&HJ>u`3&pyF-4{HZb>-C*P}FfV^!&-sF0SYYErySXc3B z-!c`O!{Y5?_NkOmR>eDY*7eU^S8>12y1ve}f%~=A^%bsiHfXXv`Ff8le$H0$c{dN# zeJg$LvNh4wZRm8F>tZLy_k$xldv$IIWbYpEJBB_w#=5_(ac#^X&W&$u8LV{ZaZ?7( zeY~y0Th#rpl)=r!zq)k2$eWaTWKhecM+V=P_ndsiw=YTAzgq_BqniH7*Rdofui&4Q zy_ZDJJhHbriR@{aa?%JnOHU$uT5g>*`d7(bfAJ%kaVNq@fwPOEmG=1-@wKDQJPvja zhXUk7VwU78c2o&hkwLl2deYJ&_Ip}9{cu~Xsg1HKo=I%ATqXa*Dy|}fa{X_v4O~SA z 971|Gf9Xpr9$`yJr?`F3P26PjF{$v!&P zdu7jD0R0pn8*i4mgRFg b++1`BSEvhhe*_t$Ek<4L|ua z;$Gyvxl_eY7L70u+u;iwR; I36~C*izR#KUiN2|I>IZUC243M@p(gU1a?X4< z_RUcGqn-J@-GhWz`BDj2k*6)hE|+ty;$Gxw6;~O{8o0j2HGpi`<3};J zq@3ZhG34irCHFi^#*hq|`!cq8Wg#vHj88Hb)^gA}m(XKVCBA0nZ|jsAkDoN7@ryUb z=Wtu|n$Ha{e#@N0{o#Aqtl%s;B>vSnT jKg59t1uxB z;}O2ig`bi=OO}7jjxoXytIxCb%86@@k}=g<3)*X+Eo|ddo2Ht!^;OY7Fb|To9N`ap z?EE;#js#nbF=3w97Ncx!lCfj7lsWBH-qZdHr!9uB;k06Vc)v&UAj2FxMEBs&(RO`c zY!OGO1r8rzEx%Ha)%IAD=!Yn<#*PxMG7mb7einLfI~r?}Ts~FS*s+T1LGBy4N^FnV zOQLtQo=5ghkZZkD_C|+4ZSmb_;JfblO>6}+ttaGz`ha-kuAasGqNn>XCZ;epl5=Yb zc@%aT+V3y+ljNNB@|$aJ1;5$$OMLt?{Th1ws%4E!a-xX;Ui3@MI=?UOXGX8b$3E-q zK3jhW=#P(+FXwspe!yGlQs%K~Huq1oY1T@ahc8D<*}si1O?yUSuq3vg{@g3PX^%ZI zY}ICXbQ3%k{iM0(!T7p0u=A{VPI8)9s!sS?f5?7@751qd{!f3gKH9%%T4nOvX`j zKTuZVZ$64W8qeu!jZyJ?Y M$u~#Zo9-h z3)8eqwu*0|CB4%wIU#bu{Kczt_pm aT>)=y=Ac#t`e z#E;+NV?CU)y~Q!McPvTnm+98898Tizqin6%>CSmHWuv9cDI=8WJZet6pRPqFpjV z*-R;O$_VW`E#1xg-RW*8y~wXOd%5H?YR=a&0S{lQ>I&$8r(d~>`}g68CgQ)>TYMsR zzwn7(kHF8=Ugm?}{O}#?0!zq6I8F3nCyzMBVHaO`^`bQnZ*`2rnkVY u5vt`UaenSy?3$q))h5Q_Z4__rlTX@0C zQ>9(-R1x|v+53l5I(hH`WL^=sR>{@LLx ;b`7os(@kv#2{e^Yi&vg~|&s*2u zb8X;W_5sTEMXno(9qPXc+$ Twi08h zj3IiQqAZ ZqcQ*t9;x2B+bJ zPG?@zAA9o*_-z38CVRU5eXMxkRqQ9LOpVbKc0|PFw4KnWuAh93^+HovULAbatLMA5
7M0lIMZmK6X*yvwFgFTjaRxT~PJ&si z;V_r|kU5sRtlfbF#0#35Fon-!M=bsgvhFfq%AN&D2**RvN_#}fPbL;z{yQ*eC zEqlWI14rf#`PP0^@>MqGgO{|mo_YdqU$JW+#;PRkWxsm#(L+YV6Yu*P9yy1Y6JkV8 ztQZ((lXUb${NRy;0lgMRf36!cCnr3-b4_fWD$fZYh{fK`d-qe}KmU~VC|Q$Seo?so z0i)sJ9M;H3sc0bPT1Rtzv)BH{xHw#o?<=>D8n7`{Nv_xEu`%6$yVL%5r}=Hj{#Mp8 zFY5l=XY6l_#_4*??QhTF+X>x&`;`4H=Mf0bHP*MnGm3p(EyU?Xn1^Ro_`)sUC~Dt5 zLhZ}`52GP)6EUtSDvIAF%6dRl_LwmqMAexpDztut{hP-xA%8J+YoDT`k3)m#G! zdp@{AMeD%r=nNHILOtacFRZ>mk5i2W@InE5Hf6u2@PX(**|S+?#jD2NFX}c|HL;@6 z!L3Ha(1@=g^DObD$iB_2#``+RD-C~%j7r
y+7jj$7ALXyR zi@#)kZflKftJBxgjXqmvpRa-bU#ER7oH1tWo&(Tp0<;v`X}MZ{VLTVNt%Ib!r&@P8 ziasO$_1(Oh@tnPs+2~_l{0e(M `!6MU)J1T2VQ>cvZ& boziOK0sI^F)G7OK dp6)8H;!|10^-o+IxQb8Z@8iw<2f7YRuUvp^NsLGa{C9-0{Cw^Op9SC}vD`0z z8(rgBn-$rKvA5AHQ!d@=cdg@?`?k$>9Iaae68|l7g%4ZkAh9&Nk*R_XWJ+?Y_uG)8 zb)MzR=~&{9_r94ni+wMCc<&i6c1(aBckRWqOWE&?l`!=``MG6%N$910^T@qp|CQOM zY}KLV23hg8V>RC$CPse-`divm!<<2UuCjLi5)$Fvul+iC#ObSt7CLT!5VU!@3)<+uW52zZCa%6iAKK#%Yj9>eO*>!HB?4Wf@2vLL z%Kr2;=8IBh>!i#Sb?wELj*+t&s-T7FLfMBO-$M>;9WOz?`ap* $=p_1R@#R x 5&+UUQh zTK}G*ucM5#)fv#Cf$x9B_tkt~Z3Oq6&-eZLzCYi;!}rxo`#(|e!i+ryz%J0gOZJT7 zT4tmju7svl!9D9oZApD1IF@ Jw6LGvjv<+prKkQ%h8|@askGsaLYUfqs> QDf2g(YwqFv z_d?#Mo`kc(#17K33~!YQPtg~n;Hfq6RJntv`omK@;Hg@8>JF=~ehg3i4xad(k-ldP zJTU;C7ywWF9iI5z(gF0(RrJ*v^pX6Qz8dhvOe1}D7VRyhO*e6Eq|Y}4XDx8n8mS3= zF8y4}x24oks(+X6naOn-{VKe*I{4!HnNO!ZQ3!99E}qwZ2%aj1PK{i5SiDsYzFVlL z6W{(x@!bNxTflb A4grn zTT<5@@RqZ#H{d1Vt>4q`zim%@Lh2RXk~|VRk1)J71Kt`1Z^`!s@Js2^r4Qv-6`JRl z(9c?TNNx`Ld36`ML;Crj)g98$!n@MXy*ebhzWO+Hi0GgI{aipl53Q 6r{vc_AU*)oSszs~9FvgbM3$l IPLz|;0vppY+fO)YuM z#Qnsc-^{#HWT|?bd7hWeQzA JE7N3NBxQDE8f-bc$+M&nnWr=DHipE+pz0<5^xr1GJ0^n;_{ly|{VCZN*m7BX zww%?K)p!WMh{(9)5{ Y83pGrG2c&f23E1 l!$IwJ}%t2a%g)#=TXc4CmW|gUTBgY_fvAi1^7M-3~UkN(xy}x3pO!FtsS5y zoS37+C&sYe25g(oa*p1!z!zU_y+7xqGe`0@(Al&lI&;_PxsE4C@~LPo=knP(IqY-z zyg1nP3k}*Fc^=MxlAOO*o(F;Rsk9o-u`+Z1=1o)KspQM}4m?{-&R^)U{lrBkO&U4x zuaGu5=_qs?Z?#jO;|D#mfN$r^kn>3;U&bEE6PTwKvsN@v!<^7Fm<{YVF^piE zhL5CAPDLNdPq7g^4aP}{Dfv$;mz?Mr=lAirEsM9s zmy(5!iI@9L8&Bl#RA&%gcagttu=u|G?tN1-7FvE4mk#L4@8#4}aUDSH`6Bl73huVg z-i{|f#GccV6nNQ=w;ih%wBm36CT(%XJTe#5@q{xZ)=%OI&rcFJD`no;a?0$ON7fU~ zctXl_e52F%O_`2wbo#z2o9W#r4}PZ=H_Q9o`M#a)E@G`98IA6+XmrZl0pObuyCQ9s zm=x!FfV5T0oa+IUjh1x-4^8x1f`=x0Ey1}S@G;ZG8M`7jqxf~j2U&nTNNl-W?O0;_ zTmgw)d6L-pqi@HW;5*JU&T;KC#Wo{XXinHrtRZgg8xCw{eOKO_G*z!rsg#gwt a@P=(?~|>)DS~jz83y4|WlFd&|6XDC4on zq7A2#HCFMfihUsR+03{hHf$<$%n x>Hg=-3b?=)*hMV;8dQhZcMtL7pGN-zxgk zT$9dd9E06p+A;1mgPGtb`8@K9RG7F;y)W&;QZr_YHCeqc?cP_-n60`;uq`|~ PMt;BO!?NS zv%v4P^f>SLNRRX00s5*A9+7px(fDyT_|)N6>^*0{hz@hc+byI|E;^RjC!%+f?R$3j zRi|EPLBCXfqNpI(2$VYO`wZ}tm3KY2He&-K=$FCBy;H}C?#M;Qh(40vh3Fal!FvA~ z 02@1LvJw7T8H%if3{ z?cvopj3viFI=+iD@V#+1Mj%&hN4vT5=Ej;Fdw8w&Dbt=xKG!p#^RLmBp|QmGB*|TB z( WMr&{8C|G-|GT8Awuv891` z`dmBw6*cxvWUn6D1sKm|jeHfqnXj?`T1A75d!nyP(c7h5N8v-QCfBm8pOy2S=)+3j zwpn(wbB(yYY#KQV%ynYUemxxGeK`kw6n}hQorh0H;#XvhoJyYXyWpFej@Y=JD^&Q8 zPkPR{xl(k4xsOm{7A1F$t3CQT=VG$INN96F-pN+c@!;R$Y `E`D>ZH(e0Ko7 zF6~b}H?&>aK8mZxkNg+RAGa6q$C`Sz=p*6N>*>pF=$)PX?)q#6<^VB&gZTL(Pf7e8 zxx{5HtZ0Zi7e@A1K|6fl+a(W>-M6-$kiL!U3ECksJ-TmYpDAnDCy?1l4tw;_6T vf!Jz7r{pv;>B#=PC}S>p={x5bfy+$Z(lF1RUT_Fqc8E3{_xlUlM)oN< z##x>_ ~FF9WP#O-yn4;cE&c_cQCZTS&hEWd*l@Gt!#cA@s~ zJMt{qGE|QYX&FHm$hzcs ;C*aWtbKfE7s BktseZCQBEItuy$^urCZ*o|2_^hN4f5i2dW4hP-E$Gx5 zXzJC^3;8}-xmPzk=Kva3Y9g$1ft94ZJ6OfUrd)(x6`r-{=sITqSf2$I=( ~CexuCv3W&@I>!p3v*=3J TcONk4{S@$>_;bpz4;^R2 z3#s9+7SOgM oN^Bquc}E))9zonq80VhZsOT zf7dc8e$u{oesFs~ BWh$-{ zlgcYH*fz%@uQKMbciEQL+CiMv;m5CsT*SsW{HLPJMv?>E(x=+@I?A1Q_ok8Y^+IA7 zI(>X4mVeLAyL%WN++BWZiQkvJOA&NSEj-e8p6Ofi;v=}=PwOD}?RMi_^3{U(xbNV9 z W^yX>U08%Kj`#5)Za;xPR(zg^s6*zb4fLhdvzjtJ zr={IDSoH{;QqD*wuIRn%jaBR8{yFN+rrvhyjZm-Pp3Fb@HDb>5#jhy!GUhnzl{)2K z+qcvyenn}U@vzyh*te6nt91Dk&esibzPQ?ApEDlXwCmE`O<%dx$F~QiF2<{#(6JTV z