From 37630af28025e434ba6ce9df11679c837c0957b0 Mon Sep 17 00:00:00 2001 From: ross-dash Date: Tue, 24 Mar 2026 17:16:05 +0100 Subject: [PATCH 01/66] Added two new bottom sheets: - Export CSV - Zenledger Changed the navigation bar for sheet "Import private key" --- DashWallet.xcodeproj/project.pbxproj | 46 ++++---- .../Illustration/Contents.json | 6 ++ .../csv-export-large.imageset/Contents.json | 23 ++++ .../csv-export-large.imageset/export.csv.png | Bin 0 -> 13739 bytes .../export.csv@2x.png | Bin 0 -> 35236 bytes .../export.csv@3x.png | Bin 0 -> 66817 bytes .../zenledger-large.imageset/Contents.json | 23 ++++ .../zenledger-large.png | Bin 0 -> 15062 bytes .../zenledger-large@2x.png | Bin 0 -> 38377 bytes .../zenledger-large@3x.png | Bin 0 -> 75420 bytes .../UI/Menu/Tools/CSVExportSheet.swift | 99 ++++++++++++++++++ .../ImportWallet/ImportPrivateKeySheet.swift | 22 +--- .../UI/Menu/Tools/ToolsMenuScreen.swift | 28 +++-- .../Tools/ZenLedger/ZenLedgerInfoSheet.swift | 96 +++++++++++++---- .../UI/SwiftUI Components/NavigationBar.swift | 2 +- 15 files changed, 273 insertions(+), 72 deletions(-) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large@3x.png create mode 100644 DashWallet/Sources/UI/Menu/Tools/CSVExportSheet.swift diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index ee93b01d6..ba64f87d2 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -824,6 +824,7 @@ C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */; }; C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; + C5D7E9F1A2B3C4D5E6F70012 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF222A5C7D93002FAB75 /* ConfirmPaymentViewController.swift */; }; C93078492A6AD4FC00906E4B /* UpholdConfirmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF2E2A5D5F6B002FAB75 /* UpholdConfirmViewController.swift */; }; C930784A2A6AD52400906E4B /* UpholdConfirmTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF302A5D601C002FAB75 /* UpholdConfirmTransferModel.swift */; }; @@ -1101,6 +1102,7 @@ C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C314287EA11900B4BD48 /* TransactionMetadata.swift */; }; C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; + C5D7E9F1A2B3C4D5E6F70013 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDD28C1305E00490F5E /* AtmListViewController.swift */; }; C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5145F2848F75B005A8E3E /* TxDetailViewController.swift */; }; C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E9299E5396006903F1 /* NSAttributedString+Builder.swift */; }; @@ -2701,6 +2703,7 @@ C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysModel.swift; sourceTree = ""; }; C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysViewController.swift; sourceTree = ""; }; B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; + C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVExportSheet.swift; sourceTree = ""; }; C943B2BA2A408CEC00AF23C5 /* DWUpdatingUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWUpdatingUserProfileView.h; sourceTree = ""; }; C943B2BB2A408CEC00AF23C5 /* DWCurrentUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWCurrentUserProfileView.h; sourceTree = ""; }; C943B2BC2A408CEC00AF23C5 /* DWErrorUpdatingUserProfileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWErrorUpdatingUserProfileView.m; sourceTree = ""; }; @@ -4277,6 +4280,7 @@ FB3FF0B0222641210059A9A5 /* Masternode Keys */, 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */, 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */, + C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */, ); path = Tools; sourceTree = ""; @@ -8633,6 +8637,7 @@ 4709C315287EA11900B4BD48 /* TransactionMetadata.swift in Sources */, C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */, B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */, + C5D7E9F1A2B3C4D5E6F70012 /* CSVExportSheet.swift in Sources */, 47AE8BFE28C1306000490F5E /* AtmListViewController.swift in Sources */, 754D02082D155564005CA466 /* CoinJoinTransaction.swift in Sources */, 47A514602848F75B005A8E3E /* TxDetailViewController.swift in Sources */, @@ -9313,6 +9318,7 @@ C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */, C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */, B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */, + C5D7E9F1A2B3C4D5E6F70013 /* CSVExportSheet.swift in Sources */, C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */, C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */, C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */, @@ -10489,7 +10495,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -10629,7 +10635,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -10803,7 +10809,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10825,7 +10831,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -10850,7 +10856,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -10877,7 +10883,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -10909,7 +10915,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -10938,7 +10944,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -10988,7 +10994,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11122,7 +11128,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11267,7 +11273,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11410,7 +11416,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11613,7 +11619,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -11726,7 +11732,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -11782,7 +11788,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -11807,7 +11813,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; @@ -11924,7 +11930,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -12036,7 +12042,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.TodayExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -12091,7 +12097,7 @@ EXCLUDED_ARCHS = ""; IBSC_MODULE = WatchApp_Extension; INFOPLIST_FILE = WatchApp/Info.plist; - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = watchos; @@ -12116,7 +12122,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 8.5.5; + MARKETING_VERSION = 8.5.6; PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.dash.watchkitapp.watchkitextension; PRODUCT_NAME = "${TARGET_NAME}"; SDKROOT = watchos; diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Illustration/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Illustration/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/Contents.json new file mode 100644 index 000000000..f546bb73b --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "export.csv.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "export.csv@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "export.csv@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv.png b/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv.png new file mode 100644 index 0000000000000000000000000000000000000000..051c3d09ada1c35be733ae97f1cd8da17aff402b GIT binary patch literal 13739 zcmV;cHB`!pP)O0Q00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP6NklF4I z|4Rtan)m(9K-c?!>tn@Y{vFIVicT4zF)x5Iyu`&TcytHT*1{B!$}%uJvDH#ASvxrP z)#3Yh+oz*A~bym)2* zP1PY`I?D{97Kk7Huic?ZH)v~ix_u6w*YKcl7UvBp{pr1h!YAQn1pns&_)xkx{qpan zjQ76po!ysh`J^Fue{DhtK`?M1Hl`I=12P6YH0c3N8YkSxH*nK6iyPTv_hif~K!H!h z^^#K0&l31hy4U~V=eG2}<=1b^oST1L^@!k3RiJcp7L)B&B)8eI=LEc3d!p{LHJ2Er zL!bCW|KqpbS^-UwzZA>M4SXow{g>XHZTr0s{ATA3=ie%-&{-RI1qcqH!F@^!ImI#d z9H}Tc@04rqz-1|8cK6nRd|WOe<^{FnQ7Y|8hL-=tbtFt zOHiy&A$JQV{A-#@q}+Tyv~mX5G`pvcVv)-LtSR8(lIJWS^B<{~?%1=f@F92!z<;rU z_hm?N;}xH|_sZ7SU-j30>#`T^|I%cx)>8B`12*$&5Gu=Xbt(Y$Yo8C$iRTCVXw(41 zzSxIgx1k8kp;dq2D8TFzK-w0b#a-Tcp|StR7xQyL>$UJAEH4)Dp>%Kh_-9&sFT3GG z{jb^b2bFozTAu;oku-HOcI^HUXjBVOxTpo(a#Vt5mP)vKF0^t6*AQ|p{*%uF^ta$n z31Dalf4(b~PWzQnBILPs7kaKUoY{Z4vw#0z{O&Ahg7rd{7Xo}ty0_ha*R_N1y76}2 zmVQO`ga@L|JhZxbcqLwyL5F_oz${EW*?{hAdH}5#S;I3?n8BK@cHL>NA?fBw7`?3k zDBv)265!wvz(QG3jA1CrY1U|7qv5okZ<+b(;#EJqx^*YK2-Nd@fDbK`!N2%Q+s3P} z`Dptuta-mPEpip)Zf|Un1r5d*P%!y3h^B2=TwbG65-%G zTM^j4JWBdJz_B5K5%g1;1(34IMbNk-(K}+#7LJoDm}d5}1IBaz$t)EHiG)6!3@_bZm4~K=ViIq z!V8dmc82H0)?5FvyX%+U`0>Kl-ruZFd71hQ+9lXOn>jhnDxno#JrI9c3|j5~k7Ho9 z_d$L`8r)iw``MWt3#7Y%J*o%6ZOox`4+ET>5@1*iY#UZLE8)}%IcD=?l*sd3-uFsl z#eu)9o@h1`hhoGdz+C@owIzLq?-tXMFFbhQ`l*a zYsb*0gj^Sc;YY?{aUuv6>xM!KpD5Qq$p9m zg-{RFxu2b)T&oAz{B3-mQ*XFyZm@W1$9?M`zvTvOVu{EZE8QgUQlW3(zTI#?`uRWa zzV_@7mQRB1%%feR;#19?oaB?59bW}JDry=jVPT{M!w)T^13H^#W zfUXokbw)Kv5_|4KG&yO?^_4xq3>N(*#RtGn88%lrka6d92)NdSL`ifW2{(5!7a~L71f;QNZ3WAA{B{gOKhr(S=9J z!hTpp?(V=Ul}Wl!I51gqWn)o8kku-J2P8mNN44$(?DCx03||yne+HCuM$)do3Y9L#*x05UjoA%%f4=YYx7_0T zS2g8**-zw{|E0rFA97%J z-A1sz23ST+%%aT|G{UroNM4`37T~#1PU3Y^*HE0N1O0?GNP*sX#cOQN)Q^7ck&E{K z&8rTAFW8V+!mV;{wMJQSeFA)GnF!^~bRwMy^dv_|(S<)L zz-~p}E-k>!{ZB&XRaXLYi0eIwq&NO@mU!Vx1-n{rfHS5a@>V>dJSP(&U5nm$0qxk* z=pvjLnuU6;0w(8PTi+UPZ?WF>(66Mv0!^rgo%_){F4=g?2OqCa!pcHuFF)-$*1SFm?AMkh%O4VCgJ~hT{u01HC0z(1;Fn za6Yyj6_Bk`X1zhkbS3miy8AO!=o*|Hnt|!5d9dOz_Qg}Bc zz-QaPxBGW_Ve8*BQ!g+8tOD36&zvSD3=zW!dX*!S(t3mx9`~s`{tUd) z?qD!^_m99FSPRBLKk#ZD^Cl50OfOuFa`f}s^(z_#pc$=@fRJ@dN}NK*c?|k2jLyTz z@H9A$ItJBjw7|IUK56e(YuCdd%HY;@d%k-U+X`BQlihIF4}ag;aLwOx0cQ^ID(6-^ zPJmN#sST+lgWGeHL?vjuS5+fWfa!Y-)|C>kAgXiz(N~tJiC2By6rP z?|rcC!CS8*mU6ja@J24>-;{KEMPgf=;#{x_w#mEmlzrZfh3~*xj2!@Y_)&npLw@2R z?Srn}$5weZWvS}Z0@|*<5OV7~VEJJT5@u6AbBn|?geri4kO`3}WVE5KRr|E6Q_v2} zw5|wnA;yz3!;`S@!M*UzlLw(vDMK!6Bj|=EC&BamcPBtV@0{C~&5!KbXSH0ged*Gh zKS#!k$xCH$Hgy9mRy?UVnwBpCM564m?I1l*c6UEEsE5+M`=6Hq?BmNgwXXq zU1LU-0eMpcP0Q4Ve(1V>D=gjjLsS4Xz{ZFkrU4EbAmD?~^lksVgX@~7;ymXf;Oi<& zF!lIhc=f5A|7E5P#Y@-2>~|jl-d+SFgWU>a%yAk?QV@jnAf;P!H-ohW4g=@|)sK(E5EgoR za!OXpLSjcp(!Z~nK8Y*vIAtaE31MJi0?6uI*FX3z6FaLrP04_i0oV05;0I$KwC7Cl zf+Uv?g0@eMLzj?VDI#T{;Q=$_08gNVS5O;~f+sf~v_k6lGp%t?^`55Nv_@@Q$3`9a zjaS3OH-7?dp#xGIHv+3wL&{@8w-OL?yMv~QhlTFWn$UrmHl`Qg3XiMuv zFf*b&=HD!Y)=irgRwZ?k*E9dTzh+Y-17=fTb=Jvf4mMq}%!S8|>xTeEF_Uucb?9bb*}Rd;59A!_J- z;}s~K9+aPW618_Gg2gYqM^u7^Hcbxeiz(P*;PE5F@a)5n!;$@m&^oC>I+MmorXPBU z(UnFUtI^3S$My5U^E~uXdpp-&V0Lw7y*j4gQrP8YmOXg5%;2qOTd?CWIs%vz<362{ z(?Gor%Z;WSrOrG!G)dejWOpU7qb{yXnSXpWDNgP`$8B=7Yp8S!m!AXak!hHI;D=DS z=4y1dTxgJX=cL@z(1thFCTC%E?@6eXmymN)SY}fO)#P)8-pUM4C&??WOGtRL`^Z2r zv2oMr7aHYt=bg9dRad^HPRVDNTF!$#Sdm{oD+QA?OHe^=m|-3i5nQn-V0Z`t$DHay z#g#N;nu^2NDhhx#%`i0K^7w75Uf1**tdNIPXSQUaWpg)-?sx=RHmpI*BnzEr@0T$n za{RzSSeToW5lj;)g|BeFqK)`=*utwG*UQP8JTu__1`5NLfi`e6*(shH9zHI}3)4b5 zEw+FihpKSF+B`T%S7p$Nk z-HM7+oBvD^FEFD4`zWm2FYAP7$B>E3_U5N4s_HQXy;PcHTBSHVHdcknV`X?n%7vM7 z8NDrru*56;2^|9%wCdc#{`aU6p_ z6NiE4@-h25GARL)U^88SP78jpoqVp2jXE}s-r~)_bT&M6L?%8AV{v1~Yro>AEiD2r zY&1NdnADBr!XG~{1+{z++_cVwoukB!X;5vXcd1oqCea;(ZLM>zPCZQ9jbADQ9#qP1 zw7dIIQHsej4DXwO(UX(lI5o_#n$V~&L+0$Q;4PP-vj3-Guh}GdpIRVU-qX?yH1}?! z8VHGPt-?yB*jc9&eMfppJk!-HC}>4j~#_)_a1^$c^)!p z6BWF<@_oJn@G9h_9)?}5@|_k)X81f!8nO*mbrAU%|zQ;1HhQD{Q=szV_4xzc>? z%je$fvLjWBtC#@~@Oii+gP{croxTG@Qsn zZ$sYy+P)b$t33zTwA5jyQul|`G?RYOl-uKR710C$rDG@}m_g|tBs!_oU~cayJiTil z(#a^sQan_a7O>>>r4{zKzwM$|T3v#kx4s`LN1lb+)G#nR1-k966$)18c)c#sHLgp3 z0>*XFJwLCj9WL%|1FNwFkM7$8I}aQM149lL+Tx_srPYZJwvqZDpUtGa%o@k@j0||a zrIPzKuU07(3c2%$%%=`buylJjCY~KR93z7vg#$BX$fr|qT^EO+Oja@2m4?VtXvY0a zJG_$jsb^6&$l)hnp$o07E=0dEJ_o~xPQVnp@Gdet#Z0*G!Y3nw&7Q3%M#y}0Fb30d z@l{YeegtY`M|U-kc2-N(q4uuqHIoM? zy;QM_VKO~z^)wprQ)nNLl|6XJh8*k~TL8n(M$!yyrLs(d<)3#^Ur^{JkG-h}m3aoE zc2h^k;KcASR8UGOCq@!O(#;aumL-h(<_a)+FF9KdI#1b6=OPbtSlInTNUu8wB~Y7r zv#PzWp6noBCjc=@ZrWE7urA?BI-n-n5(@Sij? zaDQtKttm@}h)2eUVIC!$6gue{it|L$CVU8l&%hKS#xS1iIw#hazRX%a_dsW1?Io8p z$Fq$_BW-vhWw^pN9Ff988fGdzTA!)^gUM6fn9f3~_f!-{3$4yo8}O!09k3rg-DjK} z6fIwg1fmj3x00wb3M9*QXoNsb(lAe$zQrQBG z|DP{Fe)CpHwRT}zu?9hM+*R>(3<9Q+PO^|fahaT-!|?VzN;cZ#Gy;a}lWXHtM^s~{ zb6}-%z*9LlQ%f1UwwZ6LbY}M&sT<#uO&9tGSY2S%J(H8EBV;rHwSh3XTkmEW_}^aL zIR}K@0|-6~M9RlDi<0o<#4>Dd&%@cN2J9)hkjD&&@Zl%vMr#SWuzMEK46Ke$z=@+n zFgHIf8_%LKn6d&ag1c$%G-?dCT5c5}L30dN=1`;S8nrUCUA7%cPyQI($|9sY`=M5= zAqWgDlPuB+0_Rp?6uJ92>YAlG8Wh+&41LE2}!H9|=Dx-J!Wy2CN}oCUSzo|uHFj!fBGm=-!hzBSb}ohK@bcS5F;AV5R>jELq@oN zU8O-iy}q!a_@((*^nV2Ng{>Z9>v^7o=q{MKS~*trCSz~Z1Cce*UTrgMJ_UB|({71> z2$hNrfztJvM|!_lsJnI_hO5z88OQi|&B#MO7_}QJJ*~w;#5AQGC`P%zni2&~$@v@SmcoVV-D)82APzI0Y(SbiU2Jb9;SB zybpxgi69a0^ROhi(}5Lw=-3#%{gngIJ--N#E*Q{}vBJ!j!byN`1u$(p0zUu^AZ8tf zlBQcskk}3$$D{*D$})@6JAjr+0sD7psRYM{G5bW4jmOjZR;i1?Hv+=<_+^Os>XJ*a z#Mo^-l5UeX_?ouI?2WzOv08J(s3(fva&O)m)c_e&8%*nBP8_*9+itj0kb3D-hUD<>1%^G^>g@-6J_W^SK1?=KyVE>@J&yl zYYrc07J|zXy@d%Ddj`{cihnJIizy`Aj+RL`N-;yLWnva{t4qk+6q`55474EPYp%jg zLKh2-&w;Db)m`*h5zVgFaqGOU2eJcgyU@wxt|QXUa=9O=se#(D&V5V?VgsGf204Ir zHM&XVj^Q~jjPPUKsTT2{Zp9gQmiaYk&ib??q%@#Q00ortJ?Mdso2 z7s*v=Q0hpIe^?Ix6PVGE?|&Y%c~FutqQhFvto67sswKB%zD_C^;SVVCNs?k13mB=p z=fEV~w6P5y8l8eUs|_;fky0q48F(y4Gx44f2R}Mb0X2fH9m5%2L~Ce0P0pNzq2&tk zq%;97lJ2CR00~=M1jiKY9*tU~Z!4^6pRfkI9#6ODk9uepi!o*CU>G0JG5E;&of=R2i^Ulnzy6WuOhrV7-7WgR>zJ0wXS zz7o4A#?Jo((=X?uQfaRY!%3D0H`}Q!9k(H!l?eO*2#q=*;%?@j_n3M|27&F$+K@vv zMAChDvIJG+8S*F%)AHLb@D+4P4%*az2U3AV5S5X;Tm@EW0c+a^u=~0Rm!c<@OHR3N zqZMH?Zq(!I_tZ-u?X*aV4-UGpI_M#z!OIr$L^rTBrlc)ffkHtyPZOe0;*}bg zPKLlVBwn3Er^6HuOixe4v9b#LQc_vxZV`g4OS_Wrpb?~fj36LKgV>14^9_Aqwzq&l ziT4@}y2R!+>+L+}-s{zzJ;*(I78_2XFM))E9PcByT^d5>10P=3jArPes6d#>7C2s7 zUn*ZwnOVHvtyX*G2qgmBHy=Xu}9Z9$T zQ!EvMFH1)s4#DhHja8xl9d8B~y&Og{exyflvEttrx2$x&-C}vVNIFpNSYb-2Yf%Qb`#){>#BA!9> zD;8KC_y8Njp{Z9~2=#r(uoBu-8Hgl=GcFqkyAf0o(E7q0O50Hsf|`6dr>G zij51biC%XFceAEvl)VdiI*Vc3+Go+0E=ExMex($6&1}KPLE6PVE;sS$QmloLI)t6F zhHCRm*H?~Df84Fs`lNK*X@8KD2>Wd`y8>1$9t|c(skScI1Pz+IPGi~)uKQb{-^^qq zSoCr=)&=hs+*I@6IRefxyh=X=A7dZnj?2(13xVXmC!m82;k%eN448TiE9AgfR{*n^ zSJz_Hiy6<2p4DYGrKrLKe=xYCUvaxe*m<7XCG!gyyd9Gq+GKIGe^J!YmnvotHg-+k$&Mepp;m0eR^SGO-a~*S_`V~f zN8)rLjRlcl1s>>N0Q6#<65Vy@iQOn^b?q5ke~{mp{)hmkD@hJ3Uyz^`q_{>E!A8fa zb8|Oz54K}ch09}YG-eVTW3EE6^dRgI^_3L`*G}oKL(<2iuIIKQ@6Wk!v0Ag6s`c`1 zc(Ok!L%OTP^Oe!r#-W)H@MA}AST3}A2AL4C;TT$B^ng~3VuDbqUiQRWN#SASQe@L$ zUcVi@!S&EsC}D$CC7vR9R!s6W(DjDasR)!@cr{n*m26KNY`pdy*n0hW(7&!-ruFJH zzn%uJVy)Ms4}sY_m6Xxzq%9&gB0{@vm0lpD9Udy(cGDAOesS7vy@Q!z6lK>7L@H^f zv#vWI>&=bvu@bAhb~P}?D{5G9%84Im4~Nt-hnAIWD; zXzOW}^P$EbeFElo{s?L#L#VTAs8C(i!DMp8lzB?ZSIVE2M&+88idE(^8G3-}7Ram} zgv|Oiz}t$jCeI;@3|mL%iAF$#>Vd2zzYS>)!0xdIB&X{ndr{nYV1E0vu!pl?Klp|n zzCa*?935Q)D^gD_zOTNF0pg5lBaKw+mRYSbUa6bbu#w;L`u~nGmF*&5iXB!lRo z>K&1_5CfhE@pA_H3_PYwuU}{y1l5r z5K~DmHx}6Df1G`K=I9d_@M5P_q}-Q|xWxMze%hC<%QfKr77q#rdVf+Y3K&o@5+Q+e z`qJpAAmu92x&W?AyH0mZAEFo3F9AG@ z1FsA*e;YL=n?u{B%l-0nsrp$rW3H)jbBQFLv*pDOkFpmrZ5~)DB8FrXxJqh%mf(Dr zsDRJm_?m;W4Y1LqB$|<*2S)HI$6aZ7Fg#X)!v~jOW~dC#e2vB-p)xY$ua2bLSjMpS zEQT8v7Qsc`;E_p3#bDY%JV9eV862By$g%x_(a8hQeelSw7%Upd`$^(vvDJ!2t5&j| zR@{cXFS<~sX3Tf>wC3;h8s0&}w|IEkvK^;ZQ_>s)tt(d%Hh|E94z6KI@b!bL0pu`P zrhq5PIktd_M_ZYEQ_Btnewl%5EN)&}Ey!{UMp z^O$(e@VtW&P#%I#gPPK25FfY(@|_v9~Q5Yek|sKKtli0BQS9xy3t0QXP0j1 z$lq0W8wYI~m(||h=6DrXN^{bfVJiyLfemtkNKIyDqrZ1D-W)zN2RY z6nLdk^X&Ex*wWSsON;Z!xxt)K9dU>=iGHf-L5M1%JxvIWi-SrCmFdTn85EIz&hE6~ zoDK`x(p-W@JRVr=G&r;$8^ZO3Cgrh#)-iLNq?v{WDvI&J=c?fYQ**JdS!AaHy;zv|=2cQ9~%&;}C&P@Y;r&c^$qYRvPuA|47p5+1q+;Ni}kG z7E?5*erU^MY<6S`!T{S!PdwPxcj5r7Ab?~K2ru<9pi$5WZQtyXOG)v&c{I}=!)&{S zl7BsVl;a~~XfFq2$m3N!9z)06mv#c%P=Fi$WM^vNr^h`=TYM#b zu&5DZAUC5KmH=G4rkPyQJgs%x&dr-Nkdg+%=dd(KXJ(-lW72Qib`ktL##6f14X8wB zgzU=4h2-j&B1ldLmuh2PNHGqyaah}x0*bg-fXRknKJUued!T5Dz_Jl6lH8Le2WHC3 zqqU_66a=-DwMFHp>#*a%#VF<7S!E^~KBn9ca?-8Ti1dsdhcNK!TUH@rD@8Tl3zC;M z;q=u22T*mQ2_Ezb29w(<7tm3mO4wM!3T9pIJ24J#zw$EJ@zbXv)z^;N-%LDS5 zg4=@U&T6+|EhZ$=NS*>s9cl>6?>z?dtr=;rD~kKk34r4z)c^wGoX(nn9}{ow8m5O5 z*y>P=Ae8B2YgP@oU@P{vaT@S2u;p0mmRG&sSuSC+&k2()X-uW{L}=%&QWYIbeBn~o)UC`FcuZn zQwJTw<17r6K{#eI>K*c+JWfH6<&puv|9S(yb5c$*Iw`L^=Zo`C)lQCGAly3FTaJEZ z%&xC(YlT770pCA90=;W{G1=^Z9-)lZL7}4lDwQVv2^zA+DdLD`%ne&|FpAyo=%NQB z%Saa_*}lsvSn%ygraso=s@Wog1q1r?h71EpTc4yGg}|Z@2qE9txJ?QR!{QSBu@Zfa zM8IU31~xHiJ;jMSETXp0V*9MwS_3<30MKxNkl&~t%MA<;BGPZWj>AI;dIKBYv0xWn zX2MN3iOp}jt5SaEaWn&hZ{0;7MsU&gqh#{ceVwr5*(12!spZ8?(GL}lH3%^{fDd=oPBWUfA0A0y+tN{SRj9dUdQH-3DilOUQ zthZpW58%mh?1`8Ztl4sq(-Xlv47ll5W8L*1pB0l&W!0aN@U$;}sfDEfwHw#MgZqzR zpD!S1n@Wjt-3bXK!3UnGhPoS5zY zGZFX}JYXThVxMqWnDE;akb`9 z_Y`gHp%k`I!wG1p5lOoQ-h{o{t5s%d@L%ShVAE6EyxOAce-hb0O@rmpmaf*|x(x$x zcytQJXi7~kD+5_!H%pXQ##0D%0+~kO8`J=X+@@om{}Un2_&o@Z)i7lH%bPP8E@1u` z0#wj=j?y(H46Yr+uzN+?EV+C(EDHA`4gC?;g(i5 z+0_>j{0ng zb6Tb95ZDtKailnU3GMnkN_-lRlhm8U@viUbiYPD^NAyfVXUS@4YkyLMOyr<+qqZJE zz_a+~1r+VMMUd7S4PwY3wb)q%HG{_xbO(Qpv(kA^mC78naOVw51%H-TPt+7{TvOe&E#A5^_vkA;ce)D%bn*mRY97@^wwy&R) z-+to(XKb&_XsE3piZPk}QsI|*!8DOggph6G+4i;&>#rl2RJI|jD=M@Zj+M2fun ze$0|((H@>h>82ljkkrrzLO>9KRT6Jy)Su@-;60vqcs*6RV@H3-hgJig7G9IzYcPbfzGy;w(V$3!P&u;a2b+fT^2WRqY+ou9PSQPKyarhylCSK((&yW#s z>hGcg%vbAh)j&5)E!E+8%7y}VLkg+5ps2?4EtnYaT!F95N$yKLfS=fn5w8N?w{Cpk zjeu%goob@Nd_m?c0+YoXU&-b>rz7c#X=WzOk#^9JEf3WGA>fDJ>neBt7kkND5wvzX#D;6li zd2$jZ#DPmVNk(1fQ?(f1%F;4eaV9AVEcRnz?j;-z5!+5Yg@sqZ3edH8NxPc{!Jv%w z=3C*ywj%U`4YQNz6HGX;SQBapCyR0|ax9PVzX0xU2j}EIhFYx*I(M55_vwdD+~|W& zLfmLp&r>Z@^1J`!-s^K+7vEc-I)qA>nMu&-!#EUXzNoVU9>Az#p(BgU9z7rKnJVZTXHOW>hAtye&WSOKg(3`fv#_m}v zJ1E_*6dE4t8-L&wDE~wxr6iJetd3xI8zwngp**u|->09My6ey3)>|d*gEpn|xd1Qg zjz6#S^|$rsUh{{;?)XnMgyP@kqVKl68p8_@)1P+k$jEVq5^&R3utsFVd)&8ZB*#bY zHbCTv#W`M4ic+ot-6*GuizsmtR#K~_@Rg;>Q_zicQY3G>(tz1=!?##C#D{zPV27>8 zn^BEtrm$0>hdOt>^5n@MeE-9f|NO@Lbj*@KK3Cv_dt~da`=`01-uRIXu2b{;aJNPU zXzyc)`MR~;aG+|#1e#w~!0CpvY{=4463;`0Ds(9eLDx9mmwK|*O-<4Xcq0b955BJ` zT|DOs11T{B-L@_DLTR~*WpsS$4gl3d9})O5SJhVtWLBp-7(>TsY2qi3e|GBO$8KNv zzrQ^PI*XkG#OJ$6le7QUT{|o@_d2ICjo~12wgQVsaUxAR+t!H=mR*G1sBN-nlVe9# zQm=Wfq3zCjQ>qCi-UnYj@ zn(RFGR~M)x6^!ZjqlY(G?1o3I7T_4trOp>gyk-lrZe zJQ*_~wlAQ|*oj_^i7}>yikc$NxSIVJ8zid%%>uwfD@c}&ipo-5CaZbw!uT`0|9bJk zfBn1J@BV!W&Oo}GEiV*!S|s=#@BP;0`SY%N%$eHj$dRTH@hrWB@~Jdg?CfkBPGVg^c`e`4P90W=mR^|>JlteE7%ZBezYP? zYRd=4C0!&MK`z)nRysvrae!I3^1$Sm|LMciU;of92+p3NbT?aG4B*2;6t};p(E7H& z9dn1DPAP~y9@9ZIS!`(m+A!OiH(Q}La4swiu7wK5**&izza7Q|i$28QE3^=F@Eg-p zYh~FmNYw$_Jp;PYcxLG3lq!o*b{zHDk|5$K3(%aub>&G-iWxCx^<-GNT$!8M{n(#X zcYOPE6Houua#X0F?VlBG_AIG%*Z$=*d&F|(0R#u`z+0t~ih?S0RlOZF_Z@wJN*9 zch^ldWIAby#OMWdx{->*&gB^^7-D*K;=5D#-uaQayFa-HBCwygbgu^1i@iwd>HFg! z{;S#6_Fvq&*#_24&2L67aO!37s%oCAgH+%w&q1R!1zu?y<1G$)dqqeU`oJo5gGp2G zY09N3^K~-qNIk=I8%j4=HilgD=$02Dhu4}`Ix%X1tys$d77OQ5d4^>%t1ZjQUVU=v z!S8(B+WW094n6qADm+i_KGWr;0G<}<7We$l-nVDYGQU&ux0$zI5!Mp7UCdw2K)eVxKEeq`i2&>9p@h^r9s$Wyq8 zcv~>9-@J*#AgT-gmlhOs%#U`4jS)yb6A74v|DUqz=pJ;MgdvE# zTe+8Nsm~ty$(PFCyW>wMzxAmJi0iT!Yzn>@%S)wPS6jkAIGDTf6Q4GEH~f*eFvFe2 zar6f#m|HF}ffkF@!}M8L`i22HGq7-C?LN9yL;_y)bw5v7(tdaPsjTR000009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yPA2?@VjElod?%=sX14Atvr{(fEhjaG~ zfNg=vCSdSEN>^qKIX|aOe^rBF*>x}t<{qR{_88o_p8@+S22R|0DQkuI5W&CCv%w1t z&xR*A1i%x4z<1^M`A~!5r%lG+1dBbFnHUb9F+OoV zjN%Z!dHrVg3IY0aDEgT$>O2ehwFZ*SL9)33`enQLtBf2z$}DVyCzA6J=sHETlU&{* zO?b-Ia9x)sIQM|>m_?X_8}Rxs^|3F!h4b8}m~ZKM28L$=-$f9Lo(CkxUvM2CYxKH* z$t>d+iOnqnjmPGv0%l#hwE|vOMmK5H>l_Z5InALhxaq6I?D@}R5$9RJw+lX-@1%D6 z@;7TgZ2oB$OhQ1wmDcReZO6Na>&7as>lACb4^I`PO)o^7 z)srxf?njMuk_&{MvXk>?6h@w9co7tHqL}%_9NuJ<`G?Fr8zq2qA1`qd&T6?%rbJyD zoPtTRn>3w90Zkfl${pBd9@fYR8_Tx;mhU-j|oIZ=aMz8)M-BHop8QcQ*k8!h#d?4|^3Ka{ zGZe_xMV#j600H`CR#W z9I1dBU4xe6Ndb75(Xl$Pb{V)nPunz!YdYi#ji%*#*QWY_=Wc zSD)SC9@zVfz=i=}r~oXIF!S(U;K(#kt->DYht)rh6L-Fpt-I<5Qf9AydML9`OTbH? zZnCuOBumRR-<}`fBYl5t=FGSDZDNnifA+*hwb6dJF#*g!7vZod z=Bd8GH8%rJRiZU%T{4{&r2Qs^z@vg_!&XcbDx z^{vCJZ@GefMJTgRWsl3JKHwFR<>e174Rfde11yJMCAKRNd%GNQk%hN_;cdXJ|8fBQ za1E2!?0`+zO%vgiX)JUDP|bO_X}bpV<4n`3K5CReW5DKjzaru-2yehK1 zU^gEt*YP2$;hQMdB6PdblqgbU)mjAyy)lc1X&6m>XXhQb#~aDDiNC+C(&PNCs;Vm6G+cTX2TP z(Y*L&7Ml7;f1k|zcL035dI#@{ z3&#x?=EOF9?#3(F8_9xW?ffx2pZ!PxukO+E;_obOH-`H^N+5qFH3-+WYgVng20hbX z65uEg0rQ8KanGk8!FjJExxQe8%IuoJx0bZsfPRe~L$JB{E9E>kA0@CiR)F0HfP=?@ zrt2x7Mz_z>jToh?k0x*8d4w_xvf%8#>4og9ANM5HlLz>O8?Lh+zeZxrpRgPo=C)$( zS_^ZddvT)O3o{7dh29pfd-q+q^p)qMN@j~fQkiAh<#!`|EapB&B|aa_S3q^;vo@z)0J+ofpE~W3 zPO!Z&TkhU9gX1?G#kN;oh-OXzDI4@pq#sQ(o$D*1Jvk5LL&Vyv3!ZF#bjFpl#zjlX z!}Q3@0$=KIjrGpTw-(V!KB5C-{ptATcP?kI_)#jeYX`hw^J|F&-@u&LKRDgH&>Z=1 z+%QAOR#dyRgs>vns;f&?{P4r~;bKx|D`iV6eZsoaRj2D# z-c6(p1~MVG&}1-%%O228y6=%AVyfT8a?O=<2N9bmRG-96SQg@SZLX=0KG74{5&Y_r zTO~UE&eW`2?tZlYZiSMeDWTk&RWourJ5OK!O1itd#`>ILxyrg~F9tMAuB} zpGY@ccx*mOARnhcgQoWn5u5Kj;$pSw&8+u=g@G#lrdeAd1 z`dE9QrEinEkVP;ZM}%(PUA*005^;?2?YN0%W}lQjF161h)+vf_1zmF&{|92FUuE96 zg{;mwl}jBMBN^9qC-DKhmRZ-V7uGSIP$bI&;0=7|PwvGfueku#{z7_^Dp6+OxYZ}v zobvaQ#b2B!G5=s_IStv!XZWRFdN{!|psHpS_acPOvhP9Quk zN2gGkn#J(U7}yi3%%%+gm%Qcge6Txr(o6jn!yApQRL+dap^l-O36FNyf=QhpI=H{D;O zna~DVeq7H>ktH0s+RgfCpDU|jpi2yN6TOB>J=RV9THm!F$RcIV9!Jl?9@yncY*V*e zdAuQB@2jq|uxpq7%ESDD+DV*6VvMN>G2N69MYYSLx!y5PH^bwpl-Xlm zU;n_vnCS08@%&A&O1`CqD4~y7e}c|?h`DEHJT{+MY0|`z>(73&%!*};Dp7@4Rt1xa zYNG5|tfs-bV*W&YqWI2bvbBu{idborY1kUxjyHbiLiV{QLc|GgBlkcjbI@z&_&1jK zxG!afVT2X!1YS*=tYNLIJi2_R(y_V(b5~_b(32d#6}bK1kD>a&A||go6XT<%R6^}l z;NVe?Lnm9Plh!L(+zd7{Yl9rdI``zbxS|7Xw!G0<6iOaM=N&<+$;Y}aD;ci=yci6c zG(}~(FwegLpZ?sr>^C6&4Nu){8Qw;ig6_EA`Nc}Z{AYtjI#gQ_wz>AW@~wrryG-A0 z+IHzAwU9Kqfo5hGA6de#e|#9*FFgabd_U%wZHNzN8psh~^ z==IDWrA=^r4Df3PZmdk`ZkLK{S60^OB1TOi9`@5@+onDunO?YCH^BJbiRRCJ<2i*d zUbU0V1dIYw!A|`!drV?pSbfrDMd|l;POZsj>pOG%`X%UWF!~Rr% zbs5s>{NMg|AM87B!9_p!T0By(pr_bJ!?5Fnq7%(AP2E{4y_S!av{7Bt_hZS2Nu$m+V}tX^n1Nzsh;<_=XK= z3M(Sk7{dF$@=^P1)g|KIf9(keaN^op%3n+8aD4?#$mXNMaf^;mo)D8m zWO1pA$r6t809jy2IlXJ=7jgOp+cCd>J&MI1lIeLH{UT!W_JH?Ow58K7Tnu8xD(s$B zL3V1)e@c^2@J3B1VDnzjs@Vs7Uo!~NjQ<6bKADe zk~Ohu!`r^~tLzhN5pg8oU%T7=jpb$I?=n>Z)&}1lSa?l4wPC} z2@l&dH`<9SS>>}-Zs9P6Ic~5B)lS8Qm&l%+lT;~TV-^?ubfAV^4d-d}$SL{VOU-m(t ztVag*`G;}#XBtM$2CbJo8?jl;-|qR?DYU(0V|W{~<_(X{H}-myI!BJSaOmJ1YAYU_ zn=v+5J9L{-i4L7+%bnb~<1FQM?c+=H)95!$pkv}E62NWpW!~#?fL_j( z`IAEdo14@;$4?T_j}zO}d^Tr@VNF|HRy|CP-oX}b`=fuyc`v;X(?g>u6Y#m>XUsAy z%@Wai)Mc}`ay`|6$+DH}9YCK|9qn!W;P`|xn#+D#CL-D=vSqf^%4Wbatf!osz$&t5+00e&yH=co>n;oAVW-GjG{$J#r~ zsdTPPGZ#Dt77Hf?oA=W1DzW*2qXhPOPjSj8Wbqq(|BI#9&sabPEyT+`cFo3yUmvdhH*Yu(oI7k~Lbu^X~HF6Ad0-*gD}v12eS z6N#H-JY1VJS=Uabv$W0AA$^R^iCur8Dd*) z!RErRe__ET*?bXm(Jp5x=(T{S%RIs5zztWhxmejR*nD}xWAl^C-gV)<7|7;bGdIw6 z9fA|V^nFtd)3@%&;Eu$8YPCZ8gpi;Zj#AFbl(VPbQdtSIJ85*rehmUbPC=|?Yp+GLA)d8t)h=DNnF zZQH*5wO?hgNrGOc{`F(Lb@&*pmc!G^R434P3Eor9*G(r;*?gej0i8EIHa|EGRGQxQ z6{eo}GRsY+<@#%CT!i9j8{Gfv%P~fNkz)669>Ik(Tx4He}Hx# zm+6s#wP9LKtbbtpPJ_b*PXQJ7^Z9wf<}+BBok5NX=eS%{H%*Vp>R>FYXgW2^dL}i0 z@Jw8g4d1?F+qb^-|H(D8p?D)NzhMt=^qI)-J|=Hrk6dh3$cMe%P5Ft-XMOTu0}PWt>P?JwGU0Yxar;hj&onI1G8h}D3|+b z0?SR*hhduJ^9Pd~`(m##xNF+O?;No^oE#^2s`(bDCuQspJuXt87jnFA<;@d^Vq5_0kDjZ^x~rG@VEv zp+tA6TPjHg=tZz&26jBiOrX3s{c4KJ5BZbY~Joc6J091o=npT!XJG{)}>_`_i8m; z_QmI)ZvXQyvXbzr_W=J8uhm;9zGNG4?>-u;mK$V7D`bN{SufqSERC>JJ|zUQdBEmk zs^6~A#L!7^s=wxVB8$Pg2XJt$oBPM2So`$d+&{ppSoYU5DxCF>;lvki!TMKRiWOq| zQm#nX+|-TrU`SkN-GDEOQ%erE2@&Tbq=gD|Vwu`?W`@j(hfiRY;T3jPiLj#pfQ*@0p7mioQjN0kgZmW#?{`oh)g8lcJf0(i1{k7;14Y+#)9 zpnBEC;Uf!}K6!%JyzV(}8K&OS5-TzR@wF(Qn)K}z+hqQ98>s2H!`v&Lv$^_ruVQ^3 z;2+`@Qt--REE5)u|9Ua-H$QA)$!VcfE<@)I602MX0B1%k*86Q+mX7tzvf*N196OP0lxnSU&7g!Y{vZ5dQX{En7*^PqN}jp zAID>Jv5Am@QDXD;1oR?ZIyqCt5n}Vo@*;_bjI3G-k)hJ65w-p+t^F%iJXb;xrn%-vO4%8An=W%f)1cl_lp zjFTeLI`1^(%7fnbeZqabHH?{6pk`zcv&nJ`KSO}rB+-STT5)mY=nQ7Wr$JgYqDwY6 z;tR`Tx6ptrcI);|Z@N4k-3VepPB(lMmjQSRP20xvc5KC*X}#TJ_(%8>0lHrT-u3on z5#QzfO#=OWhg|GBw1R=5KAM&_!hNojq2o(et_QNYkO+lbF0}s!$>v9>-H+1@U6XqX zDAUnv#!K!Nz}h5j>b+*sr%mT>SB99R8rsaT|GJ0Kx@QjtUUVT^+sd^=$r|U>*py}B_mq+vV z5+DxZ7_#bee7+DG^Tji7@e;7PRM^a2)1JAd_A2FeuoPxmaM zZ?M<%gYa27^Q8mY7cU11?#bo?=)w(GEO^&UD`4_=NK4(fT}9II-LQ5n zYAxllHc46gGNixH5XsTUX0Y$mH(=|}T!y9cfSjaqoHXe5EE|1$wU=bTsbUVp#OAB3 zEgU&Ajk%d=Fwzn7B(fNi%~`rKK<4PNRz+2xhbi%iYdR38%J;78>d4{+%h0qPT)ATl z>I1p&dJO-NyFd>v0q^=^jbI!`$X;!_IB&wjl~cf9-?R#gWRJX1W_51fKq?|)b50@) zlT-cG6;C!lx$L4PCkS|~QKCv`n0gqCUCL$_O<>uV*2>yJRUUU)i8?WhlNi~+P4E2@ z&b#J(%nXm9k3<})%!bb#FGv7ad}l%|q!=ZTPn9fK)V9Y@F45%BF&aTvC7TCR{jBW+ zFii(dw6b>bNT<%j+N9UrH^J;WqGMV4qYFZYf6W!AVZUwM7yy2bb2cp5T>#$p7Bxsz z(@%p``9Ydyd-Hh)K6P^qi_{~^y}fcNTY5j4LW)-!UGy1R^9BTi`(-^-0-ml{HGsdyBc_Yd_ zLr8w6#NpnSaQ(#C>q>bHLi<=zyc{lrYk0gEU244#oAf(09gRb0%Ufc>{;Hd zjuU6-M0(cwo=J<1_#ue~Z+^u#63y{L8U3>l^J&8L7<|A>k%op)F+CgDB}E5lkqrOV zOHF+JffgQGsE~*=7@HyV*j%s-CrgWg9>L~I97joHnO@x!lE@+D9}{D1%qDT@#%Rv zIn=CGNe42dzjp}oEQ<+{!KmrVC$FlNj<+k*=V7|Lw;?WujJmd)e2T{jJN&wV5xnZf z!}$E2xK&|4a($e^e2P*t6AkF(hAXXa0A29 zoAzVr`g<^T%|#@fk6?R$4=MWwmdLtr^vH26(X_KkFHo2hJy9Wh7-4NH@PwE^Q+Zh8 zlD=+C6Q?U(SB6fU5^J61<1J2(v{QJ;(n2Pb zSr^xwR>V3oBYyVIlNcEuz(Bc3Gjhb{1oYWex!^Fq4peyn&C_OFW|~vhCI!nz4!Q$g zDyl=CZaPq>&eN_8>4r=1qud8f8guy0UwjXzpFfDcEtlZr;X`OvS5ZhPpsZcxHOgPQ zE-aNtUm9zZCke_nOsq}sMP@6e@%&7wXAo>6;f+IM_}Lc^;krlUCp_<#o4_r%TDJ}q z3m1pdVRCj=A$jpPKob_b_SJCyh7$Omd+`|G4mPm`Rbq34h6u~Z*rPA7Df49IJY67d za!zipJV7TWM{wI|<9Ohk z*Wt3~*HL99^!3pQ>p1$ATAIQc=i0W9)is&V{}6yyQ4N#E^LX)^_raOAQPS!C>lx{x zOP_3eZsH}E4uR&>q+?-Ek(*LwoL@EnHTVp9yy1BGFIUgG_y&=IJ#!8o+dGT%Hm<{l zRt3$<0@-vstP_kiQ2as)=g5dqbcybY$d?Y z9dU5$ZFBhSXZK-b+crG+oqvYIk3Ec`lY3DWAAl0OBKmF0QuWofQ}TiQbKXs5brsLZ z!_#rB-F*`2nXb%sxKXZE8!f!*vTf+4k#W~U-u5aaqI(`G`y0#mG@5*wd#3U*ZxZP0 zO+<`EHuHj&!#&dsZ@R1>S5Nd}abZ?gfrV7AK?{erF=FXE0ar$GeHpw%BXxL}ncbCl z8MlUbaWA=jh3l=(I*VS=c_eS>%6Y-tm6xr-cbez&=!1c}ATCtclHM9^Q?@&^CN?e-%Hy zqZj877IE|bS>#GZy2;uWjA~`X)PHtb!kJPi5|O2gz(CXcVP2o6Z=j8x9_)6EExV4 ztb9=-(&8<1w(5SdUgyVIu%Ca{OILiGJ zpw}@3GMGb2-)^YQ94&%tI(FlkRf(6mhS1>=f)KEIKT*w&e&8Gex=9mo_uaRIn{Pir zlSBteq*?X76s_>llEb?M{oEW18#iI=uf7xeuKzLyS5IQ4UZoCV#h)`(A@z`JUUigD zCoXt-^zSj%&ateC#^BlaPCl=!i$)X+@;8X7OGLmw_naMAKV{&+agOglT1B}K4G_#= z>bfB3jJuC4zp`ja>z2b+ASr<2u>pjIlb#}WkTQSgz!Ls#cM~7_sdeZjdvLY3BHc?< z4+ULR87RvX_0+7+ z(uQPs#yen{ucp(zy_@OuJ1Gv5oxRa&;p~ZVy!?{w=jN({Ub|p?Mcot1F;LGMadg$^ZvH3lVxb3dJ zIC0`2HFVYUQe>t-(50V;wY!P$>U;9YK|J@pAHu#v$5GyYFRElf;8L0Obtw&DgwN8c z-P^`#-bvQIG@Uk`9$Iko#686)B0ua!Ia_hykVMoQf^N!FV*%>3>IJP*u?dWvv@s~VU={=*++K6=-&)07xg6Z zApp*7T(`T9w_HAiUf06C$7fJ1_d-9Dx)zrLKRwgOXXR%Z@u|Elwv##zW5}9_i5JhHdzj!*h%qbkGuV9fOEG6ca>>H<{3>pK?3m}9mCJh{4;Fkbh=ln%5Y0o$az?&hxh%)svSB*~23Mr66r1&n z&)6{XA%`;(Z(MJDF6O&H9@=PoQUb zgiM#dV%4tk0cct;p1Ld0YfFZ1MNar{c0bb{$`EX%H%Mm0iGsJi_RNffV<+cOsV>2y zF*Lrl8%tm&8}tm>6-cHKuEgcRVKk2(#*u&fdu+Pu^e=YfuXVU#oc!0mYd0DR6@BnX+d}F(Llkq06HOi;2>;HVNNN}|sBa-PoK%4m- z9{tMKV2r&GrGC-c-teiuI-zJRHEcY8!ysO=$-)P2JPJ<6(L$l@t?FS&H)1kqP?*g! z=|=Q^x-B=W%w&0>QbA-5Ob03@J}%NVbV8q&vKJsy{el z`gk#Rix)pYma;oP@<%x5g)hNud6Z_u`-vUx@VQymgCV<p_7CR!p&(Zi`5yiet+wXgCbzVwt3k9F1~0BJ@1{iA{*|a3#=*zfBMDMEEn> zHU89I)TwwWm$%Hlhvu)YEG{qSEXxhNCq)Q2oJj*G_t@Q!3#2yDGsW*f!NhIHm++bU ztN7r{Hei@~S%w*{@k*Nv@D~k|ahJ4xlG@2x8%rxAWt8@b=pZ%g577X7~)6xU6?6NrW1n=PjA)O>~~k*4W}3~#jD9AmC!xUOY7EKefMzLC89iShMg z=QiqM^JDK5f}%K2n|~h40~)1N1*(v3i4KL+!F#V9!sqW=#O;e!^bd{Fi}gDa z%Vx9WX_hXK#rAEP6hNj;*#8j#7mQw}#~dqqifBc!`H5xB(`1|2>MSRfL?i6`dJ!!{ zG)UdN{c<@kO5X-d$>X#dnApA@_kZS-80M>RPrnF-o?+?w5q)b~Q$ojf)U;HVe|s#s z-ep)$oYCJfDWMZRW#mZ?7ieKl6H6;gIJvZp3MrUkPQs*4EB}bqO&ZC>U&Qd({XZ)re3KLP5LFhlN(e4gGnV6y z7iMA;^LuuK7dN6HHW^eKfu|eNpav1Eny%ZuieJ2N7*n|%?mRq=Lb=CN;J99~O0<|> z)(g)$x^soqD|7SM@VpmbWz|OQ_8U+dA4iLn*_?DA=FoR@rl~s9)+HXr zI^>Dsgr&u%1}+f5HuRRTd9V+C#iHzrt;Q-&%uZwf$!W}2Yw}%~Mxf|JN(aKKF52Dj ziN=c)`?iR8A&7^bPad0Mrj;-Bx}WhGJ}$$n3~xBXyO&!QgC)F!nbSCX)8>(#^om{T zVaA?sTnDG`3Y2MlXIvd>vKf&M%!xCm zzm|MiTJUAElrNievEUgPC0lNv++N$o@so>KSem8h^uE?7*&O>V&ooV-hKa6TC{*@br(#seTvN@rB6ZP`d6RRYfAEL>j zhq1hL9C>1ZoV2zWDcLbrPu`|}v3qOkn3B!oMKkU52G{iYgs#=9uAoU`=*9p2gLv?U z>oK%=7)zu}8HSb4lQ?I|N@U3FUR0U}giz2T**s4dw)B^9-uMvK4fIPNms)iZM~)xD zy$259;OqigVwD!j=7vUOOCTT~uhTKSs=9THpPcK#ZvRQePq$wHWVw8&x z*EkWbF-29jC$JPytSe`l!ed2S3@+&2Yaz|7l;YvXgA4bSlK2|QvO#sAN3A_O54%YNUavTSzSxd@4h@kWbLGeJ{!7vP9}o z4I0H~mY1ki&>$pn^`8u+J2PGDec9o^iB_9BII3Mxf#)D-b4?TwY1nEZSasfRBkIflP z4%KQj0k^V(MX{BgU~}KMhsR1yf?E}1)9n|e6M(mT#Z|DnsQ_Ngv@)w;=WDR;xQM;F z)mvJzO|&d-9g`&tUsruD&0!Tz74YI%I54@~uG%ZsN325G;I3l?APz&qT9ZEao~hEb zaoSKX{?j@A_@6f(M1?E~J-vhBCZjCX0I9d(Ya}lEsF6oVR}jXorNtUfOwZCR-Lf=~ znnpC7wqvn)$t>ft-sY@Lm61PwiD@n?fJoM=O-IvqRHoLLNzksFn!=4A{6n05(S=wT zSdW4JVNaJzlqp1aVQCRtAPVQLVX^i>4DZ5PO&w=}Kt8)tp$Q}|MHcV=Mxq$jrhdT) zmc{%`np;DLHwEbPp&g!%om>s(-RBu^X^i(jMongtS*Bred+mU?T;>5k0eJbx7+rRc zw^s0ei}g;yu(^kMt|+e&xZ?*rWPDMnCJna*>Z$+jiZOiVw&QrT!7(sACN^x*v`sLe zc+N$_5-?0P9wgRj)f|$`=P|diNLlONhO8_uvS?YAwYi$nDLUEvV_?=|kZJE7kJ5MY zcB4zyqHdO8SKDr4!)d4CwvYW!tQ#z$vH2|Y^o^3zDW~4O9nI*kmxe^a=H)`(+h&{0 znzh=hR6v*O-WmwY(0$37Wsm{W*PZEoaAJV>LGJ8Jx#nq;>Yh_F@@Xr zFXEfW7BM_FCG)A%^?~D7Fa0x;&!IrKTUa0kbY>nEdJ(2@+)~(Fk8Ldi+g*iTPR<5B z>o$Li$h(|`YB$pvCe(G{2#^keeqzgJnnC|Eu>XFPFSs05-z0>ke59DeP_f{DTa|1r zB%99@o6l9MWJ=_r$dUwSx?NbZQb_k$mT1bj0xL|Z!s6qxy97QjvLa^PTJ`9a6R&0Y zVp(n=%ZNJ-vq@PRJOuo=3Gl7%0Z#*<$uj_N2wzN*j~PqNM&nZ6=zF6fHm0F;Ue$Rf zyE8RTS*bKntno|dkpfG@>!d&E3ZDNM(xbsVkB>t#u zo(4j!ol}8jw7afTWOWFp`N__oy4r5GI96`0TgrtTveUl}*FtvVV&wl&%M! zelDgp1kgn~xdw`gK-tP$)68nzZdcirR590gr%VK%85JZh6LRl3wnXNwGX4|I&fd2F zI8}yW3(e9E)3kAQp@Kt)kK@>hpE`V6_@#$f9`^(Fhgxm=lS^|q0Eu%x&Xn>z3(sR}vV zc5Du_^#MG8*ur;reGLb9{0yqg({OE%&2#={l}s%vY{#Us=byEkSb_gac(NR&;N-{@ zyN91Kc1f3CmsiQ3bspTCbx0S+`F9B?jJ$M?FQX5VazEZ%ly0~}4xK(ei^0i_Xs$NN zbUOnlKP-68+piz#`QFS?E?JMT6Yy~K};v>QW{I1i$$`V;x zXo9HH^pt$zikmZiFIcXETkV*^4OpyIf?p*2t4x$d9?6%)Bo6BT<1dF7fH&BGbi^=gW5zjmnICWz4W(90=;L-9WXa3v3 z=)j}(T5AX`dzdJNNVRoc$L+Q9`QyxN z{cUsEd7EYC#q02@$1{bFL_yv@lp{10fBx=$xODv}{`_Yy#RtA|2dce8=qdKnOI9l$ z2SB>qF2#%JVg_3$I~Ld9HA93-mcg<>9~Q^bdBbXZB8wUoD(D_U+N_Q{Q!3 z;uB2GzUE3}itcH|}MJ#}`Pz$&tCxEDky!YAn@% z%V33GGG!uq;a&|?qK@_?^xkN&D@{L5e%yOv9!C}{_`s{5i@*Bzoj9=E^kxaApSL>n z28T(OR<9>SiFCp+J=2I8>5c;}>&j^DK$7Se~FwbSSQ(5bvX#@mT=%xYblQvaVxG{1S3Txs>)^1Gzs6RlX-KnXSI0Y=I@Pe z9KMCu9n)#qWw+WI7g~iOZ60X^2D+sLe+=NBS;b>{MXpi8nyfUc7Vv~9v_$o`&BluZ zxi7YAjpw+P{N;w24d6WSNja|EEMRzqjVT~4EC@!y#2;UG7vB2(v#@D+8UJ+uVVa~` zM_PK|ahUzg=w()0>xU?!wiMIR?B*d+*_q!n2S_><)JGj(|TEQ{-9#Gl;8g z44FCO0XEP&VK17mrem>dLV{*vnc|9RAlB0FAiem%{lP={nH?MO2QS)z5AS*aIWk)o z2@KrTFIv{JXEHtpdLUc2)^vz&?wL6s5Wmi)Z0@43i@l&7ngp$2sZt@J zSJ3dM`o%IiozHr_3dxZ!=x$;|Egq(gj|7RjYDGJL8nQ*oag*A9a&V=1;rPu1WBvEp z&6ef1+yW`5BV2qd8|(=cptEf867ZbavFfUwBnEZ^*%tlB5tw|Pj3%krsxe~!b7S6k zlecM+D&8neFAtL};9VD&he($TXkh?5f9eu^{JZyHw$X$BzF`Rr&a;$3-Hc~D zrq+o#Je%!1S$G0>3Qc}*4;=3!aihgNdh$7s2Ze0Dx=bKn#Y(*?$w0{FxzKkgQhhvU zET#-dZP-4nho`jqLuzm#Gmm%KkQ?@pjT~;d;O5Sp+Sk8%{AQXRpLgnwKD*W$|I#FM|VAl|9t7`xOLAF+&X;_g`r8BNi1mHUbDp$_5LjJ)r({q z(0pY>ErVsq{b{xru>qS4KmK6?x>%LZsnfO^#O4I@1)AoUZn!?1CuFlkP~7$WTe1|0 z(=-yx2h~a0NTel&xzPd%Q7CL0vx^&tug{P69d;^qjyGC4nqwbgZA6wQBB;#nwT6u* z9R)zQJld(@#~MslAsNqTRvH&JS85lSO}ilcVeE1*$=|&a^eTfR+|olGW`l*~K{}2+ zfx{v5Lq!KtL!BU%@!}13feH62KbqiSbDud z1--}SE_!H!O?W7layg%CTBueQF;61P0AfI$zlzwSMQ&4Jgv;dO)n@T~C->@SM(nPs zKIqHe-oA{g!Wy+X4=gQWyNyZ%e6SC>bGBk)WDpf<-BPK(y|Gj~Xjo>EGjz@7VK`NJ z+VN+h{1A46dV=BC;wSUCf*e}8Z5Y;)-LyB=R#slhD~5vAzb3cFhRH0>s!Se|W_5wA+{E}jtEi_v+E4yI=wMh|tU$#Nb; zoPad9h*d_`jh<0@VS{o}u$}$eQf=EnZ*!wCnIuv3#yfmkn~ z?a!_%fDb00vSj#E>jVrl`LwLgwHvJi?W8nGDxr~)ZQz|!J2gioSaMsG=#h(|s1r1D7OVm4z9(v?J=*(Qd8_iT%_?7@N6q7j2uTIj6=umqhfwDp z0eCx6en%W6t~>#OtS$?#iBf&O_LA1(%5#jSotF${2{zA5rVaoQ-|t0(94@xfsK5{# zuX7_|VhmmsL(I=K224MOdjJrklQ0wr>xN5gDnOSPKGwzpa$?&GG16G1+!lJ^7W?7m zNtd9`K=Kbgm?d|pjez894_v9bbkZWdg5*i@DNj@Uk-lKauRgnSDPoh-H|0lhNnfFK zLirSq+g7e17p??s&K2+iiNQo_&|2N#j$u9($YfeWo5pCb3gb#tQ?*} z&skfk!nXXdnzLF@`;R4#g;T5}jt7gZG+T97d&_U^9cb>VEj8~Tw(DS;NpCCjj~bFCfxqR9v+4U$+^hz%}SoLl-8tk$Oj+1w^sx@lV40Xglxs5z#WU^iEh zALv1OxQ}qcL#&IyQ-1aOXYe@MyC#%AA^+JV*EelqtX4z1BnYua@T$-Ui}X*C#4WMG zrzQ45AwaTRLGFLT{7pNhtjprylsgSea1&1GL@a|7=dSDRwxq^^Mb!Mwwsg|5g%3)FDsNgBaV^^6MNEwrP@^aC!+(am6`i@&sXF;l6kcbakKdOH05{su*eAgM&Z8AK6 zbNLl-V)GV>F6b{IziAw$pu)z)+bMs2#%n`eWy7M2dP?Y$fO zey6dt{4silk;f(1$3pu~P%IX8GJMy8Fl<%{@hgo=>x%l~%I~q&+LT4wrZAJ)q_hZ4 zg2@Kqi1}i~XeAvLsbA5>P!{#Y6o=TxI(HkK-G{*FMR9*S2+ny#`q4koGGF?U{2w1| zQh_$*mLB1jIzDxaEkj)9dVWpJ+il<5z1EWXE1iRice;3^Ns2&J- zOkYEm>;$U(kW}CeO}^k`X)M&2+y;qL7U>k@11L`p%6hwGd2z)gR@NxbvoEQjPk2N~ zxn3x>Z>0j)kUm_J|)z*n+p}I`rM!$e50twO4B~jB(P!R%o$Qd z2P!j*Z?YFF&$pV*T+TANoiot1#Ijh!-}9ZvUlP**T@A5hEGeua)`|iw^inKRpq!&8 z!DpAi^Em)Kq2LAfW*)BtOD<7M4%I9%Bm|=dJa94QgVq-jnAbU^Xk!?@h+`;^X+&5I zZo;Ey5NsJK|G1qCu z(kEFx-bVf*hu*V5lTXyIAspDo3Wjm8;x^ayy{pt){Xf-})?rf6OWg`Maj(hlL-!($ zD|9&Xc&pajwsLs!&)I5q8(A5+up+d?)(xiRH?8Y$n{7nnY!+|lT! zOBcU44?31o??9J#>jY|2`mGHk=o#;qYg?0So}P14K%cyI8yP-KqLWG)myU1Fx{}c| zv+6GPlzw?=#M-qoTl>0^ClQCEtDtjWjFeS>iBlp(fY0hK;*FW^60ui#ZqM|`bJhBm z5~*Hwimv60Om0TcIb!m-0u-$)bl3?3)?^v?4h}r8;nac%zcq!`fc5myEZ=st9@+;c zncgeAQ`^PA+hFLPKciBC=b@$}_#TEVCfq^;h+qSy3^1qqzOG~H^NKfO_-!LrO_-x( zH$QXGn;a4%pkVY2^zuxSfs76i9wrBB8f7Y@J;v~I-JLsXUNy3*chlnZ^2aPQ zH!00qB6K<1+O3UGAmxR!=Etnm#1aEHGj%{w&X>5yJyZJR*vbGD2zq}d~0>Pak?)@6nQU{B5sUr-864B0?elO=$Z z!QGr@{Bq}?2}VqYmXiRSa!;Nvg(a@(K&QE5O!P`UU+B9JeU-TiawRg1OLUM>bm6h< zLX>pKMqaJkC{6UEe93l{&)p2OmnPEcwiI2~7CdA}(qX5uGLbbI#k120Wwu(%p?Az; zwTCM`Y;fcwIr)`M-t0`j3OGSVeGhwfO369A)GO5^mcz{C*HXaHHu&*X0siMr86$Ixmg zPUefQarG9u(T^F>b}W_olOt8Y=%Q~DLpCZ+n&Zf0{DKX*dtP=+@nVoxP)ltu%5k8f`5&M&h@9u)=?2 z1suaII7jRg_PgwZM}KkHZMw&)q+;KoC%S~oy%4>G*szzVmkQ*>G1D=63TUd*n|x-j zc~F1I7fA`|=F}wI{$4ouJwnr{p0jAkrUC78RpE=uNbYpyd1#6@FcWoT@$$l|cx)Vw z8m!%m2|7nmgTMvZNZcoC7Mn&gCzr#(rV(u0GJ@WsCGF@AP5(Q7(zC`a?4A`ee4@{* zv(e1EBT^#_iyw1M+KgFaWbg^m42|A{4czNh!s$EK_s7f)0^L&C)r_Z(?5 zLU+P`l!A$G*|1~wG=HZ6d%sh4XDrJo($u;)jj!qEJUR4c1TFBBVApgEl|^G^sVDJD zsp5f9*ib4X|ANcpoB(gsJ;$@~ehhj`Oi)s?H~Mw~rsNAIbQD`R{E^MSq9-}7dpWA@ zJZ@K)|B_hJsM0g_l`!?3ZMgVlJFtEGnA~5pK|tp`t^qVjDLj)vZ|Te#DN4?w;;0R} z_5{cXF&Up{--_7|D(m`;QKydSJ$T{Z#=-a5u5*y-7Pz`=n5eD$Eo{^57c?4Qyl##h-l@*tRWbF0FV=-eX4Mq&%(u zDV>2sf1Jvv)-KVR!#E!NAA1gAI<(1j$VU3H;YDZR!WZwrrj2A)q|VxGIC4?CERCgW z>Xq!bE&T~m{@lr&oNP+l*wxc^9XNW9tij@m4yMCVD_Q8=wvIdG(EV}Sid7zsoZn?hctwg4$mGnio+A|{9ahts0fd}`-H#V3Dnt9)%+M; zS3!yx$XQg7Uv{FFYWcDF=pg#?y|2vqFI@V=GjG3R;f*LjKDuo^rbx_LZM0C`vtP>l zEN6N9Q_`O_amtlYt~^KZrSPC~>I|z9_{xa*Xr|Tkol(vW%lm+?5%|{x=YfBXB^6BG za$ybjqj1_f^qsi@XKo&lPHc`Ht;G!;E#gh8yr-z`gZC$N*NI*eN0%J=joCy4BJpxG z*AvG~xA%OyjM#e%>KEe%mKf}q!VBItxl{2-o*8>9ZmqZPWrO4VlZ*aJU}!5 z+z39xC6*Y9QH3Tt^FsqDZQqK*h6(vZ!edb`gr=V@gH-Pv3qR<~673do4GZfSFu$5k z$nx`57l&6|e~~vw_n_ClBu(FVoPbv<&X@{*s%_pt>1flPEftNaZT3ya_O1R|u4HYb zc4^5a6Q&`y$tE401R{gmt(@6%#UAm@Y&IEhlnW*Ag9sZwIWto}d1(0f{4t|Ax*;62 zf*z)VI}Lb-6szk1ANJhD>>^X!N@e?aU{D(_q3-*PF6DCh$#J<|m8{cfpNYXTndroa zdFiqvc5$U+N6bRfpCewp03*qZO`4QhzUv{Z+;kIa58aRE@;p$;fzcli8O@L)lIJ_) zgWq=?3xRJ~KHz=7c>!|y@n0sr25EkSI$IgJ@d*?*ZbV_z2C|p;$`wO~>-iwbrt*Kq z4i{5B1_o((cl>n#!K`x<)GE6N@#=BWVtD9eOO~l`Y?e4=`fK5RGSV|OnGzS`C#qC; zfcGNZJn1s?4yJ1+Uw0lmHob4<*WA3Zkw!neE5Kj&nbpbN$M+wfs4n5S_^wj94=lzK zEQ8^rxHy9=fL0zR>JTjcFkw5fM4JVGR`27VCYUMO!Nvza^EL%NXQF^*+uQem3pt*E zDNJ^*1icS_AM|qJv|wz@6#Mr{HnES-qxIk(R33Z?jorJ^I&lV?ryV#(+@nMv2fqCazd99CbSCn^b$lQl_vN6FycB9Z{;vi~CZ z<`uA!I&WXm2uYiP;Q`0rxk0Mre9Ibm3l4eEoij>{0(B#y$da@8_0Vb{`)obWO{Fp1NqB>cwY=626Y$f z-nCo_=A{>*|Am*r>J>W#0Lvr;FPHy57Mv4 zTRkKeI6J~oOXvxeikx9I-N^bMb>qm*Ik+aK5e_ZeID>5OmcM0B5?`@j75M6}|B5#D zn>bN*J>@RejtMbGOEN5-I`iG8vb0UZvy!stPpoZjP{$wG&Wx2iX=eT0;V%sKRsYM} zOl==$dBND3_Ij&Tt-nMpFs$1xPnm)`RI0b;iCU>(57K5;mqT@=V#zcrRmI{mT1nFZ z;6~R&_GhB;!M2cIFKS zdXTf|R~(AZ+H4}d;P7%oNL`38smwxVH;CiY6W z)^E1{Vef&;|Fw#RsVvixa2MFhTdj;Pkp%SG0@K=SqvdA7xh5m@tpg-9p6EJLoxglm zq@i#Bk{wzOCAd6DhM*3aAHmEhlOHM;hKywzHuullI6}-?x4HaEw-NSR-zF`9?RvW$ zglhn}59F{eEb2&z&JornY3hqJsCq1xk?o%K#1XXxmU(39`P|l;Tm! zX5LL;9gdYat+g{Ff6!*#!i^INxo6~!{<)@m{4wj-&Ny@6L$w-zjOUnE+%PO==7rM{ zi^*g00ajnjh+R@4#TF5}r_0W2X=S7dS(xebDz^y%?OzqZcx0|6O>qI})Vl`hgt#Ka zh8EG^F#`DB`4$#xp2wwSq@Ph;A;{ykQI3_mFtuJR6sy zHV)mwFFpU9p0Clv>@hXwc%xt$ttQ#N#QMzS#?qSCtlTvDnz=S@c$|7_uBkcFjj4UY zryXQcoXQ3b?<#OATCe%rma* zs;RJolAdWhM*=u8UlLvMEcy$RF~nqZB{WGpJxa_izF8#X@PZ|LOxu{67QNL+CS>sM1r;8xI z5HUwG`6|)(T*bk|Gq$vP2<188~Y+hjslHHVo## z6AL@k(IqC@B-%859Sxu?pv|69o28O>O4D1{2(klkdsxW4?BT>Jx{cEc*T)yE`Vai zT8rx*2dRAa<@b5xwy&Pj$3#i0z~ z%MpeCRvT{Y#WM}F>%bnUB|@Z0bCJ@HN>mzh$Og1pOhy)MU~5T?@F7|7uEev^Pql|( zL$7N*dLPa{|7`1xhUE&plMHWI&i;i8o_pT8XjOzi^$PT6L&cmJ^#XK!;xM!kW7PA^ z-k#CeDf1{oQy(;UFb(f(6r4w8auskK`l`ZP{Uc^NMT1V14V*ca!}@+pDzz<#hjR@9 z!-~n)Nt!Hbxruuy_4G>CcLv>=8pKym$m%I|kjT2qBGCniNq&ZU?jMIVr4k)Wj5G>) zBw1YB54srvbmv`UNoQq|Frq+Gdd^Q7SlaKpTZ-lfESDYUcEd1)5dY}xB3`&{1g)V7 zm@|tsE184|loDCCfU8ZPuA=@t8ItA2v&Qky(tV3*yHorQJaLgHQ+m`Y7bQ>w_K=dd zeJD?CZpj%>Vb6Bl5Eco6g!>L#;uD)lJwUqESfY+WZ^&*Zv5GfmB7XnS4aEaao>)Q+#{4L;9Ae!%7`NR4Ja zGsHCEU@?b(y6-st_?4Gn7CmrJ9H$vWQ+Kbn6^Tc1bQ4&z;yih!eaj^Q!Zj_&m106h z^W%7iZXu#Yg9$9GBYXAP<2h{Tx1{+pSRNWo`=|aC&Dw&G88*b>1LV1HBZL zN+&wuV9`_VJwSV=M7{u_a4<@gh-btS9)f!agl5E&Vk8eCCLSGe~R^Y%bz$Hv`~_ zTE*jlGBvJ|AOarypo9LYyU(RdmPI6^h^tN|GlsT!7v>S zBgI2;eq!+=H0iU-(S=l!WIfcE&eD0sbBYaX`-_aN%%gOs+dRuaQ_LZ9IjkLBuHg1# zt9bY8UPKlEx^(ogx5rDy#{q(p;}y!N0n}@{OT0~5hO~f^IOCd%B`O)gH9jtgTZ;)8 z@%gV!#Ny|#%VSEiIg{Y`REy}d0dcUa@o{^1u;-bGaKm+^$?g#cy{>zwf~XSJcL$9+ zUMKWsPeW$+@6U|LJQ;Qj=1sDR0sP1^mva;;M8(WI@n+Pva+ZvbjPz~dV^v|gG^{U$oRVntQ`X^vn7ZQgm+F3d(9s<{CAp6GfA>)}Tg}=~J z1vqUG=Ns~CY6_r=rf@1+#V2pygOC2gRWOIvVd>Gmo?L1KOW=5_0#O+(qb41Ai$MW` znw)2_o~9Eh-H>NgK}-gTF-?eY+sSNr$@&6Kv0IW2n~v`b10FZ!g)@~rii7gUcanpd3uQ5|CqSOjH+A`0M!KwQy1b#_+X-gMI}#*OCeYKMJ#2CDO=RxNygr5m z8;Si+-h2H$c;Cw}!vDUtACErz2u3%L!zlI2YvG%Z*9IzswtonvD+Xw1iR?UHrvLTv zc=?{IAyg$0%7X^|Kq!yGCw`*Opg#*HA)e-;WW4JG+F%LUpRsuNX7P$~HOfyYKqRL8 zmuno4E;MDDoWYeXW`ddpGp+F%*Qn$2@JGn&O=9!2NvBvxowMHZ70pNOqe6G2{zuJhOf zihqn)Nsjyo0V4%8hY{-HbvkbPK$n1K{=S4sON9@hV5ZiyS@T%ytBfTkwS@U{dey-U z{Ru-(E+~U5pi|m8{_8z=V8szkEX1k?y`2rzNzWY3OEai=d4|DKfDY;yADN;wA_%Yx zaqW8tUGx=#E&HH<6>3}Pu4Tm~<2#@=sVk?Bv!ZohiO~c>46Aiu$0YD*otl7ix!Zp@ zlt+>TmoIR%RK%xle?PL^lkjkt~7_X3mKcqNUjSEsF2XkoT^+aS+ z>Vc|9M6ompN%Fag7m~c&UpA#EBc92#M+abMiWMUQi;)Bm0=YPf6C1IWgij8c0)(IX zy~mn3NnjU%v<##w8R_LATvdTko{MtDf|Y6$7@@kqXiEWSj22`ko0Zp6VJ^~UI=Tc84I=1!a?M*@~k7{;lcSCh;Oybab9g`0xBT?5;O zfRz@B^PF>EJ@diGc>+kBY`sN%|G+WqALzq}e&K5T(U)$5z2_kMwr_-M2Z#)i&Xo2_ zvbP@>61mTq;jfxSFXM#sy~?P+h=TgWdJP@A`EU zfKmNhSmInn6im;(_QZ-K8C|Zb7vh4&e11;o7wTI|#Up%9;r1)O7QKZ=B4N811D4}> zUlTNu?tm)8$HW@-m_i@P><1Qrn~!k}6mXi8Kd66tNCo2_v!=8>;?f-a+1%i}RY5Rz3*cvzC)fAK_~6w)H52J+G!L5MKo zdrwk?F}#i%Q$h{D-iA_lh3Um8Ggt(Ea2UA#qz>#XRo}J%_Rq7h$5eD{#37XgSt=f} z7F2&_&=N)aK)&lhH+~QVhV^<=~5N|Lk{DA_^mte?iZbpf4{FE z_ddKE6Pw4t%DvtmE^+z|%Sy4e!q6TdB9`X@kg4yV0?BWt`iWzw0k%9>U+?=xuEK~$ zf&yJXE|B5nckcW$m|PUXq>WxI3OTvTWqPq}HD@L27aL|Z-Z8;Q=2x>OEG`tcrQgJc zUPH?JHUYn3bGZ+V*AaQtS%FB@LYm#d;>Tj*?D#V9)yHVm$a$SLA$(>A)+SjN^Xpbm zoLWqGfp;p2P8Vhjyqv(^vc#N&a1Ei?R^+W8ROIf2Tvc0RrAEN_Saq~q#GmfE7r%Vb znK*5ly=W?M!4D^xi;4Ms1K@a7)mw>)f1HM7B`eH+Tg**f3 zI;64oU{5`^f1qoUWH~XyZ_|--$UzXq%J(v15Tys^p*R zeUV$niC+PFcw2XPB1+sTEH0LLKwl)F-*F6>CX;AyUTsUIHFfBT5~RVaTxXi+PMxy! zD8Q6N5hlW}5=mBwFu@qIap7O%EaRA7YJJ7RyMK=68^{Fv@S^;}sCdy|HL;T$Lxc4r zWUqRi_qlatd%37?O5mZKTqODC2u)!fpucxta|yor=uy~n3n-2Zcsv`hZcy>CvcXv# zNG#R8S)x(Xpyx`fa^>L#9E6*Q=+XmZN^t`*#us*j2F($33$bOc>fnJH8~YYo(z;{H zeU;)JGOVX^&qQ^?V_^;zgWU+R%(R(k$W+4!Kl+_+nVRehi7qB|~*Q8*Nk5!ymJd2aJJ81wmRuC=`alm@Tp(kG z9_54d3L zEDBlIXUbkE7J~#EEJ<<2-*ic^xX13Uf9(2<@3Ffn*`0^`2?uh#Sc@u#sNHj z0cxL{Nm(zHAm6X*h`UhR1HFYl@BmmspI#r zJQurmAHz)#?7_M%G&9@NBgLa`0Pj5@)7*%~8$-E!B+f)zUU(u4lizL?;1-LHUV284 zWPD-mI6~&cJp}Y+$J^C_`JzqGh)KW)ol9qV5J5_C)W8!2@U4TU^v7w)FU%`qh`+0t z6jNOIfcJnezEmzn8twx>5M{)l4|KuWr5wjBDb5eik`lebsqX%)c&eSEa}95xP4ZOY zB#2{&Z8}SgnG@+*8^(|Fspkwx0AIGO|LkH^t5)+kd!2!oT}~qD3UL2%dbec{?6&Cx z-o$rf)!g_;cYVU@>;Fxs)nH=xT+MU(Aqa)tO z378_rWIPa4TPyhjSnL%lfcF6#0N(!-a=iF!QHzZCkPtyEcyQU3_PT)0-9Q9l5pzU< zk9SUW)>W{%c%+^@qe+b%CTTWQbTYXmwNh)wBWEWTfF0h(OlI)wgWn3`g3dt4y%v+J zto9OUXdu$2TUcJC7K>UQYdwFq}Pym$w& zX*0>|#OfzWZqF5cpbNlT-Y>!6#;9ta|GbGeyun%b-*3J(KQwr$+iIpZvWYQ1*Tngi zuh4w>+2g}_$<}rFAEeBV(#%JB{kX5pqIyU*qvAOVV2@H<1ORHbv@PQtRG$Oz2fmtZ1 z0k|XOmCK2(GEx4_vatEP^a44Zb2%5l0gdRv5R)7sbZc^ym7l9j(HmJs`bTH z#TuIOCnmCq!uOH@x^Le5HdBwqk=(E(!NaL`N;Dbt$+J7fsWN*!j_GCkcAbF5D;g7v zeE%+&31fO58wVK9m?V6Y(td0Xn6G;x3^%<$*YdzFfG_noZyWzxQdPd>4xYR7Qq~&z z-LL&ed2-8ZNQn*1)P9KAEA_B}1t(0(NinqXZc=7Hed~ibd}1Es+s8c{QScqr)Ubu9 z17w0eszqd$jM&;^_$1(&cP#+Ap^7tsxWZzVp6EQNpI;F{@g%yu{LHen^(Q4TmD%OF zFV+OR1BbFX0lr8*fXwokUUcy2v_pE3OJa=c?KczbChWIuRDK$)@ooqG3-a5zU5983 z_GDc0c1mU~*b|*V1$2r8gJZ&pOB$(7m>DkRF-h~A6aC($1)4owAX99S6jMVmyAbs( z58ST8?7<(swmY=Va@7qt5Yu06kN@6R-GDP?nxCQS_OAyer7Ia`uLkLh;?HyQ;Zzz3jD z@VgGZO!KBv;6y5%D%ev%PF6>WNJz8LjRf)^0(y&DAy2~iIvV=M%ANzq zI21jGH+`^+KkomD?a%|37ho6Xrhy-50WSmRa+ZDF+rM@(`o`|CiUo)4$7Xz`Nfz73 zm0H;w>kYj8v`rYNUivrRyAK=I_0!DkpfX7nZ_VWJmIeAG;Jw+>0Pr5@rQ1L#)*$+2 zaj^zWwbc0cWa){gpgv-?)Q-_Swva5}bQHPWPipWu!xu;nr-@G-BMZ?Z(>4~Wt^~f^ zP}@~3Gm7al8ZF{w$D2h5_QYFZ*_Xn{%1RGtz|Jynrw6~D-C68LT-woXBTuuWc}(>h z(if;jlC}6G*TRbTafo8U1G-ppE&hyLdxj5=TMc|V8}NP*Cd->|zBb=9CKd}rLo^dB zJQG+)kjEa_e_>Us`KEzB{M^}F@cwVyhM~S9dZtFC$7S$Ei+JNO1oApkwBh~J8SqR| zU_Eh%$CTDMyXyguG&T9daGgY&tG5-2eGG6ULC@txQV+e1s#p+0Y<^(TGxrKHCS>!# zD&t1>`9Smu?C;~V|HQqns`Q&VL$mThWm%U8| zR%k+Paap*CcoS~H3N85^3Kj5{2JluK>|!QwrjFNj1iT0W^w++DIb(1C#{H#<4d=MF zuxxW9c&VwjNsI#OO&sZa&+y-_JP&{V?K`|RrCUbifP&ae4vW9gWb4KNubL+#TRact zc!Wx8*b!J>rI z-Fy?1P=U3^Q(_Uad|=fHbR&i&Sk#8s16}z^o#^_9j_G6f$|y7QT+N?IC$Qj<5<1dT z#AJ`h=FKLtIe~nkA~yw=9-qOW8sI~$Q58VX)N% zOa6|O+215(_P4+Mneyb;U*@h@Vd-sBsasH+G*>3$7V1s>_ZM7}4eRy{Uf6>M$>n?w2BnW&cldCq5f!~YFr_<-Sg z0Cvw7&kF@S^rdy|+^zvHLcsLHzw;lzP#oIuuZGEN_{yw~?X%+LaLt4_Vhz81@tHWW zSizU?KY$IJN5RTP@5|pYbDzFdV;?j~GCcEUT0?Ma7(Pgs1ba-L58rSAdXPGZ0l2kV}9EHhDKPTY7SQ!0_Q3tdQkX3>{TPb0NhS ziF~YMSz4(nGYyxPXCa%Hh|MQ`HW%O#mKFi>O2c>3Q+H3$bTIW?%J60+!wbNR4#1Lt z57^z3M1T8Nwy`U8MRpye>2hXv>FO+2Y`JhXrZ;ue}HF06x&5rg9x;Gv&@3Ki7^ z;Gv2&N?yNxSpw`?K#o;25f>b2f!%GK29V;}Y_T4i73iIMY%Z1Y>-O*^j<-pfYph zR%VFFB<=<^4S=XVO7uyucx-{dxLmK{!#}(q|KsJC!L*y0KfFjiKPlQI0#A!jdY?{~ zxp5C`bC&M7OeeKvmKp!$@fv!)G?gbCy~&Q&A$dBflFnb>tIvXrESc#%rJ7`ON9>r~ zgH3}&xNNeF(*_JUG%<9Lru_FEC%vs2x3+|TJdPLjwZ`Jrv^-HpvOJQadJ4$xeXMyl zZt%d4jOSZZ2;32dfBQfFqBOekos2oQbaYUvoVtn6Sjixr&uE>4McTZQb zZu0`!QDp-bqqqbK#X1Y~86Hq( zS_9LgtC}RCx5Fp?bobQt4{c{=+4-10d7E@To1-9C!3j%?VDoz2WAmk|=Z9{Y`unBW zJgbi@=OV3Ocxj=@d*Y1gTWREkh9}b4BrsS9j^bsvz6jruxAN@Xk00?E7wPR88f z-}%DJ^8@R@VdX8G%oSGb$&h3^HBLEaVxyoMUU&9(*krf=+ylq3Y10ru!z0|_^U=Nx zABr?Ave>Ysx1?`w3@kNCzz4^o+`!eADPj#+3gBEh&*WjPNQ1~tSdrb6$7Ue*K>1CU zue+&wnt@aul&$-JoS#}``u+{U_amKYEpI~@1P+F}>h9}+Fac!87 z&epd){L{t5P?$Xkr!2##0u?M+etWrpdgj9~VfERQ(^MOmhaXChD$P@8%3g}xQw4hR z79O6R$LAk9h(CMT`BRg>z!((@~A<~1rdK0eDO!8t{BuTb&7W?T12Cr@**fn>F zWM>wu57Sg6x<5<&1!;oPqF)_^wV>`I-kSw=(IAtTY4l=K{~#_ID`9gFLyKmP4;*oD z;G|9Zm*auZfU*rZPs`aHDM2=Njkl4>gY>~Mhx(NlSGXI@9Csi1kLNJ8L&L!RvNED8n#y$EDmUdZ^RQ}{43#az~TtalYxtH%v1@) zSU%41(Lr{HOs9>-XT15KmFFFzh?I@_Iyn$s8=%^X!m?iLI^xAN8k3P-_H+E zeu$V^d=lHzkE|T+DkrWBW%jq8a}Mr4JdImsZLFK>A+wW(=&RR(NiwjpM`p2_*aPB}l^C)HU# zYhefv0CW+aRKUwX%B-l+-QWLu&!S<@6^BQ_?Pl8JQjxi{Mgb9DZQ0m5G=QJlz78L} zWgjM|#=*)=?nR;neBl4C0zI|biN(#4KHvj}N&{VenchL{J@VM#j`U1x!a*$NG?r9c z1F=TY4YJ-^hmOFMwv=p6cDx>g*t~3E*f)Z$tlE;z#a{WAd`pG`>Nd~nOr9-<;;Qe^ojxCot6fvC7 zW1QH$lou=hiOp9VWEr#NUOa{t+yMc2Pt2iji^NT1dHtqA2BXD-v?AwVEX`Nz%gZM} z%}c9)eCTcGFLW!qWQ89Y;6(^LE{EUx@1HG?ZFnPhTam|QEG17@Fs0}UC#@EK|H=#S zx%>9vq&bA1VXu`$mk;)z34Lb*d%P;g2b}_{3=e2s3NjgwNQ{uKC^n01kib#Yf(Oy zuBUR$y{wYW8+C^*%+5SebC%wI^!LxY!Dn-vD#)R~<&P$WO#jx;y*WR$@&AwlB9&S1 zD%S#B1RdiGCKB6%y!pa2aBzMZyXGy=f@2zShY$k zfP|GMCdY>FJt@uvD8`r34o;hCzOX1Ejt>>hUyPX5M+J#jy=sG`LS=p)%&u(?=N z;gEG@g+RVUpgW;{i<0_$J)&uPZb zwrQHX2S2}KBmUQ2M=`u^0~)pc>?NF)Gq)?@bYP03Dc~E~nFg-?Q86pZg1DmPi zFjLC%gTc5V|6t6|&ac#}bAK_w`ag2tJ0~ko2Ak``j}`DDgwAJg`{M1T(Wy(}$O-J& z3~(goWGS{@5PMvT-0yhK+4!5g4gf=&U=P`HrXpCpEi%P+D=-3pvy{UaZ)=WZ3Nc1C ziOKIs*x?niCKOwIz$Zl-)t4p!yb3pAoDiEnv^dG;tV9z;41;;^la?#1H7wU^KASUd zq|0R7;91%LJHgIi`fKTOMUY=@;JKWEN~Ot`=Z=2A?kvCK*dJba_mj=$y6|HMya)m4 zM}G6#zb=ez_-zo?Gexcsf}ZW;X+(oBRvTo&*@5rwJC3~=M}D$^W|4+*u_57Bn)~FD|N6Yz zkBZH8;VA)l5rRpopvwFX|aX##!J=HH&RkRKXH zbA(KnVlku(Wv11$+{mm<1+|XRSz-u}?yTNlx-QoLb4@Ocd63K&?YiKhhE0gXwL$7Wg63%MiN-P?207iVNT z64B`K^91w}Ge>OBU{S&OSCkTE*8Y* zmT(g!bK>+|qqX$zzOC;6dGHPAG=H3It_x3`x8xHMv zq@eF3r?}Gv-gRE^BN5?WT+3S~4gWU2vgZI=)dgJO96;Z(hfqFHMbC0xep%eHBJV|& zyrIOUeG((aPHouT^U7 z#F2epnLfIE>+b(LHG1$}XZ`)_A3ED};1Z1f6al*kPc4R5LLk=<{l@3MTOQwdHFq7K zkAu)&wwJHRX~}O+air3+xm{ z6i?YSg8qT_OrE~3m}R*|x`R#f;Nr~T=~k=q``cQx|GI1E)%H`3&2`}^3wRMi3(jx+ z>mL_JrrsZTT#9SDiifYpZ*JFV`JnfI>CYk1x9G1-viwk?2(wUzT^@%su!&^+F*N#x zf=iN=gug4rp3v7kCfY=IWD$xIfJbPS^x{0vPC3y;3baL5*nHDKnPl-^*Fo8|QOudL zqg3lvtccYWLN+%|r~p@dG1DSTqHgU#9M*~f0SW&0X?$MP4kez$G+omw7^_Q*?(*W{ zFBpdXdk5ch>2dDQg0iPD$kp(a2D}J?GCTUa|Nf#}d1Mz8d*N^%fj%bIcp-SG6yWWq ze@wrvI_zdm%*xOVq}b=ZhQuF zX6MLlImyhr{F<`WPD3Czh0{5+XmaSt5!+pP$ANd9`^BhFJv~6KhNnE>We_ZK?X|}G zuTBs0_2hUGK%FsXKlc*I_p3J2AaFDU=#1gvezYu9+(u)kdwgID7D) zow@z*I`)^Zo_!*HT7F!?!qXvm4eXr0bLY~ooi8*d-*x?dGhf=oTdmMlT;a1s-e_x( zNc9TRh8A_2n-ZUTClC_rS63IXI#ZP$M#|wdab=RJEk~ft7fSLkmoLH0lSpJ0z^puh z-hv~XLg1M@#g?h+pOn~zeVo!6#F{3RCGrb!TLSRH+5%O7hRy`SALD{2eFwX7Vo$^N;xvaoMydfz){{`^JPNszO1)%WnU4o?q;SHoN0 zlEbGy)f)f3uY57zKmJ;`S#g2r+xM!NBfmFmd$POt+Z4X|9@{Iwyd_xPV|v~qCT=z) z`->65+YQP`i|JobUEfIb3zLH=42 z_yzf=iZq>M_|za(kE}g zb$_Z|Jf1vN(eO-6Y8j?$kr-8PHR?x?KJpg_@BQAu-gljT-ibfE{(GM2!k*G5#U~;> zJpnJm&YeP(;j=&0dvE^e?vg7$21~ZGlpG)8Pyr-Iv@M8?OM)#XNo≧V(-#w8h6v zu02%iq;5VK+uDNbaIEWqJkbf1a-^8fToRKwFZN)5{@9%d_ucaRhkkdm=hz=#@`v*y zx2<|*?0ia14n3LS=?nNEyx|SbfuHVao%oAu3U);>bsQ zH(dB^-l+%vgoI}f;6=EWm>xTgnTg&1*1u=*^zynhb~7$Mt~y^l|d0%lvAzTuYy=FrblVo$^1&X zunz!9>75&v#l;NmYIS+`$YXc?()iN8+@bee@S3GhKXfo;^PfOV%i{^pY`}{kKp|xN z*T3Fe{g0i$yZ8@pW~~GFe#mXq4Mt!R>=|KKMY|#yq=bZw5kcNBIOVD2`jEIN*qmlw zTdvFJW)5F_WcQ6zd;eg^1hM(Q?85haa6ilDry8D~t_6=L&tykm7fKF3HJgP`p=~Qq)UNtLd%!L zw;mYm#(`RG^}kN{-t;A}o+3O8?k6hzg zWX9)>Dj4BSaOsYl2wM%GiM%Ge2&+ z_5Xd~qd&X&li<_x;|f2yfRBani>m@)Vim}h$d%vBdPlBgJtG@jT{inVy-x z16j!Qadu~>0K4UZUU*uHrF>?t#b6vU4D*{-q4%>r>#DaM*!e5j>3C{vP9Rj!X z=)8Ag3=Ou~>?@zgi~VQ9EN*4_!a8o|hDjXiK`xg^u0WW!Xp+-vFqU6orZLY-{YMR$ z`v~X{89hA@6{a>HnE&|yw;aD+IIHw*_z{HvAB<75TR*H>B>(^b07*qoM6N<$f?VEg AS^xk5 literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv@3x.png b/DashWallet/Resources/AppAssets.xcassets/Illustration/csv-export-large.imageset/export.csv@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..42e6fe7dc0b72fde053c662225c13b0cb5af01e6 GIT binary patch literal 66817 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 baJc^l7*m}y?LMgT00000NkvXXu0mjfQaPrk literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/Contents.json new file mode 100644 index 000000000..acfe427cd --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "zenledger-large.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "zenledger-large@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "zenledger-large@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large.png b/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa7be8ae5bfa04460718cdd5f317f9ffce680c0 GIT binary patch literal 15062 zcmV;{Iw{48P)O0Q00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP6wmG0UVPQE$x?e5$8cGEP_L`j0eI0lR; zqax1eypd5K-;4na7)BUB!>AZXW*l`!baci9IG}>)2$B(+*mTa_x5Lfp8e|&PSvh|ul=uot+lHV^#9Ld;S=!2zy%kiXV$k5w4Z*$In|tfTH(Bt z*HEe6D@e2k6r@Os0Nc|-1f!+#%5HDd)<;U)NAGHVc=N^`-@9eXoKKjwq(8zU=udkQ z<`Xd3sjDu2efueATw%H5_=;b4%GFWw`CHG!QGgns@Q#E)KM6^~vPcG!Qf`JUyFi|w z+UxIn^xr3cy7k%vmtQ?bx5ZTNEk|Q&>Ph5BX#XH}B%@DqI@bTz5TK<%P zj{skE^{aB-Z}^+HcCT4`l_yIJhNh0ls_#+SagFr{?R0gIW#J~S~ z@uo{JW$u4gt^c_MzQMZJ-28>pd(J=mGj6`)ys_~;G*vDJj_U}UQIYhNRy{AxBrJQr z4uunt)w17GSZ8~C_dNf>i#G4}{)`t8wtLU=r{9NQDs zl9P3x_w)PRu2;~r0RA%#d}Q5AKYe9K+ePcI>{z}2vdYY8VRURr2DT0EW-3YCd}OKA z0Bj6Od<@O0QsT=db^N@1{xmyAIIbT|j@r4lb$cK9`1e-Q)mMit3+NeGo(bTS)-49U z^RbsKxag&y7Mc9XV?%qWRIN+Lv7tt%@H#R&XA=9L7!kp*_ za{&JI=*0ZfZ0%+rU!;nD-z!VB#%@IiOL{uAa#WuXe#h>oUh~qaekWJYTyRHb#jW%V zP|xoQd~DsXf4zOo+g|v}&KI8fX<^lm9Xou0DuI-a&DNb1!J-M{*=UEm|@?!4;K{v~gI`NvyV4_q=cwm&^SHYr8Q)z-~1-_Q6WgNcxNzrO z$J^Lj#z@~E6ls~0qjzW4(qCs+Qb9O07?f%0_|3G|X{C81+F92Xa{!&Ze*7JH-}9%( zoqT%W-uu#PpHF{4uqB?xckq6z3V@Wg)03N{C?}lgnp3h) z-z@K-uT-{E5%<2($|%n_FRes07XF>Q=Fvt+q7ymeSuXmm`4en!^R^T2U3dOQ`W>mK z8F=;MmEU^*>i##p_9r!2TQ{I_O_XN#Ljf zxNuv{(Gjz6s_Az^BsK+{q(=w+BAoz`-`BE^E&}M;gmsSvRr;6GHu`#LJMH(TC}XAQ zb-88q@%(yv+#9D$r#Dcaoq0-7!|Ns6dNjU2TGCBeZe3K1ZmPcY+xN8|^Vjq=EkC?( z2LVEG!BuZRw13m>y_2@|(=PO&lucNP#$P3GWS&tl`=;V;mVqc00qhdCCA~Snk}fYC zO9QFcy4mXQs2-tzDn3cSsSZ*dZCaP=qW6GyE`d|cn~phg^cM0=QtfEkycxK8k8d`r zxqL%7C~U_MN|Sb1?$jrKB^Iowr{Q!3nI5`8?i$`tDCR;FQ;ZE(T?OU3z)f69(&bh=PHqNnBD%8~#2?&2rj zeAzf9%9YKF`q>#%8-MQYfAoS8o1_aJ-q1}#G||j#@aLxz^POp|j}s3<24>(i-Q(>29SbYJzbYVrD14_%JqUOxxzd=0eoulS6DqSiPqRBvcv zBRGse6`y@_h89^ldTV+aeY&y*ziZP0S7g4ksYx`09^x|VI*86|RWFrZ;AFjpXWpLb zet_no9w+yKzgbkU$`@=Z6@z?xtEK5B0iH~#7xk5lQH{tS8&Uox-sVFE{+S3o8imF_ zJ=IOuv^}3LfOV&Y9aTDa)h6gGGh668@!IsQqCTTdR(FB65m!@Wx%a*IwJrP7T;MzX&p+m^ql3FBRmfRf z6rK%aq60$k8}Dyk@aq7kUAXk>Y(KpVR@nK1rfgf#~9+(Gww!-5ult0^ZCP~j%`!?0a=u4oI zACyu2@XOTc;Z=_lSHT4Ck& z%!Q<(nNAQ5)-C2XN^^`P4{7~Ye`03yD_$w9JAW$B^9iRb&L92d^#=wIzRq_LjN5_| z#7*HwgH%+z8hKvK@taV!j0bh&f)d=||~_+6Zx`@@!DV6_AWC&w+Lw{*#&x6el5Kvp>}wg zMv(RG%5M5L0(>zTxVt+12>s#If&xzj7paW2IUlCzGb9rB<52pIh;WNEq<=Is%Sg z0A=#_!T`N7w}O^2h)g>Gy8`R}pVA)sJVwF>Lp!IWdR5?bVPQF(ajbSi+WA&_r;2C` zA`LCSl-`G9PjDNp`~Lbc9Q79ZS#7_%21mdDH?x}FmR&`yO|E&Zl}Ud=?!3w^B3B@#fhtS=zV;E?eW*0I^H3*AZkxuK;T0a* zF#M83PU!K)N@5C5?i7HdK*#U5)W_+|)0^nODoi^iMLT~FY5Dia!>r0Q(#~zA1N1r2 z&OOy(jG!FxczO>g>eFqf#2tfW64&@QRy*(qdz5vj=rtL1Ozv1Z4bnBaJZ@;``uYI` zZ&g|j+POS4K(BTC>CBm5(E^dfXheh&QORuji7=UUOj4!>65746k z{odMPbc#i%r{PpVC9lXYhf}rn!Av`~Noe^k^li{i8IA9UPPc`g__Y%b@$kaeQ@fou zw4>F||3cGqZhkE~m}%#)Oy)9NreWRxS=~kdTn6p<6UvFdG_{!Cmt9NGSF{ti|HPTw z6t;ZLSyr96S22&~kA4&5AM`lKS^MAeo`REZX$>|`kI^|@i|9^&Kh0FCl+L6YEuTcA zlx%Ri35R+V%jaDluDrr-p`Vlop*no}NXv=zj+V95@3PwQnGjX>F{GV`YvTk(Oue8e z8Ts@8GE&m(z|mQ7_05EC5F_Br)om)-mSSxlS-7@l8CtU`xM<54^ICq0hlQ&Ck@BOo@ZyWl zbugN}R@6do9~q>xTYG40X^QriAlXuxINlXW@SDJnz^8Z^Qd0d;168p)VGGQ_)^Dl| z(q(Y4e9Ts8`7h6GqVIur__h{-PF5o*l1hm;UeCqG9#B*J{_j#%_;kG6O&@PRi7rOU zA(^?H0PTF!(9W*<1m&Q9UY%Y-mxIbq$8VC$6QHFpAfURwKByGaLUeX2!Zc}I(xj;k z)kgO>Kls8h2pbLm&-J_|4o>59MA_oFbl1osIw*?8&JhUaQtHU0%?Ayf6=I)`Kuak;IY~${bg=I<#vwE zbS9c0=`J|vYf4YjFVV5=RGD_JZ9hxVPEyNrQtrDI&<;|{JCU4Q0adh0ptFUH4LJ%Z z8^NE8^F_kC1yaUbN+50O=eS4IIOP9GR>k4imF z)|i&};sI>B+tk5!8_ZquJH6yxq)UHN=g=hkwnkaP^{Uj{k7$<-4)KI9& zEuuSU(sssk;ClZ~9W>c2=4Qra0rWVqbqrau=N;?s$a*&lp(rp0paviNp&<-2Yy`Y`XBBgvA zI;IoVsUE1HHC9V>>ezalK%a+NL;`$4G{411Cl@MU94ZdcrLC``U(h&G6B(Obv~}X{ zAMKTXu-LEE!oj85!WE}!0Dfj?A5=qyw!!JPxM`9WHH<`>B{Q3&-MB+UQ`8$<#vJDn zvuBs3;dHjc5thNvC&9Yk1CGClohnAEj(&+o>Lr!6{6=vHGM6=^iwl&t1kF9YJ8>Nm zw{^ZUpa|O{BIxyYbYJmI1x~$rXlJ!vrb`MhqC2f&jL8-nzVW6j(3*qGGT!vk^_%Xz zbH++@UBU``OBisAUX6~)w^JsaqWh*t0e%YLi-tsHGib94Bgq?Sxanw5L&we4QCx#P z04Mlnt4gw&51p(!U5J_Be(OpnJ4K^M65lq?oL>@oCS2UqvH)RS5!(()u!fl z&1$>erwTl{auKw+0-4a$GHd7_8pQV*eAh#VZ@B)00RHew#D+^UQ^U*FZNBf@m3)B} zj}_yh`KO9(VkaE!nzl~*)%1|k(Cl<6QKd>E-5fkckSG5ZM>}35{?xzQj?Cn)MX#fN zcEo&LM3o2XQ%E6fq3e)Bm+mB%PF6@F=6=(0S6Y z(?g?2=;ehTbuq7Aj~m1It4@&d-=Tv{a%oJgP1_Xv5A$1**!IzgGf?vDPqk7N?Yp74 zo6bFQGp#&yJ$)AeS2tA5a%g{BCX`X~oXP7Y+s2SZ`(;G4dVkzDL35o)AJ2-g=6ht> z7WL;_X~0DcFjk_+hIbwKWpAZ3B}Z1`x<{oGqWKeEM00Vz$A*c`&RkAO-1>BhhK46-8VSd2 zK1-R_Jh?3}hBO!8IUvm-e(9n;KfmPyk*aQA=iByi2#>S4i!3n_QS0IUZFhdKXKe7~ zO16MtQ(BQT#l_f5Pa}ta3TS7_5wxj-NLPX10BghFPs!!YwAAGASZNI-S-=+EfwZkm zIGEXdP4joeQD`N3oS1{E)YKE)e;u8lg}>{~WXY|1G&wp+!&B4BdAlhN&?MQA-zk9Z z77(L@b{Ke{GC={_>Ss6I)C%A?pWxe><17lYAe}76L>kHx*55YVd2r*)mhFE0wUt6! zfU!P{_e&UF%QHAtJ_p%0i6I4eY^#~p8$g(yyPq4pc>zqGbFNOCLkZ0XZgb~G9TJ_+ zY)I|Ad16r)l8CLi&)Q^>h5$H^e%FP+<1A+4yf(-q)dCAIz~ZxP?OA}D6}u_-jV;vw zPT|(JofJstcoIQYvemngHUTI-2r_|_D`qB#maW-%=R3VjK}w+sG@>1>>ZqsY5&fOe z(M7+hPN-CXWt)gH?kP&#%B;?q1zs~PiKBE}1ay)Lk|&;{fI)MB+jMS0I!DCQNpk5l z^}xcNvPa`%Q#3j?gQAfIV&-RQt>`+Tf>KgE1>g%=1-zBb$c)H{GP&FCrruZ3jn_|E zREOIP)O>0i87zc@5~t%C9@yuVx@v7*lbgL+8$G$jTri0#TISfx9XFCR}M9d1-KW z9hk%98FY(*=b3??=>*jo^}KYvmMv#q_|;M-Ka{EzVfS#kB+W(i1sU+$M-I}7K?1o>Lo+F!BmzgP7A6~xOLd}C31%Ca+8 zynm5x2aBPJQusj{XuIe=*S0P8mM-YU;f}Fntz~TCalfT{v9)7(a6#S8>iSXwn>4`R zS)8Kff*ntW_9NO&NzuT`Nj6CmedBB|z0u&R8>oIh>S_i1H&{tjshT@sEvr2Wg>~j>+t_&LtEnSc`T%>Wl^)7@h93>e*R!);g3PeOMz|8 zVt99M-S2P_tyB+eC>2LK5?+H@o}8f0Q{K@$3_I!Aun%9_^{JjCtDbjPv8{V()f4xg zUn{gkDX`G`x#GVW;4iGF=$y6=x(5Y{EIPU2X$8ZBkv=7J0<}N90pld3*_H`E(3}f5 z$BBk~QDVC(iN(6x7XcN(-F;AFVx~&tM@HySsjPxRrje8_8mu_-S<%{nAKn5!ZoNi9 zxklqHoqLCt9(zlrt!D!ON7}Q>pqEKexbU+@%NE_k2T!X|^)!Ii;#<)2u1G=bBTsKR zAR=^ykCxd`al96`kU`2%uYh*<8}8c6=a z2KWJ2q%6M6Dnh4PddFE8-qip2?SIxeI@nvywj$W_t*B;#C2OOyHF}s%ZRw)Xe1>+T znx9pvI4c4!vQ#+-^(1K|K|P`Yd}Eo3-}B4_7h1XpCCp6Cr{c&I9f0;`y~Wn8104;l zoCUT9StbS{H^7m;aEeu$P8G@r7Ovhp-MeH{V5iDfP{~+9xf8OaCM}0cwMHE>zP9=s zPy#-#CO+`2+%_o!Uuf&M^^n335L;;rQjKMX@upf2tbfVR zOM4$ad+Dyn)|3%YiBRiERnMV3z<(G8^<|X|t;G%RX>oO+RrhID0X@u@B&?Sb`FLvJ z{RE}37gAO$sSVuSh7spa!MYE?y46fMv>hFx;!4pBcG$rQ8ljl(?0N;(ZHwWa1qX&# zE#L0tJBHA;I8`kxsEQJu3vw4+!qC4_uV`VV&%(s=n7UzS$SJ^=Lbe1xx`#YyQcKjm z8j=mR@ZfcTIr^&}IIwox=eeMPG;IoWQjq`1+GTV^ASNm+?4dnpPI!Io<({k@7`tE8 zQ9G3hBj#<+mmlQeIWb9H2N9Tb=BU!!K{AuVaI5Pne#yBz3F{S2#Sjs7lu9`%spsN0 zd(o+>GOYW^B<-Ip@eo#16J0mXCCQ{?i8|42M_i7`Q`X6ryHq+q7E^454z4?3M)GbdRi<<)SSuAfhl4KZ3n=5TZGi)mo!H{6*3 z#Ex!}+oB%o#{PpSEy^9^l-{_9?9KwY{XJwa=s@pewKZ~}=5go|G$j$Cu__a?y*8_wCTThL&j9~z8CM?_bSd;P_a?o|QTSpxa z<{zLBkTizR1n3R|HjICa0~ot4eb3=B0Z=Oe57W`|I`yR zyt)E*%c7Uiio^F%-k(BzmLW-rs=XpSK_1RG1MOPhb(n&Ox5E`d$7a)%?rNhnI>Bi# zklm6cE6vu*DF{#;nik+VACk>4RgqNn744xyLn$2ZV)QtMyCpRNoV4<2pAPpy$j}>A znsIw*ynQ_tJC~|?q_&4BwKS!ru)Dp3jZ}B{9w0r{20_#R! zrBa%seW~k%LOEP*JUDC0E7I;o=ThIuW7LCOdDST>;D{OwSPf3LOr-kAgLf|;7@_*c zy(Fu3b+dw#Pi(mWUm#Z^vY^vkh8*NT9Hd-REu3~mJ_LCYn}eKLfQvb{4L~^Du9f&5 zWpMh-XmZIas^;4;yvxeM^_1b{NHGQm^Q^TxL4Gh;pYF_bPj%I97Io38bd-v-Ec3uU z!>s=0yXM!^1w2AovT{Mh5j>GxT0VFbdDLv=zwW=yH-G#&0R4C} z&tP_K1w3261&g);z6}fKKqr)(I?%CZf!n~}N(@+On=(dt9LL9Hv(P-JR|3d4C8;mK#oyKoi0j3Q~>s<#sl8^z92Ndi7~nRz-x z6Rpc>V(BWX6$(()ux^Y_jB#pAE65n^L|~?D%rqQ`2_MGj)Tq$4CG+;_)!ui#z@Nq# zOS-V%(Gl@l#MYpG?!k&_x`?`df%?{-MF)?+fQ~FYmUwPnsyc(V`4qK8n#h}bkK1n& zaU#(Bg?^ks1(K=*c+L0dAmmItqVoyoE%|bKSs<)o3(5o>0?^?*fe;H#n>)Z~I+q^R z>%wu1H8>1=i}U#S7oA<(URvz#^et#m!SXIKjUyQpMYkJThtjR)fKW-8AcrmAMy-|~ z9@xI}0$RBHZpw{qLf5A$xrhc!CBs=Ukl{x*bwn~x$BvfWEg^)@+bF#)93Xqi3Rrg@ zdZ0|FIAwYg3Vfn2R4&H+h?)a35$1uyTavm{)wX)n%2J@KwHgKRneFMIb*uNv%o4YE zvaNoD>x*v7clep-fCV8EkLU>QQrn{n$f1}{9m#L6ec0Z%`K6Ox-AKd;{d}uTpu$#d zp5T!QB^>Fq5cqK6V|`(c6>1(1|K);153ha!rMgy8VZ*OTjE}=&QZb03#Y#W!SYfQc zi9RI7Ywlcuk(4QcXj}WpT6YS0eG4Jhz~?pQ^cf{(LG5%xub@W`BV*;UijHYTT`ruk zBxk$j5O}5$-2wW6HRf{lKk&Zal@7A|{L@qInMKpfYM+&5)cFK+I0Pk&bjh56BVA~h z?$>{?+kNnnA5LadzU!py5UdzjbLE5ugu5CRtCj4r1OlksjzS{ z$s?mw-?@*fqZ3dVzA7jvWx%S&;tYpzvOJYUsT@~HJx(FGJ{%&u)oce%w;w}?`cJ3y znpNcHArLuQ^?jxH^+41>c`%42ErJeA>9~Tl#VQ#n%(jRqMQBjX_g1*yH~Z9DTfJK2 z24&t2+(~N7jk@Osee!28R!`{j)R7^mT9#Ayp4@oAu_kJNSFVmjjV^(1_rv*nG4A2V zma+9yG8QpIv=&eUH-#fXXqxiC@7;Mp3tNP82KC}NQQrdUy!2A)0uR@o*hHlV9;4F6 z9aI}0A`elc$5SQ{Cn!aOJdfSh0??so+Pf&|UqUne%c$1dPxV|In6wH|Qgk>8iFB10_T01BG)HztKkbaO;Z6(a| z8-pH`ivpDaRkvsviV=ol49}}`ThT8ByHrP5L5Bzm52ZelI!^rSs9U=sRigzGAq)H` ze6k;Ovg5WxS`Q63S~qh#{#8{y<2*xQ7m;CdJV;7bW|-@@k4ieWM<|ZvAjvVzG=Z$& z-jOO54GabXmay z-%B-xG_vxLZX(!?Em3UgA-{`8xEr>W6Gl(TMNpkj1pjy8veX*X?XCp){Yc12C!NlE zUbUiqqq1l%h}GOk^T4r8G)iM^@k= zJ!#UikgZyCycJQ0@-@=dw<8RohST{w%UrJka1sf6QypN-B?ztd_%9lu)E9Rw^e&~T z!@_BA>F@;SLXd3IW6p|iJbb}7CDe>jJmE89A>G9El!Qf(hag18*G1ha6u~wROPYbz zL%MQ6sn%ikQDqzhecpED0ef>?$RL_TX<-|fDV+$^!c&VT>BlTHflj4XY)6)E05!R{ z6z(;L`>A=!@56aP47g1V9Bz1CfgXfbZoW&55DmUCQ*`jZ3e0%19aOf-b5^z6ZyP-8 zsCr2r$0c(Mc+P&`;gF)Ry0c>_itVJeSfL2=zXG69e$S$fHp| zI%1?GqjFuy&9S9v(0N}g?x6)2VijYnoS^~90K&B)WD?*L%qt`UZSj0j5mHOI-)eBT z@#rC8j-~iFk{Z`x8*O2YBY^8_>$uQKS;F6RXoyZ;vMMI3fn@lVuiPIB;_{SYch3#mYe2Tr}FX-*u;P;z@nmRNx8$T$sJC@MmSsmj2JqQRJu7NmGh?fG!Z=hG1I?gE zaY9HhlmuHO>{cVh>~~B_oax{Xzu+?92We$T55460cDnVk4brfMVv?+-O zXWOtasE&wU3L-_QKEe*r4Xc4aRv>U$(n;#YZDoMxSERCD{<$>OKb7ABvARI4!paB7 zjFy?@V5vOc#cQM(4neBusCH1s@tr6EBIxpP0R}zGsbG9>tBMt@pQ#_ezj-%-hTuDD zdbAKF*BWqY06hFOgRcJb7bX@+QVqrQ6AC??o@vz0aR$cCp%5~KNIeiKG?HH?ao3&- z{l!`5(XEd>Kox}T=}cBTRx)P`66|S zb16Ku+wuJYgaLQ#XRA~3o6e|;*y=UCP{P_xxlzR6$I?>MU??jikRu`xan=Rv8I0EF ztrRp^L>aKM`{76IzSXB_th9APGSe@%?56XMJB=RSvlYX8f?7~}42+zRVftD$Sw5qv z$V)U|7hMbhnVV~*&d(j`S-Q^2jknSINpSlCkl--SNWsn&euH7D0`0JVT1OMA=-f7d zH~_Hwa+WILqi_$vHMJnYpq^mKU>{RSD=t{6S#)O*VtItd$d+bGVXBxwH z+wd5zU9^~bQSsS+co4PdTo^i;05wKFEE-T^Sd!7a+z7VJ5m@j*tCo8_IC4U#fJUYR zrO!FALNZa!w{(n5W9P^6tfN&O8JV~Jd^N>qS`Q!qBswuS=L0UBG%|CC`+oJFs?ATn5rmo z3Jhfldd0bd?mvXlmZnYWh}GXIZm13JJ2^nMFPuFQ_EZU)ZgE>HEk=sxmW_{5D-u-d zpk$id(&4{}%@vt3=c|mOWB9`rYP$dxbHOS>hs%<7q0)A+tc$;{E!CVD?f=x+276g* z@brL6mICMnIZM^>t48+OJbi;_rIOUc450@6lm6y&BTvZX#vhz-|X_F4sIb!6u__1~K`p}d`8xC9a0)s!7y zsB}U2KPy2mLQwp-q01-*VD2_b!kWLs+u(ca%@8dGsaGlj2|zWGLe0qYxua~_8Kb3% z!e4gnzK4)HJT)kealGd=l$3GQbhS!nEn7@`h7W<4$EdZXMNbQjsK!jmHZw`IR^e}gEdj9NfreOn(@>llE@oXDWVR|HjS1}b6C6;+LcjSfx(7T8tgz(8bI|C zIU?9)3&$$_cxzf)d&Lf<+im@zS(hk5xag{fu1$3=xy&2i2XCw2#E|TvVzowVd%JLO zjqcvNkJ?&VDc1T%f^n+VHhga@*#c?-@UG@_eq%9%&YY{j4+7NzDhH8rRP{s^YJmoB^KKoJQbG>2xhY z6=Ae(85JWeL!&Xbhd~naftnWzblP|}3eHys*esRVNpmtV2f(4k$;DdYQ^#?BYe3^0 z9(-Ff@VuxuLNEHn{jbTiAM=yi&^BM_N4R6~0df_dsWX?QfzATmx@{Y^6bcl!tP$|I zBY4tL&Xr0gsyXyYYY#N|VGWh#q=Vy8wWp;}F&WoZ7VfM4jscsmVYclA@I05&;)1r} zcomgN!|_t_Z=Ee3U`^GiAvlVpV+gvjcuVt)76SOY1Dwfkb*lsD>9P)E)NL9^#jcHC z`<4RmHak>+UQbJ}uv$1<-|>#rT)^|9{sSbf7kznk*UK*3RzL7?z-We#-h@Bm7cO&q z&gx%4zuLJA9OkG=Not7NmH|9oGu7lA4ZKAOi)U-+51G07A@DrmRMC~Tc%EMEsR?&l z$%xR>)#EZcjjQ}QQw;}Dj)`;`PxVZT)Y8t^;8&SyYO%wlFdDVOq?ld@hK33Nugm4R z@fh`pH%b*vIkrU&^KDfEjzvUHJ5-x3J|%s3p|pqW>A$_BtNokyJiv2Xt?K4m$0w%k zPjsIB(!ZthWGjN6KqSJVP^WGmnWXbpEJgmijGQ?N(2kzJD74fuYpr=xVbw{R;Ff11 z2cd)2sc03zFpOp%B4;8U^w)};iQf`TdftTr%&UAhH zhre9d{$V1r=d*Zi*rt4P`Wo4^eHKvRvctzH4c|M|Dj;%)6r`2jEqt&Z|HvJ%?D6}?z`t+s`& z6qvGjODLXYstMB_+PQ{QL)y9464athNiFWZex8&#Yx~n>66r zJV`h02OVo|duV3nOSi3Vc`q3%x1IucJ_n~!oWYOu|5??le#~iK;z)$J(tItYzL^#{ zx`&ZoW~(~CzmF!%mAHta) zX^!P~cq~@|{sP1dt6||?sJu)Ld30pdQ;9TAX@o_xaN1E+7n0Qc&I-x7$5bm!Wu;wu z=*BIlB|%U2+0$8+;^}+uZ7<9WoOMV2&|_ROoTYf`$UGHNE^^`BbnE^RN~cq5zPeO0 zP*7f3yo?BoEnbEkAH-??(7C#fv3MRema%xQCs}%~O{i%2L&mYHk7bmFtDP#5Ue}GB zticdU(D6llIC<8Ewz>EM1v!2SQqz|eMn_SUq+e7whsCQa@JkUc8 z*`YGvnp!vjOM`bjB=LDliF$a#N@M_qnMGmN4V@5!uIvQr1sOZkd3TNe`p7T8d*$Kl z-t!ZDaA40-E=0Rbv}P6Us^50VMRCbXE8OHLxS+C{igHW$l(K zqHrEwBGErps!_QXm=3fkPPz!g)k)Cf&d`?6B2FsnuK51wp$(6Is&dEo|Lw?a*Aywn zRUQq*-*-{ev+xs}f9yK;MgH^<2j5P3t)$ak-`!4ru9Y4`#;P0MPEEBpd3UAb4d873 zk#i;OTv>~=gH?2;tQ~n9B_|yt`)o}+mev@yu>hOm*(FRHZTKPuDk(z)PL@2CeACvQ zpc7*;(tz6tI_Urgi`xo))+K_GCyTcpe(1{|8vo`;9ygeTr6T!M;Qb-MN8tDW!~Ji! zyO;c%cX)@#rkFe_w}dmCi%?u$($h;1mQaAsa6ThYj!senbQM6E2U{!?`ZM^B23J`; zqSrd1KEFOw#1DUI5d*NHCEJhCv;KGNzJ)3=<@X!nyUW6%y zr`xS+%h71Amx`GJrGl!mVQJoUA&teW|C%rfm10mi7soM`AY<_|wstl5MHNDH^vLgq z??h*1QN*oOO5pCQvS9AGW-1B!dM+w4)-6*lDJy8Rys2G-KNq{XwY=MRsZ0P;)|WR3tVTe__oOBU?v=+>RzAG!Bu9~=MCyZ2EnCVp@0 zo)4^NdQp;d@jpHOH7ju6;Y}X&ETi|?)%h6yUbRR8K3)Z#Ff&f|nGur33H&gibfJ^d zZ9Q;cz2p|!$xi3Ua#PB3*$Mmb7iu28nrw->4LT~FZ=*t?1No6uLiWu?AH3g+UL6eZ z0|)6(yC+Y@$;#H@yYBh$p{<|13H1q&oN@>IE+KV(r7dg`bDXXoB;e=0?7rwr@Vvai*i`6tZz#IL)O(Ra~D zgol{eIB}S&ScR{83Ct@s3Us|A zP%|E&yHl|44l%i}^4tBl|JRix|M9ll%`d{d$#V*H^YUy1A1-RD)4>m{{qy#VzxvwL zvg2=%V}s1^fl3kbqLcG+im!PTm?g{yg`-7=Ybn(PI;X2!)Je{aZh7oW6W_n}ixYQT zJwc7iY64ou;o+V zCKN|DFt5-Bns5pDxNxwX`b$C8pt4}Gs>!sG)3K0JEekxWTHI2Z82!3@I-18sP z^ha=%zt8f=0zP^D7@%x+F^R&7R<`Rz%H{?{%c6df&37QEvZ>HEf$GX3+bQoxX!&G% s>d?arigNFc9k*1?um7MB{<&WMA51p7hqdzy#N3J literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large@2x.png b/DashWallet/Resources/AppAssets.xcassets/Illustration/zenledger-large.imageset/zenledger-large@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..91d819c552f6f91f980759d731fce30553154722 GIT binary patch literal 38377 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
Qp@zpV3 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%0AHNsQEKfswZ3Q~!8M{nqnX#1$*zl6%+z=87fR^DS z*g)+0CD4Rt{m<)NqQ6?_+>^0J!+8ET08^N#_H}R2Hz9ZcX#YS>}5RpJO@pM+QiK-rC zz?-pk>B=u`OBTR}K*pAdXEZY2x~7OAi#mj4Eg!4m6$hCr_^@Y09T!oEcd+PETmUuC zK;@)vI0|nz;yiOCD$SbuyTxcao_U429!IMPzW1c5-*l3*nZgrJW!uHgGRix3vH#5B zhMw=Q_L|DbHT_0lHr&;H2A=Zu?>pBuUwPQ1@b>3C1>W=d2jQM6qa-%WX>Da5nwz$} zcV?v)0U;(N+|X4x<{yxKRPm*1K?WGepaiK*TuS3?oEJ3;yQ-LPuRD#tz;4P*DPFCNdGW5WvtNzdj?%Twf7RD)kvNv55PL`>A{{31niuBZ1(=kKi|~e zvg-@|vS+?aPbI6?0;%;UAX+3KypW_+SknrE|qZCk{5$nA%NhG+L}*#Ruzgzq<2u z)DgyGu_}J;(%tu_>FuUMkYakvh_a%Q_V-l;Xx@a8#f|Y7Kms^3@%pquq7!)vmb!+RG${EF80E8o-W8DnkPSGD2l*o)3HqhUQq zWwBtol~>-h-++vUJ3fD(sc5F}Uzh_uHenjAH;jqGhScamXGf49m4B&tt|MS1K=Jp2 zSfx1IQ3+T8s-hD(aIuWWgAS^MLx7rzC+;t2GPz&fd3rX1ihFUo*1j?C8%4`r2vFQY zeu+t>aX`FRPWjh9Ql~skj0G}4NvsCIv6*yF@pDC@5ZW2-4@{F@3ap}fsNvJ(Q{u{s zjme>r&?HJ%7!5n~1)?*M0R}39(SX;_*rVIovs0s^sR9fyuapMl6*2%0Ljg=TQuqoJ zSqEe)K!SM{=h3rsnf}l`YO>^902$vbXuK7P{IuHQfvx6f#HAqvFvfTcCk)6GB=+0& zR^^Wai~t%9FUm?Zyx7_IcHjP?*R}Rs_0E2GwZyooO_t&+QGvQ}^)E{I7Q0<|*4~|P z^Of7-9iO-d7W>Q4T3Upzp#w#0SQZForG*y*n;fbW@CZFjcAkI+6R7xW%$QCToiKro zQsLEp5ikGhe4?bK`>xz!JuxbkEQ(_QM`}P5rUBo)PuYd7Y|>O{@E&k{zK{V70%mcd zA1IwbC9ojQT3q=CP?5^wmNB7`+5Y6bu^btI36>+Svk7_{KCM9ccZG6nGDUW*1F0Zl zMc@o32cBF%Lq`G^`q6eaeGU8#Axd_rw&p5`NK{B54nkB)2h4y41aP77^XWs81c;#r zq*dgn#$kT0ogss)ephb-7#? zYH!sji8n!-gb4`%0{S3irJsFZevdI23^ksItFWC6m}(HtjP#(19JwF1&>*0ZU{W$bbgix%P2IpwSpbEr3ik0*qiA z*#@m2jbxTquwq1_Lo)zJ7YX20Tx2VRO%}1hfEdVtXEiDSjgp^L$1_%qm~KXM(Miiq zRW)NY+U*3oRwnCI9<5*~!0Jn=D>dOTLkJ!|fx@{H6($|_9tp}zU*g~{b@&prTud;c-`?CFy*Y`9!^ zX$}gbxA9YQlT&qIQ-1TBa~M#XZwP6Rwt(bu8a!y zdYW3%34PqGbtC2hLXoG|i!c~u;z2x{KL;83VE#%8GFVe4$N(8Lf9X*->;7e!5Ibdp8Nm0 zjq{_kYTFK_`~Bi#>?M{%$n+(Hk!x5hMvMBx&%6PSPS3*o4;?m2MAJhrOdBQf77z=b zha={GC_jk!LfL(xd*KZb1eiGMl1gzg&`~ILG*MS$AJ>)qB}Sto*a#r;bIc^T=*V1> z)Q~E-t6Q$|FPjGRvdfjDu93+k5h^ee_h?Z5f@24?f}nP+2Dy&J0}jPNi;52$Fj-n7 za4{gW=w_0)3I#diNzej}89@Ra#0uC%WpI%-CCwVDPGutpv+F1#1raLFh1E_!L)Se9 zG#t#hlOhp-NR0rLRM~P+ss)_*NUDDovn8D>5}3$;eR@O!w#k2DvGliA?r~5EaGd{{S6LoiktqufqQB+yCaC z=I*O*EPHD#yP4DSV!fAO^?~R=-|4{14_pn~M_cgwpS#awpbxlcl*A*WCX;@@@c5B+ z1#D^u>~S`O>|V}XLZX$DK&9%K&H$kC=Rrq9;UatSy-T3{E|iwwluC-tFcaY^I}g%rdl+ejhpF%V7M=;s`n^P|>sgs?(u(lj_AVPr{8 zkHY}Xzcm0&0-TgKTQ?)vxM>{#tVva?ieoPvXaK5KC*Y%klb&X+ul<-I=3=#x^+|#V zuR~b9F93sq2}2FuccK!e;!jAH*nheioRz@J$1fH^6;FH{gZX+wsP~c=yo0>wlo^Q}VsA zk%7yg3`?iiy-$9N-5z}N&Pn*L{k!3}KXnhx_LiZ&)`1R|&=?wXlQQ!!!+;@ziM>P_ z7C9J6;D|jwLIs54bIjiXjdtTd7|=vUgFM$cpnzNMvjoO&0?7DqtoL?D6!}a#n`FVE zOIn!fJFhZe)AeiyndrmwMNGyakJo9S1seho5@Sddnq4vM#pqs6E>eX=zZOo43;lp1 z$!L`C2Yk74kO3|(r5W6GzwrJ+8JyP(uB!wU1|!{ZJ7O$%eA$Bs6vcoh zr~*956dq*It=&-pn*68zvyEAp$dh<+r#12Ca`K1&?0bjz9{5v@c4VDjpYKw|DSeUq z{F-Kf_YD#c!)w3odibNy9fF7ErfE-KqjX$=Cha9<^){Fy5FZ*OScnFi14g)C$6B~Q z02i?m(75q3oY4eHD~M0EjD|6muq1~Nn*!@W7f6g(lSt|)t#A1BewulG%^1QBq#V`^ zXdw;J{`-T*(u!PLz@wHX62D}K^1MpLqNbZ+Z#4bWJS2|&XcO;H6G z0W=EMKCl~yE`|&BE+~nA{Jqx>5AQpqM@Ramt0?L+%^q6ko(xhMdxNf$P~qHq^Nn!V zLnqMHKJoQg%w+L5}|A` zEqWo%m<$(_ID1Kqh8eb_KifGoLU#g8Ze61D6{DPe{vL!)!@j|*#6&`6C%~dONMTGP zbk7@Q;63L7P8$|8)O0J|r2=J4Mn!HSfF%H!3#K6LHL?wQ%JkTg+Z3?=Xs0hwL#wwmQ{L=?6!xvOb_{(v3 z-f6*Q&nGs`6x;WV=w3Gi8@=x1Ra3e2s8lHPZ@JfpA9(6@Ft@w{@4fFqXd0nX8znJ} zO#p58)vOP=f97d#RCzdzR)i9ZliECXt8KLIkKl#&Y<*l7|5n zGJs1urfXm)m?5+H;!Xf@n~#s`hw#j+Re8BG9+01rW@ zgIsJVEzUP zGNN%afR@41w_u0r^H{H+Nq~X^SO$R&C7Y(0kY$d*Wz@45OE?Vbm?mN^M{bi3j1Ohi zF)mr67>glrX?S3XzrbVy*c1#@f?kFlDU1dvsAoVRPK}~$7&M0A+Vw85U;$x zu%kZdX2V;K&MhI_dja6g3eB`tHV>qqDQ$dAEV3sm1DOO?$nJ3vvVKn1V%VH4O>so9 zzb<_7CebP7m+u%53Niq3m_R83M_Qmt-}9G@(exve23D5wq5=}pR{%w-U-EH&&FT<9 z4cH)LQ3+r{pKtnn1Rk4=-esGg(Af977dyM!e8<(U>u9)WB+4+$v-{EsU;?9wAk%=P zpYb3g6v0KN5H`|v+gJ_Ww->Dmvo0N9o--grU~~4rzx>&&#}2(+6%E1-N637JG|QND zygwi0H0UhMxH0a3^pO+rkt1i}r=S0=utl|?Gc*D%n&Y#&9DB|55c*dkd#z6X;P1s6 zix9Vbsf0%vHZ+}ZU4p!q`D1uKUV{jOtN~eCTe2R=KZj*%U15D+{$Av1U~v;e`Ge8WuZXm&h!}oyA6A}cEpW;p_mE-D%}OsVN4-R&6)GAUu)Ta!|)x&n$Q4pE$K3= ziv!Af;B5x(Hh%^MjIQWyZs0H02&Z4EJ7_TMAeP&2`IDCp?Y#EybYTEUW042D^ra?h z!f6q}(8fND6is-;vz`L){lbIBB61!^45L|Ho`Yg+vnjaTB89-ZR7eySnIF`!8Fml2 zU-DPJ_a!D%_@2Zmg*EHBB1efIM2-U1u~!CI-^86tGBr)@d(Sv##-E3QdXz?DDKv&+ zy6Y6XBt`}0FZlc6+O7?(kmXs5TOdRxZ(ZVwVRql85TnRs*%km)2JNY|PK{Is1El3O zbpG=!4*#l^04rVQ@8NvOgh3SbH+h|D7%Qr$|TQhr@!D&jt*s^o*m*V@US z=3=wA9MLx>yrE?@Nq8XkveNYf>7eRd3CVjRoK98Kvhju&of=FD?8nofXElM%NSnc{7-3Mx_e0IVT-4-QQ1*(k2K_84_Eg-W86 zQ+SFlELoO-0Z3>d{vy}ofWPlfIULueC5bOer3TEWAp}qed5qR3^n>*XXdo$bZKxmy z0SBNYQb}cSCSn1I^8kVzbaF*-q3X@svKqK%lutq6qk)4`IGl%>+qvijF?CP_Fsv?w zD~1dbgJj*2AcHCT{2sV+ptN>Pnubk%+TNlgT5*ZiOeWn6DR${c$u9h72Z_D4$9#>r z+}XNYNRUyDOcCsV7Mlam6d*?fldfnH-uU-Vfp?nxmV@5+)jMwj-}R#(IMv#|cW2q} z)Z#5~F8olvUwJ_#++wE-ue|9R+g$$S?nBTV8UnpI3wn609y91RNI48~E?SfVbfH7prIEqmWBA-=^+YpfD8|r0 z1~ytMgA=0x$yQ>;;>-p?p4Nd(4U6HQhTRwUz=1%|d(oh}Z4GBxr0>u+_d2TpbAB(c zpu-ZPp8^RsAn$X(O1tuLVNeD)l5U311IVBU5k8SJDumOq-|WNL_g#y7gV+R6uPgfM z9iiC4k2KEwx9{1rdiuzRRf9AF+1B!**N&XG8jbYUFeo7Tj2W)>=l4AX$LChy$Di{w zXc%>TIWhr_P6ucdGncD_%p9-t=;JGp`DLF+=yZJ8l0SzL0{F8S<3yoLW2Kh-{oMp@O59g*}za8Am=H66vD36-^=(|fYe=q&#SNvgf{|lF!6Wd<` zn&!(61~;tr)fc&+!qCzL$L8kY%={X>{@V}01E*$S)|BF~5iUDxOHj0jAks-6BTB&< zLe=nh0R$UL4S;pc&Id7$W(~LGGL|g$tfJ->Gc{UWZ6sO45^2_=SthmsNo+wtNb`?E zngZDjpGEmsp&u?K=Pm)y5f`a|iBc@?5H^%uN<%8QxUV)QvB{;~_ue2~Qv6Dw=8o4I zp}z_Df_SK_TEkF&;VORaP#@xX%0u*J496W&R2AjZ-}hFqEv9AeGXO)&dsxdQS;LH2 zG-H5e#_xuq*mJV;VVTV{p`pThLU#BmzirE3L0n5odBThQ=+Esq8jsJ~DMxgxt<~w1 z_@Yle8;-zL*dOrPuaWaREbO@T&u(sQx%%VKQhoD<*8#XNXSlu#5((DzVQ2<;(AU&a@A(!cNf{v!ZnsGEXNa_kw zFQBUf_4vqOb`E(j<6o{*jgCjDkAXP9iJQ7pz7zzJ%hgxEhqe`;Fg7S;;e;YM6PuD> z(&r#+oZ&pAEr?D^oTsHcTZ%Q9x@w`hNn4t?>+~}f(W#VE5JZO%)1A&MA`xW%;&a4E zZTqBml6W*`buVZamZEVl)h;fPFZ z;!_Ze$fTP?fEP}bKXuph)Z2Y|=!?AWYvgD>;*b5^=u*2qttO0;wqMqO%|+OYPA3;j zI0aob-NEah`4o6)Y6kxHp`$Q7ItIPjDWfFbBq~U%83`Gr?k0ta<8DIj2@OZlk_MUq zjqepaw?&x&)+k)_t}27U`}1>Pv80+9_qVJA8rwT54>&67YdAxp^L+Y28b{+Ym>ghI zS<6wtC;^4vqN32LQ|kHU7`8TPT7cUfg95gV{|f0|mfhOLMP{#9*Wp+1AF>*1Wth*T zGKDa(k-;_doOE*-aOyO?{bSF={}ilDmzu1vjSDltfAj+n6q9@RLw{|sj!1|I%p-HS zP6Tvs!6=Dee*KlOZKMf*@UIVm8Xf^$nuWd*qg11rVnKF9tYtIt9ut{@e=u)5pwSFy z99IaHP7KhCBuCdP1?&ClNFWE6JZ`#I zG$hy{8?*-jXuJqz2j!XObm9oS4em2a;?w`_d#+zQd*sit zpi#Ui2KU9E_tes(;&iQ#j%VXWN&Gkeb`0)5Jqthe+^52Dw+lUEiE0sL?yRH=q{APq zMx0u;RISuf+9Z{ z-_LSZIcK>r;Dr{*XvFUIBLI8aZk?V6#cy;j=cY8Ayime&N5}oeA(jiot?zZ7FO--3 zJh!I=zdUTbuB+SZ7_!eb6Pn+1_j{&e#lwf-KU$DEI2dGnbl(8yk#GAO{`801JFoi# z4Sm{)q>&O+4=n2^cJM;!gw$(B4?Stv%xj-{9sI$kzXT7jt-yrgd`l~{&>YzWZn+6x zWh}ZQR75AvW|++G7)`FDfjFs>o3}$BEJP!p*2r?WMb3wHdz52jI`$l8KRrzA~$WPU)0gWeAj$= zor_PdEOWgK<*m=I)52F6KV>Y-koVxj#3s&S=x3)im^0G7?C>kn^{GD4-7cA>OIYdz z_7>igeY-&pFLIsV%lgW|V6t1an2a@|Q$7WODzq^o_g9T=<peg^o?TmI*bjcr%njjeXyG^XNG5;PEy^q>s6a3yVqXG-cvzvG+W9}XRbPn?~C zO=H_&W%djxqa=2OngLBf5MV%~IKZT^)KqDRf1#52ltiacxdL!-x}W@#GME8QJWo7L zb5pymNK7#e>nnrPa-Jby0chk{n$jwRgMvJ>JYlBvts7H=Qk-%rlj0L!RWCHc_=7ND zFaM^xdaAWp79s#nzVkuwb6|r>864|P9l!ufzpn%S-Byunu4%+B%{%G`a5SujCN$12 z_f6ay!h-8D%^9GH91dy#SntO{B>3gmIU|Cadvvhn&O|4E4i0?EmeI$Ycv%12r|-t6 z7=VHGSPXYxU(ty>w`zBJ_QkFHPaZzi?$1wmvC-)JHnomp;#3IC9+J#u@^`3un8veVGo*_1R-sbduK^^p29{)#Moq}(W<^P+^PWbFCMJwRC< zHD+~2v1?4va1%N*5kR~@e^2mJEZr)K5}1WUk-kjy(*Uu0)s2zK#sp!djA1~>G2pwv z;5Hhg^{hrN=mS1&G8e#objYpS@smdFlEvtnA%v?&Xs;s&mJM1=YDUAcsUA$*nX5XQ z=e0+{D7qwC3w4>Pm2T>*d_~OCwGYF9@>oBp1?SQZM(uZ(L4EP=)z^LcKd1xnd{CDP zGUP7yZN5G(&H(?b&$V`5@pLx>JSUj?5-XR!$bILx(CxuXueltq-Z~1u^V$22GG`o` zrW;zb$ldk<{nLTPMC%Iz7pDNFGB`{@D3k~S6$oUNFNj1!l+q``N7o)hIUt{E&uqfn-<47F!3lonzyH0FgS z){uUM#=R`9lrU$0c42*m;`#W6Fw}soMj~c4vwAAS*ZXm16ONUz7isNr0dgibHCx7d zU4T0FQ0LPN*m}VuN1<~mqEbx~A0y6#&Ey;Z{I`d9UHyi#N8=^6ZxR=Gmp)mOoZFXs z+1L~hY}*R|*NvCKJ3e_o%ot=Cfrjy4fadT7=qO61pU}|+(TVRD|PEA07mIR$~6wfzy8p2ndh)S9<-$fFdEazFtlid9zDKGabVid-Gow|JoKmuU=c^};VR-0(t3oV6N zIMehHJ#Un`b4D~;?vzo-gb@)32nrEYYQV*JtD4_s!Ke9MA-_g%~_(vul2yGO;0{7Sf8gkwSKl$4C{QIHZSG-@NX3K;QsBp|( zw7hjSe5dTgc(V<+KKn-ao<9Q(S|&8wQ|mwm8KVKIqrtS=9_uWD z>tx&!BJ@eiHRp0Z_tu*!e)53s&R6rdtN!_AsHn85$k9 zj5pnKsI+!ZgLVm6>B0PR3G}Z}Zh{dGYRSl`M(z(BKs?0ZfbMco#m2#5)@3#Wo}ntx zZrS0qYU_EJ+Z z#eMH+rf<*Gy4#=gP4L-=Pr*N&ItLS5cfsnkQ4)`Cj*KJ+7tV4JArqa_(FLs$oBUBQ zmZ$)BB9iu-6(w_}^AB{{ImIdzw=`i?MA}BJFtQpkBO4$t{aQw^z^TWOGoBGi!KOaW*f4O2(o%_Zqg9kaUB%XbK^TerNd4cN9ou9^{ z=_PIV8<=Y!gj;W*CUov&drl*F|Jq$&fXlaSfgil_8dy4i23lKpf--hITNAm}z#b8T zLNiSa^^HmcM8#@EfbjF#WPa5ik@$NfW@)UZ4{K^9`n)F% zgktGrF~xH5@v`wLpk;cQ0xJ502iV$=9KLOd={!7=fs9=@*n^B)L)ZgpcpW&uj&?x2 zw?z{gjSj|+dr{Cf&vqAkaB^w|&djYET~5!Azfj21&B`aY3`YNO89Iv8W5|s8{EJ}? zP?JCQL|ygPnV-(@L8_99w*4|dK6hre|L~U%|G}BrlUpD9nSBSQrmy&-EgTx*`zU~n zf8Ar)9sEcG4!*Fr^NoM;k=Cv&Ur_eQ7|Fm<*Y|eZ4bGsh+^6$JqqlkP6?@_7dp5&6 zK642AB6cZ&;j#rE=T=YHyj4}p$@i5?YTxrC%V z#+;WAx4!;Q-#oJW+Jm}JE8oJSyK*1MPrTCW!Ihh~!1q7(D){YB-UnxkCQP)(U~zdG znj;fZZ{zhHQ5kH(M*Bf~Nk@}2;-moPR;K_oI-a|*5@=E`QmPY)P;pS0^5=5yQ?}r^ zZ|!Nop0W+2@4<$TCyIMC1re%FH#1-%tdQCO${4S6(Mhvu2x%ORW*N`RK@QCGO}UDV>}r; z)P;*d5?F;OD>Zgds~rF~7R(D<31Kdyskd=JgK<=FQ6#IA1eydIk+}dn_lP4$1t%(#tX5fLu;ytE(YzgWAWBJnjY>Kt zU<2~%7QX81s^T~4UHCl!fcizUBA7WJ_Z9{=RXvRdACTs4DVq4=C^2I&3~>DYPU*^O zlc_CR!s1M%>^1k+R%yIT$Br7Wn59MI2N(<#**UT>9w|6D*>p#i#NSsJUlwQP%^k<7 zP)5XFNcXZl-@yx~PTafPSh{uUP2YUi*9%-=aB?5x?#?@lJs<9E(c?SL6{F*{Ola+L z6SBX_oW5A5%mw(su`{rF=atYoe+u;Im;@RGYndn%rXBwjut}An z!Z2}(od+ebKdoUit}1D!&xkohIWjm-P*lOqoY{b2G!4ZYC8XUb{drikDT+qkn$!We0Q+P?J3E+;gW@7EH0)(= zX$=-uJFap1u~Cw9U^JIPN^e zrDSe{4n#4qiFz7l>aN+FDS!(=S|TEhqp7eNOam7y>;|yHY7)?dH!)`8MJDiUCV~$5 z(Y6X0Fhi|%$)>qMWy%oz}!Et{LNihseRLYM&m7e`@umQ<(ynk3!y@3f}g6_qEq5~Szy>tzbkj`aW;mqMQ z4#v)w?h<=hfrYh>+ci-Pq{G2AAnz3_{_MGR7?1yav5a)an|K@unU-;Yc&0PFQ4QKS z!?2fQrxzBw)4yD7U;Fh_w>)F{u>vr`JwAbkoM$%MUiU|D9NvB1Z|SmEt0WFC|MY|J z*N3C~B+Ks{8G~0p^E!B!0h^Pi3)wuj4Ho9kKy!4nd3k9Yap4ugZjo}=umr1tOl*Q0 zh65S!01QwDW9*JYZ_7ajk&g^!3zRc(aPe_vu$xrrhUQBJaJ_EEUqkQ@b=;@Vr!@dd zNNr#;0d#U}lm#9Y#3ctV;8{$kbk;RuFZ8qQ#rU*LAuX?TVRqS>r0uw&2%zi(Ai_W$ z41fR|E(&qR!PyQAkv-4emHX%K#hO}L1A0dPr)jmjg_&iXIsM4Tx}c}#A_rHUTA)Gjdt=jDFWPSDJAzL4 zLgnj5@tU-D`o=810*h;FHXhDiBm?Bb{5d@cfEzATN~*dM8DBkE4USt6WJWc$6H`iy zChBglH0ME-+koOFI;^r159v_Z=eazn82^R|BmMB+^)G|%-9yJl6Y{L zi%jeIXKZh+IX^YFf-Q?Pl@e&|h~1{@g{B2>`PDBo4*)t1kFsscR60DaNvocQ!Ur{e!&gWeeUQDq>D3~cisIkw02$wtyM$WO~2c0wIS|W z>D#l@(;$l{)7kJbG{HYAX0&*Fs?5PlMQSg_ruu<<91IfBaM3B((NvjBg}uackYZD4 zU##p95UNZw<;RI`C5#tnbT3XE?VCK(;;Ut+XV}ZK(VML?(MW!+%A#Q04H91}tO6N; zWXq?DaWh!+nhZ?hcW2Kae@~*S#uBD!JXW{c!}BMOUszc^`=)*Sn(zLXTb|JcwpY^Q z$vts^hMZRtZ@c9^zdyX|s#lj?QWNTIn#GsLUflh`dY$EN4{qGP4PLx|7yQu|ABLIX z3D`Wk4OW)UL34N{Zj}*4DEl1p)FdEr*WofP^&uu&LaMNW$;3ou=4}AMWQ2|;JfAHQ z5q7FfKvU0VqCWue5x~N%&GCeH=wXbvw-ljvV{b_`GS*qxYB=eHL6^Sy(Rd_Usc30s z#pqs^tqA2NhAL5JgIR*Sm)K3sb68UwP=N#q_FM&=QXEkc42ki`_n}ClwF(+D+w9ad z%*~v5-|8^jHvKc-a^msEUh3Qv3uwrNJ-}b{N3Uw_zWP0;!CEEp#la+Z7Xc(+@5rxX zl*FUW7QFI?%i&*7orljatijl>s{mJ*jQG)qMzi7UIOrNCicNXaDPPcwbDh9;WU2xa zVb_svXI3VZ7N;}?!S~c2bnK{F3_ufRZv$|1wtXUFLqQah<7V<6yr%HLz645iR<1Eq zE|YdYaC5EPIGDb%7|kv(89?tk&ZPW^*_>fOAQ@N@Ez==mIhBSF0wgfIr+pmAa#3M5 zB1+6XD(|%H#eA4m(_u{?KQgtdR(|Y_Kl`-z9E?)l;}=}Gd*T5NIX?q@;th9PGdh0x zzu{23Zz}X9E)zQ7yGC&<^YE@Ld$48;Q z?J{=pzFLd1GD*BjKvS=n6k-&zQNeZRinEji7P;uu*ZDXafC`K8U=vlhnEc!s7YQIK zD=d3amc7vO^xKRDWz2vJ>0Zd3-8A}^#g%2tUTDmW%GY-hjDh7nyMM99uOTU`D`RIw zP#h3P6`-QG&ip_Em}(RT(-qE~J6F!moV-&Hb$|Ta&pzwy6M?0D$@Qgi^aDKT1hm5Hew(NnS_9*l_ zi#DucLkuzDLllu9%%ut+>l8r8E5 z8UOlmMDfUfK+Qm0^T|r~I~exTXu`_s3SKz%@QFTlZa?*NPx~vUcd<`Bp}>W^CpOTK z^OG{Szv0f0w|885bJ<%3$n6gUK5t%~)(aDWMjK|+@AshBFX8e{6L9&&7@S>Mg;Tl- zYRhhD8New!E2eJsyq+Pn70v4;S_BKC7~r1e7AFTbOmyPR zg|US+x;BB3EETXL>}Vw=T0E+SrBUo^!(JNDGXO)Qew(JO7M7M^Zgs`xCLdInP6vIB zI%^Wv)a;9}5|m*AvjH3cbT|N%GA2WDs6uIjFgSbqWN&`{%pVrRWB>W&f4Skp6P3Nx zxhFo*kP9=wU-!qqGQ9hmpVoGnP;UfU_rbw^X~h|UvAZmoqupZM=w^DouDx~HrcJPQ zxCQg(wdc_Y3!8UAb7Zr7#sFU!F$*4W@@7*_5p&T3lIA<5MWrx~uoc^`Fz^U*gpn;4 zXf#yD(Im?fK+a;SM++Ht1~{Ef7=YPI8`opQuoq?7OULN1NHkhC?4|Il@ukNxTlOHO zGt0azhl;~`0I7&x00YIX0YFrJr(a6Ku9#(x1zC<-u)Ms8)2APPXstJY+tgd0`@ts@ zxN!I602*?32Kd2p>kq!`CBu96f5=n?F_KtT#d`WO({RrALF{ZLQIMcSFsK}0g!vnZPU^=x!kHs7*S1QIch-D1SooIu&_+*W!1hr z&bdmwki9D}2%hh}MA#f8QAPk#U&Q?C%+uL3k=2BEi9ACE+$^9MO#>wgr_UZ=Tbw!Z zyTd#7z4?)!xN7#v3NXPvd4MK3t<~f$f4s9Xy6sdkvWaGZt98_h6^Ak|b{asY9|0zT zj=L`VUHhuhp%K_LJOmBX0DDCfR$E4#8lMDZl*gu`0_~?)_Gl-F{^0a5VBrZ%Go-6i z5xDr|!ls6vl)+4NV!$Q9h9$zzi=qiP=BjPP!7=k2M$%O@?S#`2^NQ}OQ|!_d4kdIv ztSAAPDCXlvs1Ze=eq?PpBGlg-#7MNfmjLTh;&A5%Fg0zjytKH0GiQ$6+i$GhcIM}w z{ZCJJaN+LB2Q=jTJgFT&^4^oJZToiRGr$KHijIFOVJbjFn{R5PpXm22a76I207UG? zn7yeX4voTas}0R&6Lg~m-L_Gaj&3z(n602%BTghLyY?A7qcEhg(nb=q2r8Hg$bd5s zyNQjMi4n}|q#>HP(~A(?cpJa|qn(IRLaXe+kYQs@b585m&@Pv>4xuvnCB^uv-Qm87 zi%Dq~WtF)M0+9SZX181j&FZ2BB<41n~y z7Np1;(P|AF>(mgm%z3jlWOq<6hbEvj`W#I<9Xm_B;q?GLKb4vEL19%EjA;tG8B{sL zNlYe&W}*{0EB@HAEd`|gn#>g~5Y=CUhGAO`QhJ;B_uM`wP|$EC^Xr*BbxGzj%&ckh zLHWYmJUxgZAl8&Di2EUzdR?$tC$9AXEq}&ea!@4pQZ!qzI5&qgQxAX6SkP`gbMTpu zndKNBtM17QH01oWg{`mogP$DUeci9QWkQin%KUPa!AUn$20$SoA(JN^EwDJSi42Dy z?XP2x!~hzmfi?{Av<%xBGN98kKe~pYG0^7M9~uYUGUw#i9E!Vs1-7Cv)%yT6X>~g$ zx&*Uq@S*gXw4wn(B;AtvA*J7dOy9^;J)1wLe?qU9DhW_&l^2tShGAueIg$uS$HE*@ z4FH;WnnacQwO;t6I3SKZEM|`;(FjnQ-v{YjfThWZMy3c#oH=*QsF~(}8P;Zh+|TXKPUBU=3~bx%4LD$2 zUcdCp>(b6I>f7yS3|leBz6X}lF2Y+v+|Z8Vw1DEkM5%DjK!$c8qkD)odKFfpgG|MB z;VNtMVnx3r2Qb#eGbsLe%5^VoSeT#2*)tD)tej}ydiG7vcuX(H@K|*Xc(OZRS*GvQ zpS}Kr@1K|%)zi)KZT-4sLI;e^jrRuo>e>)t!?>`;hHLDu;R{7GZ4tb-WY|RCHvSb; z&F9hYUFyLENlYo6s8Ymp4+6IF8=z4RbnJ3$sG^n0iAg+#eh!iC`ITcND#hVIMa8V~ zt!;FcKj()@zg4UE(A8@#!61z(!ioYnzH1N*swi!0-WQ&;QeQ*&dL^DaePn)ZW#!Go zt(D(B{ni(*I=lPhb5i3s+HC+$a7JJAz@2w48&Rsc{gyvF)ZTIVwPm-%WDL#zW>r}a zI2Vq$n)M!F;8QyA0naudG7yTc@6L(wcs)wrC}H{pK*})~D@v(!ZGp!7*|l=bH5MUU zBfHhzEf|=0AHEg02=O$z6K8J#?(PP zF!|~`{$yzHb>CO^R!gXk_pkJc>0ZuWbj=T;4q!Yzs2sHi7z;Mxo)v>MgvG10B5FdQ zVMHRoB3)Gv(PwX_re1=#LHYAO#Cc1^aqLhdblLa7;@Fp4IW=X;fnSQ(AH_sa_h!v? zCF_9(2Z}neE4inDbT^PCJfp0DCw!gS@WFNxPQ%+G_LIM~EEN+KR9d$X3gG5jj*^EHTldgRM z1>lfOBI;ORKoP`82LKT;@DT5-hI1s#=eN<;v(x8rVdmstcd>Wd^e;aDII)+r6z-i6 zUbx{NCAR@Ibq)Ve3AuG%N-zGPVKmgu(E)n{WF|R4U`fDtCM9=TNZJ} zI2{Q}T9TB-!p%(_oB~MWfVAZ7B@64P256(8#??+2&Yw9lrMrti_Qs*-zvtjDUXe1o z!Ct;*ZUblrIlpMk^qqGef)5{W?O59~*VwYV1^rI_w)2|z?m^t~_gsXmN!B#Sb*s2$ zQW*yu7q5%ngAFyR*giej)X8`;8NTsrk=QJ6kTIFOEz3M5B``=o%=9BJ;aO~f`9KCX zDIR2c7#+|Y0fa@$zoW1##5eH#)LFeWbK*|b?El!gx4zge$8gZTegj;-9&Q6@F6KyY zbEk%LufmbZ*S`C+?OoS=E18|4wtv;xm1do6O+(gDgF6gJgjZdAV2xAfOki-@1QXE% z#1_47B5Tu836W?EM5dIZUX}pHVQSLkp4Sq4jNp^zu+i46im`=#1 zoF6a6Ws6WHZx{?rIV-C&6@HiB3sxr=MPPdvjb`Gf6C)I{=sbR?L84S{g|{3nt*-S? z9KG+3zCJg3{+FJ;_tgJ)^ZRr#OK$+oH^gl)noD(Pz~ZOm-M;13zyG1(-PiuL zVK#kSXD=zy%`zW-5ubD`v71Y79d*5ZY~};P*S@!2Nt^D}JtL#kTGxnJSaS}8{X!97 zvZJ|I#i2$ zzz5*SJFjT(y7s84!=={1Mz68(dL0l+fod+-droKVm5U=AgyME!{9eps`j;GDBm+0InpgP>;)>J!Ekjyr$ygXfC&@HWG4R04?*lvzQz(_9Ft>(y(Vu8Bl6M9r)( zHSt|am#$gjKt7g_fQhfvz@)^41_5{maxpDmplh;}dnn6Zny|96g!30p+`qawee3yO zeaS!3OQ$I4K^x%)z&r-shK}Ydbq9?J{NTaH*|)!RM`wQOBiLwxTUmkY7n0VY%67tm zHASY+iM_hcSPFL)3smm3c)fg1SAxMn;Nyys0f^=Et6`n=%E0y4Ix8o0LCY~v`OYrR ztsFaY&)d$e9i2Gw=4ae={#U>2E>Dj(bT5x_w;{TIweFR)0Q#%?+g|goH#H}(`X$|2 z>X&6%xJi>VySWPxCRz5`5)yVYWj9^ZauVjcw38}3?wpRjZkqL7_8CaH(XDR!fj=t0 zq=P*#{B;qhBcv$_{#Z2p)PurKH>e()c8Y@X(-BC~8YWVrpG2wRT&i?kaKDE6(MHjg zn#Me^YPE6`8e6c^FL7b&kvl~)qK=51r&_h0{d zX!5Fii$=5T_q!^H8#-q;1H=i=8}vY3$~x`qqPA+i&b_)zDR#O13{HP~inBEIg8>oN z9scWY8(`9Xt#E#6W^v)v;kT&^_x<|WKlo)zsZ-210^|J5Q zYfEL>@2Ru~P0ncYbI)>meu)UnaypFBuw@zm{GwEW)u_m7FtVG#UR1_t8jR5tadKst zNSPRoXEMQGu$jbKke$=`71d}ac2imSDhC|2?1kc9>2`7M{Lzo~=cjHv_Z$D`-5c!X ziQ_gH&7OGp2YpZk{PU)PlOyd&Y z6&1m{Hinw9&{3f+EJm0V!SNk633isFhVJz>&MsV-Uz|R3aP0hv-#LB9t5@Ca4fgUx zavMPNXgd<6j9Yp}aSt4P?WXa6_ommV$*bR`+GEA1-RqY{;>_R z{X}vbR;RC(vtw=m7oItE$K1PLkDUiU@uvRTib7g?Q>k*@XSFmTOBIV=H+&4ZE*H?^ zAYO2Z)^>5apdk>CLWw^o&Lq|c*)dTzU#1kW@FUu z6WVQb8($Y^IL5(WKmwoE%|G=0#n#=wQ;bcH+r=4Z*UGqjC)3gNosPy?prqBQqNA~E z@+Pa3)6;mX6I=W$>Sp*NSWHg?VFf*=pTS!FOuAMoS)+=~0@Y}=p=b@kN@oogW=_6; zZRyPIGr#ewV;j1cC!gC8oxU#44f3Ot&Uat=X9jToWcb;yx!I_7--)AJZc=00+yW0} z7wgC2#CV`;fkLK4$?s*)3h9iE!2zjj(bCwI&TEL1d{&d8dn=1J!^7|l1v#Wub5Ww%c(o;>=KrE1=;Mkco6_;$CW!rBs)-IX}L zM*Hnd!U9xwu8*)dVX`!#s#=lwc8MSIugPu`-j^=dV-YaeYQM>-vA z67P1bsoSm}Tmc$6V9yQG^FV_t8>rW)0u2+Jsz6g%^EI*odEuJ2TIri~6`(Je*zPdm z;IE(jl^34id4dhM;a~%39&3)zj%))AJr|m-*JEqs1u(XKJC1EJUgMyfhC$Ho1elGk zW#efE1C0lmf&+~oQzMv50u&bycy`qz{m)DR>Lac8rvI^H)5KkO)BZ+bD!_)@a5ZiN zXdb&RSI9I0TGxSUy$FZKUk1(QP0$|S4a1un*fy9{_&uGPwEape0!r=FgUV5*P37zg zc8(<(*ytFfIaf5AU&K;>s4+hBk6S0MK79B$zh^BaYXe|5+{N7n&^+GV{{3w@wYCj5 zZQflJjVpCeUt`$GE(16_5gXf}H9U^AV2e^spbh50Dr>tMam|Q93mO_1RI@k>&EeCk y7<#BRJa)VX%g49Rx8@%C=)qOka2xJXaQ_=a|6wa1Io`qm0000 Void + + var body: some View { + VStack(spacing: 0) { + // Grabber + Capsule() + .fill(colorScheme == .dark ? Color.whiteAlpha20 : Color.gray300Alpha50) + .frame(width: 36, height: 5) + .padding(.top, 6) + .padding(.bottom, 6) + + // Close button + NavBarClose { + presentationMode.wrappedValue.dismiss() + } + + // Content + VStack(spacing: 0) { + // Icon + Image("csv-export-large") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 94, height: 100) + .padding(.top, 20) + .padding(.bottom, 10) + + // Text content + VStack(alignment: .leading, spacing: 6) { + Text(NSLocalizedString("The full transaction history will be exported as a CSV file", comment: "")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color.primaryText) + .multilineTextAlignment(.leading) + .fixedSize(horizontal: false, vertical: true) + + Text(NSLocalizedString("All payments will be considered as an expense and all incoming transactions will be income.\nThe owner of this wallet is responsible for making any cost basis adjustments in their chosen tax reporting system.", comment: "")) + .font(.system(size: 15)) + .foregroundColor(Color.secondaryText) + .multilineTextAlignment(.leading) + .lineSpacing(5) + .fixedSize(horizontal: false, vertical: true) + } + .padding(.horizontal, 40) + .padding(.top, 20) + .padding(.bottom, 32) + } + + Spacer() + + // Button + VStack(spacing: 0) { + DashButton( + text: NSLocalizedString("Export CSV", comment: ""), + style: .filledBlue, + size: .large, + stretch: true, + isEnabled: true, + action: { + presentationMode.wrappedValue.dismiss() + onExport() + } + ) + .padding(.horizontal, 60) + } + .padding(.top, 20) + .padding(.bottom, 20) + } + .background(Color.secondaryBackground) + } +} + +struct CSVExportSheet_Previews: PreviewProvider { + static var previews: some View { + CSVExportSheet(onExport: {}) + } +} diff --git a/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift b/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift index 76365b78e..a5ebd2133 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ImportWallet/ImportPrivateKeySheet.swift @@ -32,27 +32,9 @@ struct ImportPrivateKeySheet: View { .padding(.bottom, 6) // Close button - HStack { - Spacer() - - Button(action: { - presentationMode.wrappedValue.dismiss() - }) { - Image(colorScheme == .dark ? "icon-close-sheet-white" : "icon-close-sheet") - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width: 9, height: 9) - .foregroundColor(Color.primaryText) - .frame(width: 34, height: 34) - .overlay( - Circle() - .stroke(Color.gray300.opacity(0.3), lineWidth: 1.5) - ) - } - .padding(.horizontal, 20) + NavBarClose { + presentationMode.wrappedValue.dismiss() } - .frame(height: 64) - .background(Color.secondaryBackground) // Content VStack(spacing: 0) { diff --git a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift index a0d37e557..7b8b85dbc 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ToolsMenuScreen.swift @@ -25,7 +25,7 @@ struct ToolsMenuScreen: View { private let onImportPrivateKey: () -> () @StateObject private var viewModel = ToolsMenuViewModel() - @State private var showCSVExportAlert = false + @State private var showCSVExportSheet = false @State private var showCSVExportActivity = false @State private var showZenLedgerSheet = false @State private var showImportPrivateKeySheet = false @@ -123,13 +123,17 @@ struct ToolsMenuScreen: View { .onReceive(viewModel.$showCSVExportActivity) { show in showCSVExportActivity = show } - .alert(NSLocalizedString("CSV Export", comment: ""), isPresented: $showCSVExportAlert) { - Button(NSLocalizedString("Continue", comment: "")) { - handleCSVExport() + .sheet(isPresented: $showCSVExportSheet) { + if #available(iOS 16.4, *) { + CSVExportSheet(onExport: handleCSVExport) + .presentationDetents([.large]) + .presentationCornerRadius(32) + } else if #available(iOS 16.0, *) { + CSVExportSheet(onExport: handleCSVExport) + .presentationDetents([.large]) + } else { + CSVExportSheet(onExport: handleCSVExport) } - Button(NSLocalizedString("Cancel", comment: ""), role: .cancel) { } - } message: { - Text(NSLocalizedString("All payments will be considered as an Expense and all incoming transactions will be Income. The owner of this wallet is responsible for making any cost basis adjustments in their chosen tax reporting system.", comment: "")) } .sheet(isPresented: $showCSVExportActivity) { if let csvData = viewModel.csvExportData { @@ -142,9 +146,13 @@ struct ToolsMenuScreen: View { viewModel.safariLink = nil } }) { - if #available(iOS 16.0, *) { + if #available(iOS 16.4, *) { + ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) + .presentationDetents([.large]) + .presentationCornerRadius(32) + } else if #available(iOS 16.0, *) { ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) - .presentationDetents([.height(450)]) + .presentationDetents([.large]) } else { ZenLedgerInfoSheet(safariLink: $viewModel.safariLink) } @@ -184,7 +192,7 @@ struct ToolsMenuScreen: View { case .masternodeKeys: showMasternodeKeys() case .csvExport: - showCSVExportAlert = true + showCSVExportSheet = true case .zenLedger: showZenLedgerSheet = true case .none: diff --git a/DashWallet/Sources/UI/Menu/Tools/ZenLedger/ZenLedgerInfoSheet.swift b/DashWallet/Sources/UI/Menu/Tools/ZenLedger/ZenLedgerInfoSheet.swift index c3a48be1d..be6fc3dea 100644 --- a/DashWallet/Sources/UI/Menu/Tools/ZenLedger/ZenLedgerInfoSheet.swift +++ b/DashWallet/Sources/UI/Menu/Tools/ZenLedger/ZenLedgerInfoSheet.swift @@ -1,4 +1,4 @@ -// +// // Created by Andrei Ashikhmin // Copyright © 2024 Dash Core Group. All rights reserved. // @@ -22,36 +22,90 @@ struct ZenLedgerInfoSheet: View { @State private var showAlert: Bool = false @State private var errorAlert: Bool = false @State private var inProgress: Bool = false - @Environment(\.openURL) private var openURL @Environment(\.presentationMode) private var presentationMode - + @Environment(\.colorScheme) private var colorScheme + @Binding var safariLink: String? - + var body: some View { - BottomSheet(showBackButton: Binding.constant(false)) { - TextIntro( - icon: .custom("zenledger_large"), - buttonLabel: NSLocalizedString("Export all transactions", comment: "ZenLedger"), - action: { showAlert = true }, - inProgress: $inProgress - ) { - FeatureTopText( - title: NSLocalizedString("Simplify your crypto taxes", comment: "ZenLedger"), - text: NSLocalizedString("Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions.", comment: "ZenLedger"), - label: "zenledger.io", - labelIcon: .custom("external.link"), - linkAction: { + VStack(spacing: 0) { + // Grabber + Capsule() + .fill(colorScheme == .dark ? Color.whiteAlpha20 : Color.gray300Alpha50) + .frame(width: 36, height: 5) + .padding(.top, 6) + .padding(.bottom, 6) + + // Close button + NavBarClose { + presentationMode.wrappedValue.dismiss() + } + + // Content + VStack(spacing: 0) { + // Icon + Image("zenledger-large") + .resizable() + .aspectRatio(contentMode: .fit) + .frame(width: 94, height: 100) + .padding(.top, 20) + .padding(.bottom, 10) + + // Text content + VStack(alignment: .center, spacing: 6) { + Text(NSLocalizedString("Simplify your crypto taxes", comment: "ZenLedger")) + .font(.system(size: 28, weight: .bold)) + .foregroundColor(Color.primaryText) + .multilineTextAlignment(.center) + .fixedSize(horizontal: false, vertical: true) + + Text(NSLocalizedString("Connect your crypto wallets to the ZenLedger platform. Learn more and get started with your Dash Wallet transactions.", comment: "ZenLedger")) + .font(.system(size: 15)) + .foregroundColor(Color.secondaryText) + .multilineTextAlignment(.center) + .lineSpacing(5) + .fixedSize(horizontal: false, vertical: true) + + // zenledger.io link + Button(action: { safariLink = "https://app.zenledger.io/new_sign_up/" presentationMode.wrappedValue.dismiss() + }) { + Text("zenledger.io") + .font(.system(size: 13, weight: .semibold)) + .foregroundColor(.blue) } + .padding(.top, 8) + } + .padding(.horizontal, 40) + .padding(.top, 20) + .padding(.bottom, 32) + } + + Spacer() + + // Button + VStack(spacing: 0) { + DashButton( + text: NSLocalizedString("Export all transactions", comment: "ZenLedger"), + style: .filledBlue, + size: .large, + stretch: true, + isEnabled: true, + isLoading: inProgress, + action: { showAlert = true } ) + .padding(.horizontal, 60) } + .padding(.top, 20) + .padding(.bottom, 20) } + .background(Color.secondaryBackground) .alert(isPresented: $showAlert) { resolveAlert() } } - + private func resolveAlert() -> Alert { if errorAlert { Alert( @@ -77,11 +131,11 @@ struct ZenLedgerInfoSheet: View { ) } } - + private func export() { Task { inProgress = true - + do { if let signupLink = try await viewModel.export() { safariLink = signupLink @@ -92,7 +146,7 @@ struct ZenLedgerInfoSheet: View { errorAlert = true showAlert = true } - + inProgress = false } } diff --git a/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift b/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift index f18b57389..029929885 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/NavigationBar.swift @@ -1,4 +1,4 @@ -// + // // NavigationBar.swift // DashWallet // From 527ebef7863737416865125e8d960eb24e0cc68a Mon Sep 17 00:00:00 2001 From: ross-dash Date: Tue, 24 Mar 2026 18:38:07 +0100 Subject: [PATCH 02/66] Added new text for translation --- DashWallet/en.lproj/Localizable.strings | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index d8495bcbf..1cdbcc450 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* No comment provided by engineer. */ +/* No comment provided by engineer. */ " " = " "; /* CrowdNode */ @@ -3185,4 +3185,6 @@ "ZenLedger" = "ZenLedger"; /* Savings percentage */ -"~%.0f%%" = "~%.0f%%"; +"~%.0f%%" = "~%.0f%%"; +"The full transaction history will be exported as a CSV file" = "The full transaction history will be exported as a CSV file"; + \ No newline at end of file From bde89256361a38096f44f44a0b4ac7fcbf7c52b5 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 24 Mar 2026 11:16:51 -0700 Subject: [PATCH 03/66] Revert "Added new text for translation" This reverts commit 527ebef7863737416865125e8d960eb24e0cc68a. --- DashWallet/en.lproj/Localizable.strings | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index 1cdbcc450..d8495bcbf 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* No comment provided by engineer. */ +/* No comment provided by engineer. */ " " = " "; /* CrowdNode */ @@ -3185,6 +3185,4 @@ "ZenLedger" = "ZenLedger"; /* Savings percentage */ -"~%.0f%%" = "~%.0f%%"; -"The full transaction history will be exported as a CSV file" = "The full transaction history will be exported as a CSV file"; - \ No newline at end of file +"~%.0f%%" = "~%.0f%%"; From 9d031d82a5d5f4321703c456d329268edf6f4acb Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 24 Mar 2026 11:24:18 -0700 Subject: [PATCH 04/66] fix: add missing text to english source --- DashWallet/en.lproj/Localizable.strings | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index d8495bcbf..f7a7a9e77 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -3186,3 +3186,7 @@ /* Savings percentage */ "~%.0f%%" = "~%.0f%%"; + +/* CSV Export */ +"The full transaction history will be exported as a CSV file" = "The full transaction history will be exported as a CSV file"; + From 239eceed8a88a62eb088c442e79dffbadf9ee336 Mon Sep 17 00:00:00 2001 From: bfoss765 <38437574+bfoss765@users.noreply.github.com> Date: Tue, 24 Mar 2026 18:09:39 -0400 Subject: [PATCH 05/66] chore: pull latest translations from Transifex (50%+ complete) Update 21 language files and Japanese App Store metadata from Transifex. Co-Authored-By: Claude Opus 4.6 (1M context) --- DashWallet/de.lproj/Localizable.strings | Bin 237124 -> 238228 bytes DashWallet/de.lproj/Localizable.stringsdict | 4 ++-- DashWallet/el.lproj/Localizable.strings | Bin 238964 -> 240476 bytes DashWallet/es.lproj/Localizable.strings | Bin 235756 -> 237008 bytes DashWallet/fa.lproj/Localizable.strings | Bin 223438 -> 224688 bytes DashWallet/fil.lproj/Localizable.strings | Bin 240222 -> 241506 bytes DashWallet/fr.lproj/Localizable.strings | Bin 239454 -> 240702 bytes DashWallet/id.lproj/Localizable.strings | Bin 230156 -> 231438 bytes DashWallet/it.lproj/Localizable.strings | Bin 235304 -> 236548 bytes DashWallet/ja.lproj/Localizable.strings | Bin 191332 -> 192190 bytes DashWallet/ko.lproj/Localizable.strings | Bin 191610 -> 192572 bytes DashWallet/nl.lproj/Localizable.strings | Bin 232926 -> 234352 bytes DashWallet/pl.lproj/Localizable.strings | Bin 232362 -> 233710 bytes DashWallet/pt.lproj/Localizable.strings | Bin 233540 -> 234976 bytes DashWallet/ru.lproj/Localizable.strings | Bin 231876 -> 233246 bytes DashWallet/sk.lproj/Localizable.strings | Bin 229262 -> 230514 bytes DashWallet/th.lproj/Localizable.strings | Bin 220756 -> 221998 bytes DashWallet/tr.lproj/Localizable.strings | Bin 225954 -> 227138 bytes DashWallet/uk.lproj/Localizable.strings | Bin 231360 -> 232694 bytes DashWallet/zh.lproj/Localizable.strings | Bin 178736 -> 179752 bytes DashWallet/zh_TW.lproj/Localizable.strings | Bin 179012 -> 179866 bytes fastlane/metadata/ja/description.txt | 6 +++--- 22 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index 8db9665ac74f8e955419af923aa9aeba6331e2cf..f2df5df9d997d785e8d386f26113336a83e54641 100644 GIT binary patch delta 707 zcmbV~O-LJ26ov17qlu(7PMrKyZJI$v630}K?nJ0Aw6zNZExK?OCHU8BnuNx<5DT^i zDMI_y3ta@wlLN~F~g}9dpE?sytC+}-0!?I=gp6A&ZVEu zxzG5*pzj7Y(ia2oW0;=jQ7eB0G04!#kr>R4w_w|>toD29Y#l4eT*q#^4kZJNAMrz& z5_znp(LCNQ?y5@-+z0pzsm(+;1x*ZUeUOGp_D{ft4J74$z<852F_$&PX-KNOPWwbL z0VHYPrWl@nn1U3HF*Z^H{aG+_5xa7_;&VVNG_&#$ov6FjX$oHm*iPmRt}D>$J3 zUvhxvQ=E(=Co2_DREkz#sDQgiCg$TJt!Z5)5r@Uf3@vcts)16m}%^qf-IM>#f!3OF_p}yZP zqd5)ht8@rL7xx!|d%Qw2Q}ENGhHl?AflJn*19bVa5c&%`+0u$`jdG@NyGVQKZ5|zR pzR)b^U20{Nlf@XfZk}A@!bfYGP;0GUjo+tO9kVh|@-gjvqvwb{z#;$u delta 182 zcmbPol<&wMzJ@J~W!jS+7`>)1(PlK8zDAo-Zu<{y#*Vt_1)CUsruVI76q&wn6{Fhp z8QDxC(=*mF@_`g@cU#RkOBbw-B3`GpO(*=c@vbWE=$#{hk ztfuESqnw}NSStringFormatValueTypeKey d one - %d Händler in %@ + %d Händler in &@ other - %d Händler in %@ + %d Händler in &@ %d merchant(s) diff --git a/DashWallet/el.lproj/Localizable.strings b/DashWallet/el.lproj/Localizable.strings index 0c76b58a9dbfc8ecfdd3fdfb06c7c610b951cb76..577914667cc7819c6e8062cdec091cbbaf93a1f4 100644 GIT binary patch delta 1378 zcmbVMUrbw77(d@RtSxOVwOvaqU3+O@g^fQt8xkiN-BbQaf_0Pe=-N%sLnp@ zO<&Y$*h&0mvJlMX8*ON4y_>L6dYK6JLCwO`T*~7N+2Tg_qRIU3rDYk$7jtvd(|dlu z@BF^s_kCx5*>P*dF_oXjrXV<_bJ(Puolq{S7H74u?JC@d%DgeE3s+Pz<$Fo6l=FJpnH``HjX$zp7Too0jd zzK?Ha_>Qk1ax325CQMbDSR(#aam|P^i?93y)mXd<4*6^(pythRz8=S$Az(g1ff8&K zWiv$J1YRpbZS^7@e$}9BBql{7x>zrJO`iJv4OE_o3iW6Uv;ls(mz(h87I0K4Y=KnX z5P5;KtcLu*jQ=3v=gqg;|HFB9Euu6&|(N3R6+MbsU03NMSkwZu!ZSORh9K z)!*KRecf0$!@Zl@#*$E5(xzTWfveTuL#YoLsmBcq6jsjT&hN0JgoQ=5@iuhu-979K z8#eHpIHs^&td&_=m_4y;7$7sxxg`HCEGH5c)w>GqF56`iKO>UjN3kS-9dOH>JBlx_ zgB5Q-fI8Wpv1}F>#~*+f&yPa`78Bg3qxNjsjGyI4)cfo3*-mM1w}?fNl&go2;e?-? z)IVzY!@YQPfV*rts@**Kx+vywt_JF5uHhM68{iJL>o70+(0iJ@LIskwL}k|fE&t95 zy=n9o(&W9rJaX-hU419U@7nda7EIj(t2ryKi-O2Vm^h{u&hpFWq%-D_<7*}u#cwNx zUteOr2m!fJxm~t#hje@qP=j{y`Zv3+6v-Qb59 z+Wb5uQ)@oF-VIHmL+m)ghX0e)bAWqFBrJ4tufg*4v-jwLQDO}eKThirHjJS07qDxV zJI#X|O@SR6ua&`{El>3lFk!%BEQVh#^AO%ob6@5ECAWMEb{UMDaOEO*cy-USUv{Q*5glty`Y6xK;!M=42#X#$lQ z@V)f-TR9iKvNtGNlG-9m)0s6?Op71r($FuCjfvF^J?N|zZSt*06?o7C;TnZCuzggt zUKXXNk&Y>kzyW;K1NHv`gbC6?Z_wWka_1bP hEcI*aai3I;a1Zh(;j&$%4E5V*QfRo^Dg34l>OYOHju-#{ delta 442 zcmX|7J!lhQ82+9&@wE0h%2DuWk8&tRD43)YIut7+Eku!Ug2XHZg$pQ%jX{e;E5WIP zT|DH$4yAPIrojZhtw`x04%JCYDJ2aZbaKcEx_P;w!~4g>%ky*a!-~FI&Fxm`wMQ6v zk_kTyyYZ2UYpfNtyLWirfXmg>FnK+K)5rC?0RwEj6Ic6Z@b+TZIdzNO%W%Vb&*rr( zhDK-Af|^&4)pPYsJ&Ly{%2TCy2CB;6-{gV*oW&H_&co(*4tdTLQDHF$OYh`SF7P10 zqzaW{iKr?kB3$a5;`bgV`z^~tgc|D+#+m+yiXQ)i<;hZ@yY$o8*uFUbiBWXS6 z%HJvOm!-g;yJCio#SyOF6-zhnNyp)pTAXP2m&5F9$*?&uX_o3@=x$B6Oztd-&E+K- r;_)k~Xy>JDtR&j^2U8YHpJ0S9dS;R*zHs7f>Rf2Oadpv5mEZpd7sH&7 diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index 5e47a1806244e03a54fb28793da0c8d283ffa162..d709520c651cd0c9f6df0770638f114a5a92a302 100644 GIT binary patch delta 857 zcmb7DO-NKx6h7y^QD-K7^PG7;nHcjqYN<0#X+ne=Qc@;X+7Bo}F#e>DqcdoVMg>9; z*e1BfAqxAUMOq7;pa)HVSkx|bCkc^l3Ym0bD54G1yax;Dod@eFFpo-_4zIXsj$f?Si$;pv=m?p zcbBTt0JQMww+@~jmnmS8%Ba4ZS&a`}%y*q$zCxMD%+_nOlFFCNR{G(=EqvUf@Sk^N z-h0JGb!JJU=PA-C-Ak1&8Xrwk`k2QmIF^XX9D*JQiz)TNS>c6+?Set@3$I=HYn>Aw zL??!6kDcY(Hpcs*k1|iP99phma_(_x6}aAiW@)TqS--PTtdiNq{F?1-TgD0K6g877 z`Jt7sEM!qzlzFMPTlA&8Hl>6GlRn~6mdD3?%oz9 F{sPXJ`Ri8+AvOM(Pb2v-lWTDw4F_lvC4S*yIe-L>AR8`xuypt zGOA5~@q&?O@`Hyg+g~Lzo^t~mo3M&eZ2Gwsj2zSdtzZ}V!#<1<{-ZA=AO+S;tq_*8Glc{Xx^bNn6e5Rjc cV%Fg=0Gbc7Ljml!lF0{~g}2KwGrLU%09#~bu>b%7 diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index fa812eac99233cad3fa30eed81e89723f3527594..e2311f9f384fecdf551fad8038cf4ee83724cd36 100644 GIT binary patch delta 813 zcmbtSO=uHQ5T1FKWZiCJ%_bYWZqqassi}Vy35wD~K`>S{&>p0SZID1zY!?#knK$3t*bJ;T z0;|K0oG)28PTx})rO%IqLA4cBX;?=e&8JcIpZ8txjrfwZxq^fAt$^0s31^|7224Ce zF%wU_=rG+H6&l$VUamGxoG8g9)1Vhis8Ca4+(jYUT0}3Vdd2cp)CYp3_ z4Uf~p8e0EkYxoZJD^P-I$iZER!)^Y~LV@nD^RUS}i&oZAbI~8sshIU(u8!5Yx=0+5 znS4-I6qSnG!eF30YY3IjZ3{Q5P=1ublOc<)e&JjH+(D&kH^lYFx(X*C$=%X$2W*(( z&PD1?iGzBQ6DlOy6WvsCQ0;6h@1~Cq2K{4j1F|sf2~e{~geZ~Xb}ob7_wqd6uUi@! zhdkVb0(Z_bsmOSSiJwTEq1qI7(2p?NVRO=k94*?Yll5G5$&C+6Aj8pFk7$EUZ+1i< zZ9Ns?&fN zU|(B-q*l*=6Vx{;^uM}>zfH%WOD3xFbt~kO4bS-fW4!DvTbtvq-m{`(X%VGm2fOH6 OT4>tux0ZmjZ22!GYUt+x delta 299 zcmdmRoA=yB-VJu&rY8h2$!z}ctwnkA0#UE&i=-I!v{$mZu$^JkXLDy$2hs`*CTwm% zmNAg8z@X0N0hIM%1BodxxJ`FVVv3zEpuotoJwTcZ8*rtGhOWvqmVedCRd;a7q*p?3(K|J%MLMaFFVAfBmuH=I^RtuzR7Di oIHsSw#l$6xt`B6<88#jTke|;?c5K$3e(Da>g6%tQGu`O{09AQfbpQYW diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index 62a2f523244123c927736de91f88798f3b2b46e1..6c5baae0ff9c1ad0dd1846f63455a6dfdd27e7d8 100644 GIT binary patch delta 885 zcmb`GO=uHA6vyA24JNM5=3~<&)g+{;mVStdp-Qb-f)_0Wj8sDoQi&zhTAM6wv=nj> zPvRj6BR)ZpdJ(Y~1LBH8DN>~AL9`T)B~}p;5i2=(h{f5UqMBD7g;@S}t^Dnf*4<~sXYGLNhZ!TT8yAwk47=H zk3Nl{+iKKK!zi4GAmnKMy3|JVW4MK8hEdkK3xuxneR=Ld$GB>dy=Cm3&B_k5n4;78)nTHl4 RlHEHfcHl22${rMZ`~%2f{R992 delta 327 zcmW-by-Px27{#CG-l(^*>-7VNkdP>8h}1xbrivOYa1riekcndUaZ^$uXz))c-r;r05Y2E5X{g5DT+TTh4xHb6Q)||>(mh@>s;P=wB!9Z10;c)*0T)DAB$BS_@{F7a;9pk5FM zXg+`z@i>PQL26`Br%D>VVr&bIFzMGAq1GMRseFr0$}$|J=?lfBu0e{QP)vj>_&VDM zn`vXnYQm;`+ml599;HRMvLT+@SjYZmp@SBxcF;Z)m7oWZpr-wushF4Zs23QFRfvYKk}^$|vXn`$AGA*1J_qVw*XMkTAN KiMUN|oc;mdhirHN diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index 67e8ac97af1df2314c5d9be57f15a5c10f462723..db8774b84cd88bb8e8abbef6f8316d7a72fde11a 100644 GIT binary patch delta 778 zcmbVKO-NKx6h7y^(HY+`!^@vHTBE)(&1N#54Ff@L)QmLy5o}cwPNU(F=~J_?HmzeI z;zEatXcN(56vd%Ol49WOVjyVIA_fEr1R*qyh@j3)Q(()ui+k^P&v(xEopZAp@6reF z?AE-TO}Z%KN3Tqz^andwIp3U0-l790)|21FcDkHJy~Kb{=z%kEmfE`TqP=F~F{B?R zmKGV%0Il+~;d2@=2-m@oZw#N^e*|wtDDfUOQtv5VWfUf9`o2<4&vMYhchqFfTCrVo z1$#Ov)gpAt%%F?5rqQtZzmAE4$Fg7bIt%Hj)~)#L zS&uUF(5He4A+FQ~*T7=lc+M19G*=}m$lr~Xm_OIj#;R~pUpGeFy%2*a7y28v+#$;U zgc-+$<{ajC17h^9N(4OTVF=e7iLtdfTO6U2X>n9WzWIG@AzwXS=ywO- zCSZtu_K7N5PAJ9l!rM|$0p%|dg(-R(#Qik#T+#UZIOw&Gb^8oB2<_a$9*FP?vegi` zRfRe@L9cXd@azhp#cI)5z0PWWk86_mT>%iJ&222p<*s-CldF+VnOH72zJ&Mma$}=B iupB!-Sz5J(Pi}8$^uiJv8Dqks8{HC;fP(P#P-Jw~PJb5=8p zhc?`jfr3@+4y?YsRw;#}Fv|*g?V!$Xc{g45p(d2*6!lnbo zSf+azF!F3)XUHgEGCd**XhmNtqsH`IIZQm$1(FyAw(F!Zx_L|w*a@_0-bO}|?HkrH z%IHu3aGlX-`=`5%eN15H^ri=lLSRR1KlXr8Ph|R`FN|8#tF{15Hu%c;qk8(U0w%TT k0eOr(ll@-tY|krX>Y6=$!(S$!=?>h?JloZHnb*t&0DG@k?*IS* diff --git a/DashWallet/id.lproj/Localizable.strings b/DashWallet/id.lproj/Localizable.strings index b2f55f93c96f1497a2cde2f1a730169244ca9db4..9f240ec2c87caba26057f01bf3505c35e8900ae6 100644 GIT binary patch delta 1109 zcmb_bUr3Wt6u;+g;`lZ{zxGY%aN68l%dIlZm&n9yNr9*}AN&I=(M1x@m6PZp@F99B zBDlmMDvYQw7!etMFH%SaA@;}jkg}j&N*{a;I(P1m&3Y<6F8AK={Lb&3^E>BWxujmb zrao>@iRSw@+_4O*_?B`A?RDeyRO(_EPH5oX(#>LQgeBN0JIe-W4dcp9UWFY7D542% zV&<5J@sLSH^FgqSnIcu32)U;Z|6HoYgcsb!r^)|38^f3v0;QP?^D+Lkel5Rt^$7z>*Nm_B1#Kl)ohO1F%$45R; z4b2Zr4cHbpsjeiU$J1!(J&W4!}4*^B6P=g)KI zUL!mSmYuFn(j}HjO6s$okgWFd0#t#`>L4WPt~W3bdM7(axk=hQ-Q-(v`u{|? z8G1&8ka6!FRO{KUR^Y-i$;lU?&j^2peF-AxisYg2-MX2LWTwUW0hP#(9 zUl$&WD&{Q;+Q0L>ChiO9N_+pCh z#fp=l7ANRGbq9}5m~_-0at&M7z=F}^CQFgDB=9+yYVhd;?y&v?L#XV(B;pe$ns=xnZ7ZMF?#zFWkx5)=`E^^Letl&Fd9sr_9|@p z92G{P?bB2l?-)%tiC{F_z5__OO%IsK=r>(zK2V`e6qC^O96n~A>01^tDowt?;pY{J@bpiQ7)7Sp?l zHlG#9@S{r0ji|}aEw9|$_EY}>2Dc9jsRy)XVhg=C@ggk=MQa>_G$dgG5|D*?j!7`! zD#YPB+@M$tZ&{Na*oCyzfm)>jtoDap26U`&;Z z`US^@XNb8{j#LBga9o6p75j=mJk;#R8pkcIAF%J55~{MxebahZ!l^~d&k9XWm2}!~ zMqR3vnl(5h_Mgi=RXg#UhlYjHV?7bdtCf0{e{ZsZYiua(h|k(~=wU?h1&-7mR}Rsq z0qm_FfeH4WIs(ztKH)`&AVj-;!c8xFMbtM6Gu*BWUrR6`%lSN{=-ZCyp~J_bg4SnI zt+Ko5jE4e65tjL77wvW{u1foBnox=`MK*-D`hO@oC|wjSQh%en%#}5|t)sWrfHt_qjf%s0KJ9Y4 z+;nV#?g=G8>pB|$KnmNQKYVp^rW~~Kb@b8XDcj5IfM}`~H98y?6(L)*y}!T4`gd3( htea~zc1qM!bXvF@40e#74E zz~If0%23Hr3}mGMSvf#Dk0Bq(&Y#ZM&L}?JtDP}yyOTDf3FCAf9Y&|=Tbvmqrt9f2 z3T)TVW#loQ9+Jo?Fr6)dQEhrl45Q5Ut^~$S?$aF>G5SrvwUSY2d({fYGQG(T0$$ri zt}{+z0aQjLh?<002yrPxJr) diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index 94e4e2c3f3590cc4e57365a4b1db982333433a24..d48f14812142073c6ddb1ce3b94b62f077c82a31 100644 GIT binary patch delta 861 zcmb7CZAg<*6h8ND>Dp?Fn^Wh~xhCqAJm88%CME`bSbm0SnW*^@;@fb#v4I6cp(2uY zYxl2(^dUsWgqI*v&`JGB6Vf7z=7>NM{1FVR{pfD?LH>)E%X{xR_c`ae=XpLaDW88- zJ~lZ75&b5|SUNrG)l)IS;?M9-6v-N}1=;8X>GYS*7U)TXzcQ25In{j!h{@rT^N-#T?d|NmM(J z;Q~Izbq;)qG&riEK`BnEHIQ&I8*L;q=4&E47HlL2>3$P&)TE4-o6T(1 zEoh}Vr{J@z6;KFfPVxx!a^g|K{p`{TNmrYBLIK9Di8S_XL{P-NbIqO}plnS^bn$i2 z&R;9WU`(?}l9*?OXk+)}oAe@_v%Df_Xu{JsPyJ!Av2G)t3mGZT}A}Y;M1& delta 320 zcmdmYm;1>z?hPtso7KveNKaliQEa-~c1D%S9|UD4FPJDboo@;w&t`{7ea6h820fe4 zADt=#W~4q!7oM!g=r#G*S3TJk26qfz89X)kW3b)exxr_HJcDyU_DKUz1{a34(-~JY zMsJ?=O^pelEl(iwx;71p$LEd!7D8|_B9!-o*jI0QO>GPTyd8WTO`ouWkz+bf1yj>@lX51WVgR;! Be5C*Y diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index 533b89924fd84c4006e8b8e0e35830923435cc91..ed717dba1b1377ba46e788238bc40d9bb34ac640 100644 GIT binary patch delta 924 zcmbVKUr5tY6h7zInr_yb>CD#Lt~Tu7P>Tr5kPsg%u!JO6^de>$k}X}9W?&SNVYa%} z=_x`?4Aw9w{9+B6f7Wk;*20t?43^YG4@J?mGKj8IBkC;qZK2Oyz8)$s2Js7N{d`L&((2BerCo<%;>aYgEO3V`0kQBAIC_0aKQof*Lx1 zL`q9&QYHs5v{O0!n31LdExg8R@^-$|TW&2X;s@@I9!2u^k2Tt*FP+~V4$f3bhjNL8Ss_`b- zsg(6G=m;|acW%h~G{=(xd7u?GpJYE&K)DcNF@b@J+}Q%ofWIIMEgM6&ycDY77}SY? za;V^z9s?cClWgS3Min>R(#AQ2-vO1BXpoX=32LK_O`(a0lu6<0?xRxnr(1w!T$*eYxTe=?ZHlOxIh_&*G;`N#J{ zpCocvxqr|kVp7OfFKPL=LG#-ELcek`vr3`h{NDYkcnqU!ZIWT-+|0z9DfaQjnf(GO Ci#Ub= delta 293 zcmV+=0owk&;0yZL3$ToklW33>lhhDElVFe0_LX$Al9Fx=#K$D`=)RS%` z9J3JB5Fe9X6-tvJ^dy&hbpi^Pd|Ltt3?Kk_vD~yE07(Eu0F(a1T(ju(ECG{b^$?TV z^)iJS^-wK zMw9_?9S=|dasY1tb^vJrWB_FVa+AS3S(ost0R)$zu>lOXD6#>vF_)g>0W_BcH31Zp rfNT<%tlV+Eq2ifmshF;|r zg*JIxEj7?oQHlx$@=a!KunY@!(|8MRraRY7xuzIglIj_kHh&JkAEVao!nwYk**%cd z3LoPJAAR-W7K%>d{)|-#axCM7=A6Q5B>xQBsc#yc+QAu|uu=FkI%RpdMeF{8<{mlj zx4I*o$VDTG5PMFt&TG7LVl?$$xV2P3G!72zKt+zunK4OI--JuPn#|oIy)i?<^A@|fsiRPL%)nuT16ErD4i0H ztp8)nF@LtZo@=7#rq9O>UMo`QK^xj=Vnh_s#9d*w=u!1jCg|x+RC8j`tsjie>%2~S zW5GQ7;9C(Ge8FRLFM*rneh6hSRjE9l+$7eIC` z)Ml-@qo76De!DB?mp|yGlwE>W*}G8ZYvRHNS)HEG@?@=I|9PVy7lgx}}fseggls>c#*7 delta 231 zcmV4ws-P0yMMAuF6r9Fw7jcNC5%zB$x0W0Zf-_ zCIKv$l7aye4qLC;>p1sHg!}mmn+w1eYEt0S>nq zDFGrgm;74+Hj@Y)47ZM40qRDV5UT-9m;R;!6qk;p0SLFgqXFbBmvGMkOqa;e0WOz* zCIJSQhSLEalfVT^w`S1+(gByC(g9YNgeCzJw{+71yc3uH<^dF!D2f9Nmmt*vOt+xt h0R(xMc3=V~m#C-#47cE50#cZlK=%Szw_y1KhLoPlRwV!c diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index 2e567a627c5c7accd0b434fa2aff2f68a112fb97..e7e2cf5494b45beadf9c53fa25d98d2ad3d343d1 100644 GIT binary patch delta 751 zcmbVKO=uHQ5T1FdHmqhhZhqQoTGphRq!cA+iy)S?lu`-WNJ90b4NbuOXhV}mT19gc zJz3si4uYh_B6w<5ScD+x$x9Ui5wC)H3SKONdU2AdNWIDO4*R}uzW2?1^O)4nYiju! z4kJaYVn9p570AN^EJA`$n(kLcKfS1-;)ugCWAm`WNP!vGU_qXX^~jGgyPRA1nA3>m zL!|q0kgR?@(KiiII0I+FfC%JZsa=`kzZu%9W7>S}#|zix_Kcg#RkYGv6~pvt9doAs z5XX*?$B+BXdvz=ciZ;-Bd#ZuvR72E!(ypl8SxB*)0*!wY<5bfu3WXn`T|OA`(A^)R zV$OaS@l}TcM`4IxJpHGqBE5}>1CAjE6!7i@`Y6|HQ5=8K*>;8nvJ~1Qg55FhApuw0 z8dMw+I@Ke>-7cc$F`;6IXN$vSNb`&gX3xu8?_D&xDTXQV1=U@7zRS~^-QuF;C|e%O zT5VCjTW+)Ske91@AC)S?iT_i2kScd9du@rfT9*B0AVD8CMUPC5vRxbMxI)i&bEdfs zVW*9!LfMz(FbycS0%dv%G8A%JTs8wH*;j#kVSiFv4ARXfLX}~?i@vJp)eH#01dlKZ z$N3A&m(70a($IN$2f%YS;1nM(oaZ)^Fo8>O18G*nz&|1(-O*AXl&_kemYQ2`HwWmV shK4M?QGGFX)7s0{9(8uW;DkG2{=z8H%d>rVNjUWu=lAA$;Uq`?6D*vm*9Iyr&SYkG@1qu%s{tBib-t_)=i`3yM>r3@tu znLt(^g93vekWQJr{(j?zz2c511MWqj({|#GbpXHL9d(Ziu z-~V^M?sC<*{H{^|@&ehK)+D`!sJwW_lFtNo$i8|X9hrt(MoLGt*!yqP*T?CjCqbvL z0K8Ou2iq0;gH_Ps%{0UUhs04aEsA1Rlth+)Q}p{e?4s4rK-cz*8G88_3={4Hi%tzg zoBXZYkQb{lCy3zRPK5+)qg(<;XmkavW?PJiv>21{>eJ-!2ahw-2loSgoCIrdR+NP; zDtuar&uhFLWy>T#&xpL35?90@>{X~dE3s+N3lj~RSQ1_zlIOo~Gi^qnU__abGvYX9 zCLlyVdeL&O9|mifmJG03Z1Ehs=R}!4U4$OW*C0-N7deB}Ie5bPvj*SxcaC$)N=lX` zsnj=Od@HaAW}VCmjA3Y8oaA#9a04)S2|8R-X$?kb{t_6@&ac4;!lRV=6<(sl)8JK| zX-#ud$M~8Pdt|oWA??4Ta{fYu9=-}gv{lo*vi^3H+&vxKj6C}dj5^n^LS;J{e#}wT zhaTs16XOq_J%D=n1Q*a|{UuiZ0*lM549JW?7;L&L4Bhf_BI@jX3~wMUbZB`>Wl*Qn zyY@txjWWFJogt#$DrJ$nHBRBZ*XFU{sTH?Sy*a_z(Jo&kQldFcO1 zEK~Qi(bh%O%`9)gPb|@9p(XJH?ONt0%$vOCOQ|6Jl>~z-ub@pSP4l#>{=3RWfx1Vv z4(e^!qQ1RsD|6PaeED7}LH;vn@WOj2XF@NpPoLP$RZoi@eBCM6u60q-1k3jy2lWK7 zliu>9afi(f;GXlnv7_#0ZX(G9LW+Hxym2k2*xIR3g9x2BAujK=f<5Z1qT1M4%8e=> aWTCE)GQ(PkN;!=BCtaHw>R#~>kI26-#ZEK; delta 496 zcmW+yO=uHg5dGeymKv70jY?!GvK8B=L30QmR7z=usx6vCSxTXmwuuQAqFGRjSkGR> z9{kXO9wZfis+MN`;}a24sX6xGPw^P^U?K>m-n58c_An3T&3nU}sXh)ZmqOl3IpBy9 zo~$Dxoz_0NP_|^+3;E>y4T`Yy6ehbn0@kx7ZzB~sET+UIkrStdEhfcTQ4|-&IdS2| zJES1rmfBQ>V0OrKV2GQd=&j~95Aj`lZGU2mr1&k)>ux|yYqp?w zHnc_UDRFy0M%Ak*4uT(b;}EyZVwiinVXFHvTurburUU*PL#N7|f_;S79wNz0cd?%n z4^U7i@8RoSKTov_7DuCqt6QJYOFp;$1qr12$vh&eXBBPXO=)pP6d5P5RZg_-<76E{ zUaVmc->D&fvx41nwrn-%1efaA#xH9cK7XJQW&Ff+2c~3uew-(^kja%94W2?!_B{`) zohGdv;E#h8ld-%Zt6i45GDPdd?i@1g4p0-j4mIoR@|&IjPK* z&)#*Ql|J1UsNqRnv`PfC@g18ee((k8Ol%>jmtdR%#Ht=aQ zKAy@Z{S{glqWH^0F)!w)MW7GHVU(7<=yPs7zzrHS@O8sc=zun82aN`oam<`4##+Qm zT8j#Mss>&NfKj34((Oy4pNf5GHLsQ6<7!_4Q#LVqmGsM6Sub0e{9ZHr zB&KN@3pOz3#4-ki{RE7`5NjM^Ih$HT@7SV<$(26XlZMinFX*8_99zw^Uomxp9ATkm z`Q;&QSA!t;cSP3F;;68jQ#~R;wDKC2B=PW1k+(_Q9T!8l>=vkmQYJkHgP_BCZr}nf zwFsxZloJ-Vc1t3UCW0vzdKkbR^dcfuiupxJS|{{E7={u*N!D<9rA6fYg+B9(U}hKe z!#NmbqA>Itu2?qRn-k^qpk653b&l!l+Ud=la8Z>7(=$6bHl9H1pp)$;$FEKcN6LTx zE;E!p=~Ox|Jhoc7pN*=Phk4{ delta 309 zcmbO?kMGE2z70C-S)Ca|7$PQ5%o3fxX(FTAGp#uZz2FiW@M@W diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 672e342ca1d2524d10bd2a43c5d4d306da477650..6998907e44ebc994bc2c4c62d9d4fb2e5ebacc8d 100644 GIT binary patch delta 1247 zcmb_bUu;Zi6hG(8=uBq%XXZ{jboys*?xo1pyE|=h-^7!MuEw7iPcq_3!z{KdA%b(K?6!C#U+$Ohp5OV-`F-bi z&M$9^o*ygDgv_E8bU-&G;Q<`Pq^dE`scgHact6Bp7nrac5@6y`)-)W26FrsQzd^0s z;#RR8^VFGyPc9XxKeiQcS3i{wjU+UjWKkmtW2iFeUc#?@Snbjw3Tt7#LVtAV(C>$0 zy}wa)i75%~6rGZ~6B3*}O;wz|N1kxASc@uLlWP+bYTIp(JV^;CDdYN1I|?B|kh z>amX3;?ub*cdCG6>(I^F7Ia2T@awyTV*+-HV_bF<+Jub`+vSv&{|;;5C%m+jGkxe( z*IPALQh**v^Rqsz;cNY0 z_T?YlDM>!W`tc@C?Hxgl$8KU!tqs>%EhCuI@&)$l5EFjeWcBcH7Ry<`iz}=f4{)pz z+xT#p%GAB1g?y`qVpfAr2ST5S%S{dBv_gyMqKkKE=wa;uw(zYV$YU*z(u-2Q|A@4y zdm)adsF0NB>7t)Bi>-=^{~6#5V>HJ)wVvLbR80?yIhP|hFMdMP?32dX98FVa=ht!H zKNPe!|4n;~#+e1M+j{nzW@-Gq*io(SY}S57&DvVxs4JY@tJcX1$IJG>dwF5`f9=!7 zo1#>~R~j+MZBYvHXd^Cjt$}tCYxg*IVwO;_F~1?a8|5=#fsZkMN}#VsyT zy5!s;k;3O`LGK=Nstto4S4yB1n0&h&1HAJ*`S`d?IwsTVa8I$3l-e^G7HQ|6rZVrB zMd6J{sIcs7apF=WpYr*g-0Vf8M29+9BE^isd|BV9`q3(0?ZwiHj{qsyhr%u8@4Z<2 z$xZYJ?2yydoY6`^* delta 601 zcmY+A-%FEW6vxkbHfApOZoLZSyBB+5b5P7^HxgxInn7uVfy|K!TXW`I`NmojBci&g ziwNo&o~uP80tptP&;t_v1O7m|h;E7rb&O6<%bH3+$zT5Yehrb;2 zTB0chF-Sv(3O%fyhY}AkLyyqX>U3fT5@0~T{J#d16v$!g!i3FIAK-!fD4$LaSZf$B zPX&23xm9m;TEEBai&{$SCZ1GG$5^DY&I1OKyU-Z5Tg$_aWAc}v9R!a@d%REiGB3WgXgKE z6BV(`haUqpH-g=C>NB>GaRF_V9Y(w8iD2#|MW5pts^-y$gOo2|7k@f5AZDN73xDlJ zqhd;i|kh4I7XF6Vm*SYgAO1aRvY2pH{J>`7ch-R?)+w`*jgo!?H>{B|ON( z@55qg11rZJX(^Pzn7ktaacU2;OLSOeR$&W-6_0GKF#lRQan-MQoMXoWuQZ wcU)>2a8YJy%6v_j5yc(WrT#~laHWyqz1?meecdn4IxUsmb*JK-+wwjB8>nf)zW@LL diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index 1b9f666f70797262a882992b526d80f8d69b7a71..739cd700d1f8c83df6d530e949a1354aae62e438 100644 GIT binary patch delta 776 zcmbu7PiPZS5XNVQsCC;squFjZ<_~dGwWh_@7{NaXMe3m=1?0vNpF>~haNnX-UJUK?Y*-JQfa-F$FkqP@6B%>->m;7{Qg_` z!-WlAEmMkL<n=K^(%vp#k3Y7z_Y zW@Gq(-wu$$zXqs{RRz<5(mXw$3WV`OU9C;d;iF#uVd7yvwSXrBm1r^ob7cV=7#)IX z7>7}qgfxuFdj_WX`XYAC*YOaqFUk#@J-NJHoQlY)OMP>NrL+bGQ^$@2B ztpjQ3fypHV*JkwX0{2<4#M>S delta 217 zcmZ2?jQ7eO-VIh?r#Bp6lG*(1tC8~b4}y$7(>){^b(GclO!(CK4EcokB>9Z^7=c(B z2(^JCT6_u&ehm2xDbqi;GA3^SAj!y5I{m;RpvDOk7)7Q>^)qr!&yi&0n9jt+D8b6Y zXUeBEnQ?aX_Fesqb=s2~SiPpl>}FJ96$KilKKY}hFgqik1s^Y;<8;OaOwrpv?Pk2h z2v+rIFQc5e10M&UC(v>xK3zU`pfkWK`8cL8oX)7-ZnuwdyWKvf5Yb6|UeoVfWa8U? J;4)K47XbAdKGOgI diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index 98531b54f9b159d76dce4b91d24871d0758d67f1..8d9fce04df42aeaa05550e49c1758f2b86289a90 100644 GIT binary patch delta 749 zcmbVKK}b|#5T5y0+4beV+PCYny1TEpugx}*qUd0?K?FrXkmS-Okwl~|rV?O+8;+wX- z?ae%K1qDaN8az5L{8woR8E^(GU%@ zhF>$B3daztaL#yfJzUCN8>w)4q@v!n=rdC`p3JEb+>a_@JO|w$R3jeGsYd;1cMh-S z)&26bPipB#)S{i#MjjpeHSRFR@+ui^6Tl*WEzpe7Z|sLX8lcZIgD68DA{`tJc2S>5 zb+KBF7p>BCJg?#=-TEDCPWrT8n141d&^h54k}vd9pPrp0{{R3 delta 247 zcmX@~j(5>h-VK+2PM$DJW^>&yK9$K6SiPq2l4I1HzUBy%kh%hcA45Jv3PUP`0)sb0 zCPOYm4v@?S@*ElR7!nyW7)pR-(ey@rro`K-sic` zIp;a&-ni(P|H(0#n4nG_{e=cJK^nT$s)Z(XVIpiDmeW{^RnJ&Y*+l4xps2AuU)ClW~?dE2_-?gZT3<+8Gs|!c&~q2%MpTE4YsOa_FMY z92!a%WX!o7hBwhz2z^BcMBx*#gP$&jFl3!o<|)tr!iT80!!Qi8&JY-|s27;RYT7)7 z9+Ei`F@K!G5?85Tek$vD@8mM;)jeku{V?@@a&=?h|V) zULxNNw*eh+5>D_M;kH;#9_RG`xQmC(QCTloYlH&InY$+CzT6*3r zT;9(ZZ;*}bx8-@AY?bxgfm#`(o-1NC4SG2I-&fIR-f9+)1x@bNq?&zTBVU=;Z5kRWj0mM%LR+`@Rr58N(t$$!;Odw!`9b3C;e?jvhZHd^A}jTFt(G@yn>n z+8oMPWT&<#BI3#LM4aV{2Dzdo`#^P!M(N=*;h}3!#rNjXdC`4Iw{s7oOiC>c(plP@ z5*7OE=DZDfY1}64#c$EQZa>sM6T(GpDUNGhEnJ3q11qnkp^vjZ z!|C*}fK|b17OB22w$a=GO7-H7y)esI7J4au9(9^;!7}yb=QeU2(`*G6kR|5T67QfKM{8I?Tjn`7hmc0esGT6vuz>?GLGKoyHYqiD8jpn32#Jm$jl~6|<#6wuwN*@=vi!f|^KlitrM6 z%b4Ozutb@Ow_WJ)>(D`>OQ&?t;vw8Uh=(Px4vICiT{^sX`F_9eefa)*t!+HlN~xl+ z6%FJoWcd@#hX1B$2a`nFqE_tdk+{EHN_kn3JMDKN zJsQYUBV?-|Beb5y<{IU&{hs2ey`v~{WjgWi%hw5R^IhkL@>a<1#Nt-KQ20(}U2V+B zUfC`Cq$~Sn23^mnx$bp0X^%qh5C+P@%{uSV7A2u~M-26{OtJV$PdpG0#hjSLy$U&D zF{tg*`EZ>JyPC&Jh0bCMG^FxXdTX8b#6pmGET%eQIFwUznw9c>z>lzQMPcyu_1ii|G XczVFe5Zd&|Nb|>*47Gj0$1nZ@hPt1o diff --git a/DashWallet/zh.lproj/Localizable.strings b/DashWallet/zh.lproj/Localizable.strings index 8a1922e475d1862b0e8328e87fc0295a5fb0d10d..e8248608944f1c4ecb71fac930d9c39280352a20 100644 GIT binary patch delta 1186 zcmbtTTS${(82;X$HMf6mZm9pJE#2l}X5oQM=rklyD$-e+`(1>GfHZVvhpA}lPISB4ke80;bx>BcC!5S6~^PN{WK{1^ZCzR&x-r|0{8KiG+N z*5~qI-^Da+8_{83iXI0&MPZv1IT$^DKCBCzA0Dzu*BYKSe;ma^unLz1XNXF|WMTCN zN5)kQM+6>NNmCo3um-G2O2;8{q1a_*W;(Pi-FhL_;VkN=+JrT6QA;4- z9z%LYT$DZFY#dtS6m`f!)$ECJ$U_m*V2hu<6Vzs$pbAGT)}wZG74=c39XarYiF8t- zV-AzrRgmEId#qfb{;k_WdUcEuPtVK9;shhx7xoHdbOVg!OESaJoB9vjL(2aypF_&} zL5=4YOytTFkZ4cS9oC{U`W>V*MQ?K@o?Xb>9S|2J9-v6bKuY@|mFCV>{GQ63AZ3_o jK4L>SAUrbUW2A%%w-l delta 448 zcmXAkQAkr^6vw~+hcms*%euq}n=xc9kkBE+mmn@Sp@h;3WVpZ>8%`bS!whT&7a6fd zkaSjO7>ExUJ@_!(;KPDI8(Rgz-WBmBXKy_OzWCssz5O}o@H@Z%r&F!?Pb;Rf6nkjU zZZ1S$vp1-cb<>AVHwU89D0Sx6Zc)DGp-Rpq`Mt^qC-9U;e?+_3ipyczI`U9(+vpk+ zPsN-_iUpApQ+ApaUa`EqJ?|BFMTnor#X^r%CWGl81Q|u9_i;0FZ9l@tXk<1$mVb?WbHByHq9@Jr@#$sZ?OlV$f&cVo;h~_*|GVd-}#KMsa4Ca+Pex z7Di!zhH{2Hpa+Y99)N0_o|wZZE(0?I;Zuhs&UDrWp!VSD8*CW0w!7pqzTyXmu)_WuY*6ZAPG^q+h3;d&;rNfx&-owI4s~u+Gu0=H?NU$;2D%WG58?5KWHVfD Ua^V(XzQVxOeitVeOo5mT0E1N$82|tP delta 290 zcmbRBm+Qzkt_@0^(?bN9gr;wq!>Bg-!F-v`S)B?Flh?hK*(`J_M|S#$1B_mi*F2Y* z%(P2r`X)0bAt42Z1J(EDDKL04xG*R%T%1@iWpcyIn9Uw96c{JVy>y!VvyN#E{5P!jR8UH2MEdQLeKoG5!xjasr`>k7Y5oFhUIF z%VFdJIg;yO3THZN14zmC2|0`+0$}e={&XW^J5w#=hWP0%cYv-raEH;SX!-&!pljlM ZnRq7c65*Jdlu-#WI7@4Loj=pNEC6=9aDD&) diff --git a/fastlane/metadata/ja/description.txt b/fastlane/metadata/ja/description.txt index 64fc5461c..13f97bdb9 100644 --- a/fastlane/metadata/ja/description.txt +++ b/fastlane/metadata/ja/description.txt @@ -10,11 +10,11 @@ DashウォレットはDashネットワークに直接接続する最初のiOSウ * オンラインでも対面でも、Dashでの支払いを瞬時に送受信 * Dashに対応する事業者やウェブサイトへのワンタッチ決済 -* 顔認証で速やかな支払い +*顔認証で速やかな支払い * ペーパーウォレット(コールドストレージとして使われるもの)からの取り出しができます。 -* ユーザーのDashの売買を可能にするサードパーティの統合 +*ユーザーのDashの売買を可能にするサードパーティの統合 * デバイスの紛失・破損時でも簡単な復元フレーズによって資金を回復することが可能 -* 様々なカスタムセキュリティに対する志向に対応する柔軟な設定 +*様々なカスタムセキュリティに対する志向に対応する柔軟な設定 * ダイレクトDashネットワーククライアント - ハッキングされたりダウンする中央サーバーがありません Dashウォレットはオープンソースで無料です。 追加のトランザクション手数料やその他のコストはかかりません。 瞬時に、世界中の誰にでも、金額を問わず送金ができます。 これがお金のあるべき姿です。 \ No newline at end of file From 20cb477cab3ac9e5e9ad1482eab30516e24f3944 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Fri, 10 Apr 2026 08:12:36 -0700 Subject: [PATCH 06/66] fix: allow the payment button on the nav bar to be clicked --- DashWallet/Sources/UI/Main/MainTabbarController.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DashWallet/Sources/UI/Main/MainTabbarController.swift b/DashWallet/Sources/UI/Main/MainTabbarController.swift index 07c160bb6..28d238ad0 100644 --- a/DashWallet/Sources/UI/Main/MainTabbarController.swift +++ b/DashWallet/Sources/UI/Main/MainTabbarController.swift @@ -158,7 +158,7 @@ class MainTabbarController: UITabBarController { override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() - tabBar.addSubview(paymentButton) + view.bringSubviewToFront(paymentButton) } override func viewDidLoad() { @@ -172,8 +172,8 @@ class MainTabbarController: UITabBarController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - // Add Payment Button again to make sure it's at the top - tabBar.addSubview(paymentButton) + // Bring Payment Button to the front to make sure it's at the top + view.bringSubviewToFront(paymentButton) } } @@ -260,7 +260,7 @@ extension MainTabbarController { paymentButton = PaymentButton() paymentButton.translatesAutoresizingMaskIntoConstraints = false paymentButton.addTarget(self, action: #selector(paymentButtonAction), for: .touchUpInside) - tabBar.addSubview(paymentButton) + view.addSubview(paymentButton) NSLayoutConstraint.activate([ paymentButton.centerXAnchor.constraint(equalTo: tabBar.centerXAnchor), From 19a5d888ce22796b328feb281c0bead67aa5d524 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Fri, 10 Apr 2026 08:13:12 -0700 Subject: [PATCH 07/66] fix(dashpay): fix compile issues in HomeViewController+Shortcuts --- .../UI/Home/HomeViewController+Shortcuts.swift | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift index dbd3a998e..72a58ce66 100644 --- a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift +++ b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift @@ -169,7 +169,8 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate, ExploreView private func showSendToContact() { #if DASHPAY - let controller = DWContactsViewController() + let controller = DWContactsViewController(payModel: payModel, dataProvider: dataProvider) + controller.intent = .payToSelector controller.payDelegate = self let navigationController = BaseNavigationController(rootViewController: controller) present(navigationController, animated: true, completion: nil) @@ -311,3 +312,14 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate, ExploreView showGiftCardDetails(txId: txId) } } +#if DASHPAY +// MARK: DWContactsViewControllerPayDelegate +extension HomeViewController: DWContactsViewControllerPayDelegate { + func contactsViewController(_ controller: DWContactsViewController, payTo item: DWDPBasicUserItem) { + dismiss(animated: true) { [weak self] in + self?.performPay(toUser: item) + } + } +} +#endif + From c268c59e7bc5b4cfa05e7c4278d175f01ae72d43 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 10:08:44 -0700 Subject: [PATCH 08/66] fix: simplify the bottom nav bar, specifically the payments button --- .../UI/Main/MainTabbarController.swift | 92 ++++++++----------- 1 file changed, 40 insertions(+), 52 deletions(-) diff --git a/DashWallet/Sources/UI/Main/MainTabbarController.swift b/DashWallet/Sources/UI/Main/MainTabbarController.swift index 28d238ad0..9ca66d382 100644 --- a/DashWallet/Sources/UI/Main/MainTabbarController.swift +++ b/DashWallet/Sources/UI/Main/MainTabbarController.swift @@ -29,10 +29,6 @@ private enum MainTabbarTabs: Int, CaseIterable { } extension MainTabbarTabs { - var isEmpty: Bool { - self == .payment - } - var icon: UIImage { let name: String @@ -42,7 +38,7 @@ extension MainTabbarTabs { case .contacts: name = "tabbar_contacts_icon" case .payment: - return UIImage() + name = "tabbar_pay_button" case .explore: name = "tabbar_discover_icon" case .more: @@ -51,7 +47,7 @@ extension MainTabbarTabs { return UIImage(named: name)!.withRenderingMode(.alwaysOriginal) } - + var selectedIcon: UIImage { let name: String @@ -61,7 +57,7 @@ extension MainTabbarTabs { case .contacts: name = "tabbar_contacts_selected" case .payment: - return UIImage() + name = "tabbar_pay_button" case .explore: name = "tabbar_discover_selected" case .more: @@ -84,7 +80,7 @@ class MainTabbarController: UITabBarController { weak var homeController: HomeViewController? weak var menuNavigationController: MainMenuViewController? - + #if DASHPAY weak var contactsNavigationController: DWRootContactsViewController? weak var exploreNavigationController: ExploreViewController? @@ -94,7 +90,7 @@ class MainTabbarController: UITabBarController { @objc weak var wipeDelegate: DWWipeDelegate? - private var paymentButton: PaymentButton! + private var paymentIsOpened = false @objc var isDemoMode = false @@ -105,7 +101,7 @@ class MainTabbarController: UITabBarController { // TODO: Move it out from here and initialize the model inside home view controller @objc var homeModel: DWHomeProtocol! - + #if DASHPAY // TODO: MOCK_DASHPAY remove when not mocked private var blockchainIdentity: DSBlockchainIdentity? { @@ -146,35 +142,15 @@ class MainTabbarController: UITabBarController { fatalError("init(coder:) has not been implemented") } - // MARK: Actions - - @objc - private func paymentButtonAction() { - showPaymentsController(withActivePage: .none) - } - // MARK: Life Cycle - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - view.bringSubviewToFront(paymentButton) - } - override func viewDidLoad() { super.viewDidLoad() delegate = self - configureHierarchy() + tabBar.barTintColor = .dw_background() setupRatesErrorHandling() } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - // Bring Payment Button to the front to make sure it's at the top - view.bringSubviewToFront(paymentButton) - } } // MARK: - Private @@ -212,13 +188,15 @@ extension MainTabbarController { } #endif - // Payment - item = UITabBarItem(title: "", image: UIImage(), tag: 2) + // Payment (tapping this tab opens the payment modal instead of switching tabs) + let paymentImage = Self.makePaymentTabImage() + item = UITabBarItem(title: nil, image: paymentImage, selectedImage: paymentImage) item.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0) + item.accessibilityIdentifier = "tabbar_payments_button" - let vc = EmptyController() - vc.tabBarItem = item - viewControllers.append(vc) + let paymentVC = EmptyController() + paymentVC.tabBarItem = item + viewControllers.append(paymentVC) #if DASHPAY if identity != nil { @@ -256,25 +234,30 @@ extension MainTabbarController { self.viewControllers = viewControllers } - private func configureHierarchy() { - paymentButton = PaymentButton() - paymentButton.translatesAutoresizingMaskIntoConstraints = false - paymentButton.addTarget(self, action: #selector(paymentButtonAction), for: .touchUpInside) - view.addSubview(paymentButton) + /// Creates a tab bar image with a blue circle background and the payment icon centered on top. + private static func makePaymentTabImage() -> UIImage { + let size: CGFloat = 47 + let rect = CGRect(x: 0, y: 0, width: size, height: size) - NSLayoutConstraint.activate([ - paymentButton.centerXAnchor.constraint(equalTo: tabBar.centerXAnchor), - paymentButton.topAnchor.constraint(equalTo: tabBar.topAnchor, constant: UIDevice.hasHomeIndicator ? 4 : 1), + let renderer = UIGraphicsImageRenderer(size: rect.size) + let image = renderer.image { context in + // Draw blue circle background + UIColor.dw_dashBlue().setFill() + UIBezierPath(ovalIn: rect).fill() - paymentButton.widthAnchor.constraint(equalToConstant: PaymentButton.kCenterCircleSize), - paymentButton.heightAnchor.constraint(equalToConstant: PaymentButton.kCenterCircleSize), - ]) + // Draw icon centered + if let icon = UIImage(named: "tabbar_pay_button") { + let iconSize = CGSize(width: 22, height: 22) + let iconOrigin = CGPoint(x: (size - iconSize.width) / 2, y: (size - iconSize.height) / 2) + icon.draw(in: CGRect(origin: iconOrigin, size: iconSize)) + } + } - tabBar.barTintColor = .dw_background() + return image.withRenderingMode(.alwaysOriginal) } private func closePayments(completion: (() -> Void)? = nil) { - paymentButton.isOpened = false + paymentIsOpened = false guard let top = selectedViewController?.topController(), top != selectedViewController @@ -378,7 +361,7 @@ extension MainTabbarController: PaymentsViewControllerDelegate { } func paymentsViewControllerWantsToImportPrivateKey(_ controller: PaymentsViewController) { - paymentButton.isOpened = false + paymentIsOpened = false controller.dismiss(animated: true) { self.performScanQRCodeAction() @@ -398,7 +381,7 @@ extension MainTabbarController: HomeViewControllerDelegate { } func showPaymentsController(withActivePage pageIndex: PaymentsViewControllerState) { - paymentButton.isOpened = true + paymentIsOpened = true let receiveModel = DWReceiveModel() let payModel = DWPayModel() @@ -427,7 +410,12 @@ extension MainTabbarController: HomeViewControllerDelegate { extension MainTabbarController: UITabBarControllerDelegate { func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { - !(viewController is EmptyController) + if viewController is EmptyController { + // Intercept the payment tab tap — show the payment modal instead of switching tabs + showPaymentsController(withActivePage: .none) + return false + } + return true } } From ca983d89da13a0084fe098599ad6912004b78fbd Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 10:11:19 -0700 Subject: [PATCH 09/66] fix: fix padding on Shortcut bar on home screen --- .../Sources/UI/Home/Views/Shortcuts/ShortcutsView.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DashWallet/Sources/UI/Home/Views/Shortcuts/ShortcutsView.swift b/DashWallet/Sources/UI/Home/Views/Shortcuts/ShortcutsView.swift index 76b8535b4..12d4466c4 100644 --- a/DashWallet/Sources/UI/Home/Views/Shortcuts/ShortcutsView.swift +++ b/DashWallet/Sources/UI/Home/Views/Shortcuts/ShortcutsView.swift @@ -49,6 +49,8 @@ protocol ShortcutsViewDelegate: AnyObject { // MARK: - ShortcutsView class ShortcutsView: UIView { + private static let verticalPadding: CGFloat = 8.0 + private var cancellableBag = Set() private let viewModel: HomeViewModel private var lastLayoutWidth: CGFloat = 0 @@ -140,7 +142,7 @@ class ShortcutsView: UIView { var cellSize = cellSize(for: contentSizeCategory, viewWidth: width) cellSize.height = ceil(cellSize.height) // This fixes the autolayout issue when the size of the cell is higher than the collection view itself - collectionViewHeightConstraint.constant = cellSize.height + collectionViewHeightConstraint.constant = cellSize.height + ShortcutsView.verticalPadding * 2 setNeedsUpdateConstraints() if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { @@ -212,7 +214,7 @@ extension ShortcutsView: UICollectionViewDataSource, UICollectionViewDelegate, U let cellCount = CGFloat(collectionView.numberOfItems(inSection: section)) var inset = (collectionView.bounds.size.width - (cellCount * cellWidth) - ((cellCount - 1) * cellSpacing)) * 0.5 inset = max(inset, 0.0) - return UIEdgeInsets(top: 0.0, left: inset, bottom: 0.0, right: inset) + return UIEdgeInsets(top: ShortcutsView.verticalPadding, left: inset, bottom: ShortcutsView.verticalPadding, right: inset) } } From b5ae4ebe6f9bed396ac1ce94ff5630a3ab34b950 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 10:18:31 -0700 Subject: [PATCH 10/66] fix: update scan button to blue for dark mode --- .../shortcut_scanToPay.imageset/scan.svg | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut_scanToPay.imageset/scan.svg b/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut_scanToPay.imageset/scan.svg index 16ef9a903..3a0959c64 100644 --- a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut_scanToPay.imageset/scan.svg +++ b/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut_scanToPay.imageset/scan.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + From 405dfc9c1c36b72afbf72bac65ba66a59f65f00b Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 13:14:31 -0700 Subject: [PATCH 11/66] fix: center back arrow in back buttons --- .../Sources/UI/Views/Navigation/BaseNavigationController.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift b/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift index f516962e3..b53e05c2f 100644 --- a/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift +++ b/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift @@ -175,7 +175,6 @@ extension BaseNavigationController: UINavigationControllerDelegate { backButton.frame = .init(x: 0, y: 0, width: 30, height: 30) backButton.setImage(UIImage(systemName: "arrow.backward"), for: .normal) backButton.tintColor = backButtonTintColor - backButton.imageEdgeInsets = .init(top: 0, left: -10, bottom: 0, right: 0) backButton.addTarget(self, action: #selector(backButtonAction), for: .touchUpInside) let item = UIBarButtonItem(customView: backButton) From cfef5e1756db633150394505d5fadd9c64dc2397 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 13:15:13 -0700 Subject: [PATCH 12/66] fix: prevent crash if not FaceID nor TouchID --- .../Advanced Security/Model/DWBaseAdvancedSecurityModel.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DashWallet/Sources/UI/Menu/Security/Advanced Security/Model/DWBaseAdvancedSecurityModel.m b/DashWallet/Sources/UI/Menu/Security/Advanced Security/Model/DWBaseAdvancedSecurityModel.m index 8048e73cd..d400421ef 100644 --- a/DashWallet/Sources/UI/Menu/Security/Advanced Security/Model/DWBaseAdvancedSecurityModel.m +++ b/DashWallet/Sources/UI/Menu/Security/Advanced Security/Model/DWBaseAdvancedSecurityModel.m @@ -158,7 +158,9 @@ - (NSAttributedString *)currentSpendingConfirmationDescriptionWithFont:(UIFont * else if (self.hasFaceID) { string = NSLocalizedString(@"You can authenticate with Face ID for payments below", nil); } - NSParameterAssert(string); + else { + string = NSLocalizedString(@"You can authenticate with biometrics for payments below", nil); + } string = [string stringByAppendingString:@" "]; From f870628e51560f567157c739d81bbfdd81498329 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Tue, 14 Apr 2026 14:03:41 -0700 Subject: [PATCH 13/66] fix: remove invisible button on BuySellPortal --- DashWallet/Sources/UI/Buy Sell/BuySellPortal.storyboard | 3 --- 1 file changed, 3 deletions(-) diff --git a/DashWallet/Sources/UI/Buy Sell/BuySellPortal.storyboard b/DashWallet/Sources/UI/Buy Sell/BuySellPortal.storyboard index ec4a9a638..3198c6f14 100644 --- a/DashWallet/Sources/UI/Buy Sell/BuySellPortal.storyboard +++ b/DashWallet/Sources/UI/Buy Sell/BuySellPortal.storyboard @@ -586,9 +586,6 @@ - - - From a7d67765a124e5c139be00ae2ee9fe603214b894 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:43:20 +0300 Subject: [PATCH 14/66] feat(search): add SwiftUI search bar styles and assets --- .../UI/SwiftUI Components/Color+DWStyle.swift | 16 +- .../UI/SwiftUI Components/SearchBar.swift | 162 ++++++++++++++++++ .../Black1000Alpha30.colorset/Contents.json | 20 +++ .../Black1000Alpha50.colorset/Contents.json | 20 +++ .../SearchBackground.colorset/Contents.json | 20 +++ 5 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift create mode 100644 Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha30.colorset/Contents.json create mode 100644 Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha50.colorset/Contents.json create mode 100644 Shared/Resources/SharedAssets.xcassets/Colors/SearchBackground.colorset/Contents.json diff --git a/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift b/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift index c28e98bd0..e6fd5ff47 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Color+DWStyle.swift @@ -63,7 +63,13 @@ extension Color { static var systemYellow: Color { Color("SystemYellowColor") } - + +// Search + + static var searchBg: Color { + Color("SearchBackground") + } + // Blue static var blueAlpha5: Color { @@ -80,6 +86,14 @@ extension Color { Color("BlackAlpha40") } + static var black1000Alpha30: Color { + Color("Black1000Alpha30") + } + + static var black1000Alpha50: Color { + Color("Black1000Alpha50") + } + // Gray static var gray50: Color { diff --git a/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift b/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift new file mode 100644 index 000000000..095502bad --- /dev/null +++ b/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift @@ -0,0 +1,162 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +struct SearchBar: View { + + private enum Layout { + static let fieldHeight: CGFloat = 40 + static let fieldCornerRadius: CGFloat = 14 + static let fieldHorizontalPadding: CGFloat = 14 + static let fieldSpacing: CGFloat = 10 + static let cancelHorizontalPadding: CGFloat = 12 + static let cancelVerticalPadding: CGFloat = 6 + static let animationDuration: CGFloat = 0.25 + } + + @Binding var text: String + @FocusState private var isFocused: Bool + @State private var isEditing: Bool = false + @State private var cancelButtonWidth: CGFloat = 0 + + var body: some View { + GeometryReader { proxy in + HStack(spacing: 0) { + HStack(spacing: Layout.fieldSpacing) { + magnifyingglass + searchField + clearButton + } + .padding(.horizontal, Layout.fieldHorizontalPadding) + .frame(height: Layout.fieldHeight) + .background(Color.searchBg) + .clipShape(.rect(cornerRadius: Layout.fieldCornerRadius)) + .frame(maxWidth: .infinity, alignment: .leading) + + if isEditing { + cancelButton + .transition(.move(edge: .trailing).combined(with: .opacity)) + } + } + .animation(.easeInOut(duration: Layout.animationDuration), value: isEditing) + .onAppear { + isEditing = isFocused + } + .onChange(of: isFocused) { focused in + withAnimation(.easeInOut(duration: Layout.animationDuration)) { + isEditing = focused + } + } + } + } + + @ViewBuilder + private var clearButton: some View { + if !text.isEmpty { + Button(action: { text = "" }) { + Image(systemName: "xmark.circle.fill") + .foregroundColor(.tertiaryText) + } + } + } + + private var cancelButton: some View { + Button(action: { + text = "" + withAnimation(.easeInOut(duration: Layout.animationDuration)) { + isEditing = false + } + isFocused = false + }) { + Text(NSLocalizedString("Cancel", comment: "")) + .padding(.horizontal, Layout.cancelHorizontalPadding) + .padding(.vertical, Layout.cancelVerticalPadding) + } + .tint(.primaryText) + } + + private var cancelButtonMeasurement: some View { + cancelButton + .fixedSize() + .padding(.leading, Layout.fieldSpacing) + .hidden() + .captureSize { size in + if abs(cancelButtonWidth - size.width) > 0.5 { + cancelButtonWidth = size.width + } + } + } + + private var magnifyingglass: some View { + Image(systemName: "magnifyingglass") + .foregroundColor(Color.black1000Alpha50) + } + + @ViewBuilder + private var searchField: some View { + if #available(iOS 17.0, *) { + TextField( + text: $text, + prompt: Text(NSLocalizedString("Search", comment: "")).foregroundStyle(Color.black1000Alpha30) + ) { + EmptyView() + } + .focused($isFocused) + } else { + // Fallback on earlier versions + TextField(NSLocalizedString("Search", comment: ""), text: $text) + .autocapitalization(.none) + .disableAutocorrection(true) + .foregroundColor(.primaryText) + .focused($isFocused) + } + } +} + +private struct SearchBarSizePreferenceKey: PreferenceKey { + static var defaultValue: CGSize = .zero + + static func reduce(value: inout CGSize, nextValue: () -> CGSize) { + value = nextValue() + } +} + +private extension View { + func captureSize(_ onChange: @escaping (CGSize) -> Void) -> some View { + background( + GeometryReader { geometry in + Color.clear + .preference(key: SearchBarSizePreferenceKey.self, value: geometry.size) + } + ) + .onPreferenceChange(SearchBarSizePreferenceKey.self, perform: onChange) + } +} + + +#Preview { + SearchBarPreview() +} + +private struct SearchBarPreview: View { + @State private var text = "" + var body: some View { + SearchBar(text: $text) + .padding() + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha30.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha30.colorset/Contents.json new file mode 100644 index 000000000..e7760a027 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha30.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.300", + "blue" : "0x0D", + "green" : "0x0B", + "red" : "0x0A" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha50.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha50.colorset/Contents.json new file mode 100644 index 000000000..6ca6d9858 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/Black/Black1000Alpha50.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0x0D", + "green" : "0x0B", + "red" : "0x0A" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/SearchBackground.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/SearchBackground.colorset/Contents.json new file mode 100644 index 000000000..284bfd853 --- /dev/null +++ b/Shared/Resources/SharedAssets.xcassets/Colors/SearchBackground.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.100", + "blue" : "0x8A", + "green" : "0x80", + "red" : "0x75" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} From 303191735e6a8017fe62337b618e75f967030aa9 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Fri, 17 Apr 2026 20:49:49 +0300 Subject: [PATCH 15/66] fix(search): adjust field layout and related color assets --- .../UI/SwiftUI Components/SearchBar.swift | 48 +++++++++---------- .../Contents.json | 22 ++++----- .../Colors/ShadowColor.colorset/Contents.json | 22 ++++----- .../Contents.json | 6 +-- 4 files changed, 48 insertions(+), 50 deletions(-) diff --git a/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift b/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift index 095502bad..3bb2db530 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift @@ -35,32 +35,30 @@ struct SearchBar: View { @State private var cancelButtonWidth: CGFloat = 0 var body: some View { - GeometryReader { proxy in - HStack(spacing: 0) { - HStack(spacing: Layout.fieldSpacing) { - magnifyingglass - searchField - clearButton - } - .padding(.horizontal, Layout.fieldHorizontalPadding) - .frame(height: Layout.fieldHeight) - .background(Color.searchBg) - .clipShape(.rect(cornerRadius: Layout.fieldCornerRadius)) - .frame(maxWidth: .infinity, alignment: .leading) - - if isEditing { - cancelButton - .transition(.move(edge: .trailing).combined(with: .opacity)) - } + HStack(spacing: 0) { + HStack(spacing: Layout.fieldSpacing) { + magnifyingglass + searchField + clearButton } - .animation(.easeInOut(duration: Layout.animationDuration), value: isEditing) - .onAppear { - isEditing = isFocused + .padding(.horizontal, Layout.fieldHorizontalPadding) + .frame(height: Layout.fieldHeight) + .frame(maxWidth: .infinity, alignment: .leading) + .background(Color.searchBg) + .clipShape(.rect(cornerRadius: Layout.fieldCornerRadius)) + + if isEditing { + cancelButton + .transition(.move(edge: .trailing).combined(with: .opacity)) } - .onChange(of: isFocused) { focused in - withAnimation(.easeInOut(duration: Layout.animationDuration)) { - isEditing = focused - } + } + .animation(.easeInOut(duration: Layout.animationDuration), value: isEditing) + .onAppear { + isEditing = isFocused + } + .onChange(of: isFocused) { focused in + withAnimation(.easeInOut(duration: Layout.animationDuration)) { + isEditing = focused } } } @@ -70,7 +68,7 @@ struct SearchBar: View { if !text.isEmpty { Button(action: { text = "" }) { Image(systemName: "xmark.circle.fill") - .foregroundColor(.tertiaryText) + .foregroundColor(Color.black1000Alpha30) } } } diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/NumberKeyboardHighlightedTextColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/NumberKeyboardHighlightedTextColor.colorset/Contents.json index c6e5d3d43..a61d481a7 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/NumberKeyboardHighlightedTextColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/NumberKeyboardHighlightedTextColor.colorset/Contents.json @@ -1,20 +1,20 @@ { - "info" : { - "version" : 1, - "author" : "xcode" - }, "colors" : [ { - "idiom" : "universal", "color" : { "color-space" : "srgb", "components" : { - "red" : "1.000", "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000" + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFE" } - } + }, + "idiom" : "universal" } - ] -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/ShadowColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/ShadowColor.colorset/Contents.json index c60cc7caa..7e8f38fe3 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/ShadowColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/ShadowColor.colorset/Contents.json @@ -1,20 +1,20 @@ { - "info" : { - "version" : 1, - "author" : "xcode" - }, "colors" : [ { - "idiom" : "universal", "color" : { "color-space" : "srgb", "components" : { - "red" : "0.000", "alpha" : "1.000", - "blue" : "0.000", - "green" : "0.000" + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" } - } + }, + "idiom" : "universal" } - ] -} \ No newline at end of file + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Shared/Resources/SharedAssets.xcassets/Colors/TertiaryBackgroundColor.colorset/Contents.json b/Shared/Resources/SharedAssets.xcassets/Colors/TertiaryBackgroundColor.colorset/Contents.json index eb69d3844..757e0e003 100644 --- a/Shared/Resources/SharedAssets.xcassets/Colors/TertiaryBackgroundColor.colorset/Contents.json +++ b/Shared/Resources/SharedAssets.xcassets/Colors/TertiaryBackgroundColor.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "250", - "green" : "250", - "red" : "250" + "blue" : "0xFA", + "green" : "0xFA", + "red" : "0xFA" } }, "idiom" : "universal" From 37ebbca1d7fa0be5321f86ac7e85da5adb032483 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Fri, 17 Apr 2026 20:51:15 +0300 Subject: [PATCH 16/66] feat(settings): add SwiftUI local currency selector --- DashWallet.xcodeproj/project.pbxproj | 89 ++++++- .../Cells/LocalCurrencyCellView.swift | 153 +++++++++++ .../LocalCurrency/LocalCurrencyView.swift | 201 +++++++++++++++ .../LocalCurrencyViewModel.swift | 240 ++++++++++++++++++ .../UI/Menu/Settings/SettingsScreen.swift | 35 +-- .../Geometry Readers/FrameReader.swift | 96 +++++++ .../Geometry Readers/LocationReader.swift | 92 +++++++ .../ScrollViewWithOnScrollChanged.swift | 79 ++++++ 8 files changed, 950 insertions(+), 35 deletions(-) create mode 100644 DashWallet/Sources/UI/Menu/Settings/LocalCurrency/Cells/LocalCurrencyCellView.swift create mode 100644 DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyView.swift create mode 100644 DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift create mode 100644 DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/FrameReader.swift create mode 100644 DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/LocationReader.swift create mode 100644 DashWallet/Sources/UI/SwiftUI Components/ScrollViews/ScrollViewWithOnScrollChanged.swift diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index dc1743059..ed75d6f00 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ @@ -491,6 +491,22 @@ 47F4B6CD29485A8B00AED4C9 /* ConfirmOrderCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F4B6CC29485A8B00AED4C9 /* ConfirmOrderCells.swift */; }; 47FA3AFF29350929008D58DC /* SyncingActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3AFE29350929008D58DC /* SyncingActivityMonitor.swift */; }; 47FA3B0229364991008D58DC /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3B0129364991008D58DC /* HTTPClient.swift */; }; + 5151C8C62F913BF100F0A604 /* Coinbase-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C22F913BF100F0A604 /* Coinbase-Info.plist */; }; + 5151C8C72F913BF100F0A604 /* ZenLedger-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C52F913BF100F0A604 /* ZenLedger-Info.plist */; }; + 5151C8C82F913BF100F0A604 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C32F913BF100F0A604 /* GoogleService-Info.plist */; }; + 5151C8C92F913BF100F0A604 /* Topper-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C42F913BF100F0A604 /* Topper-Info.plist */; }; + 5151C8CA2F913BF100F0A604 /* Coinbase-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C22F913BF100F0A604 /* Coinbase-Info.plist */; }; + 5151C8CB2F913BF100F0A604 /* ZenLedger-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C52F913BF100F0A604 /* ZenLedger-Info.plist */; }; + 5151C8CC2F913BF100F0A604 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C32F913BF100F0A604 /* GoogleService-Info.plist */; }; + 5151C8CD2F913BF100F0A604 /* Topper-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5151C8C42F913BF100F0A604 /* Topper-Info.plist */; }; + 5151CA232F92335E00F0A604 /* LocalCurrencyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CA222F92335E00F0A604 /* LocalCurrencyViewModel.swift */; }; + 5151CA242F92335E00F0A604 /* LocalCurrencyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CA212F92335E00F0A604 /* LocalCurrencyView.swift */; }; + 5151CA252F92335E00F0A604 /* LocalCurrencyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CA222F92335E00F0A604 /* LocalCurrencyViewModel.swift */; }; + 5151CA262F92335E00F0A604 /* LocalCurrencyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CA212F92335E00F0A604 /* LocalCurrencyView.swift */; }; + 5151CD622F926D1900F0A604 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CD612F926D1900F0A604 /* SearchBar.swift */; }; + 5151CD632F926D1900F0A604 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CD612F926D1900F0A604 /* SearchBar.swift */; }; + 5151CDF02F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */; }; + 5151CDF12F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */; }; 7502A4872AE401EF00ACDDD3 /* UsernameVotingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7502A4862AE401EF00ACDDD3 /* UsernameVotingViewController.swift */; }; 7503643A2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; 7503643B2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; @@ -698,6 +714,10 @@ 75AA33D82BFB4A5A00F12465 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33D72BFB4A5A00F12465 /* Extensions.swift */; }; 75AA33D92BFB4A5A00F12465 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33D72BFB4A5A00F12465 /* Extensions.swift */; }; 75AE5A7F2A87C363006CD4BA /* DWConfirmUsernameContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C943B5712A40ED4200AF23C5 /* DWConfirmUsernameContentView.xib */; }; + 75B3C1A22E36100100CAFE02 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; + 75B3C1A32E36100100CAFE03 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; + 75B3C1B22E36100100CAFE05 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; + 75B3C1B32E36100100CAFE06 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; 75BDE7AC2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; 75BDE7AD2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; 75C1F0452AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */; }; @@ -779,8 +799,10 @@ 75FFD6C72BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; 75FFD6C82BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; 893AE6F535290DD1CEE89219 /* ImportPrivateKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */; }; + 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; 91F0B8B92F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; 91F0B8BA2F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; + A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; A30AF4A11189A2EFB04EB535 /* libPods-WatchApp Extension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */; }; AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; @@ -788,6 +810,8 @@ AA0000052DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */; }; AE99C52D130994B720927E8F /* libPods-dashpay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6E23A2DA41FE189E773C705 /* libPods-dashpay.a */; }; AEAE60406265A73AFD573FD1 /* libPods-dashwallet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA4BE42F52588AED15BF7E /* libPods-dashwallet.a */; }; + B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; + B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; B453B34B871E4125607DACDC /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6615F1246B5935365B05BD /* NavigationBar.swift */; }; BA4A72671BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */; }; BA54D3CE1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */; }; @@ -814,7 +838,6 @@ C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */; }; C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */; }; C909615129F158D700002D82 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; - A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C909615329F28E3700002D82 /* DerivationPathKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */; }; C909615529F297DD00002D82 /* DerivationPathKeysCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */; }; C909615929F29C9200002D82 /* KeysOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615829F29C9200002D82 /* KeysOverviewCell.swift */; }; @@ -823,7 +846,6 @@ C917024129D462C6008C034D /* PayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C917024029D462C6008C034D /* PayViewController.swift */; }; C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */; }; C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; - B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF222A5C7D93002FAB75 /* ConfirmPaymentViewController.swift */; }; C93078492A6AD4FC00906E4B /* UpholdConfirmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF2E2A5D5F6B002FAB75 /* UpholdConfirmViewController.swift */; }; C930784A2A6AD52400906E4B /* UpholdConfirmTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF302A5D601C002FAB75 /* UpholdConfirmTransferModel.swift */; }; @@ -1018,8 +1040,6 @@ C94F5E8829D3E7E30034FD57 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C94F5E8729D3E7E30034FD57 /* GoogleService-Info.plist */; }; C94F5E8A29D3FCCF0034FD57 /* ShortcutAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8929D3FCCF0034FD57 /* ShortcutAction.swift */; }; C94F5E8E29D404850034FD57 /* ShortcutCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8D29D404850034FD57 /* ShortcutCell.swift */; }; - 75B3C1A22E36100100CAFE02 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; - 75B3C1B22E36100100CAFE05 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; C94F5E9029D4060A0034FD57 /* ShortcutsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8F29D4060A0034FD57 /* ShortcutsView.swift */; }; C956AF0C2A5B591A002FAB75 /* DashInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94D98202A4CC78F00F3BEE1 /* DashInputField.swift */; }; C956AF0D2A5B592E002FAB75 /* TappableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9829CDD2A562822007132E4 /* TappableLabel.swift */; }; @@ -1102,7 +1122,6 @@ C9D2C6D42A320AA000D15901 /* DWRecoverTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFA2305464C00C475EB /* DWRecoverTextView.m */; }; C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C314287EA11900B4BD48 /* TransactionMetadata.swift */; }; C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; - B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDD28C1305E00490F5E /* AtmListViewController.swift */; }; C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5145F2848F75B005A8E3E /* TxDetailViewController.swift */; }; C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E9299E5396006903F1 /* NSAttributedString+Builder.swift */; }; @@ -1395,8 +1414,6 @@ C9D2C84B2A320AA000D15901 /* UITableView+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F005FE297164600029EB10 /* UITableView+DashWallet.swift */; }; C9D2C84C2A320AA000D15901 /* TransferAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B128FDC72700028A8D /* TransferAmountViewController.swift */; }; C9D2C84D2A320AA000D15901 /* ShortcutCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8D29D404850034FD57 /* ShortcutCell.swift */; }; - 75B3C1A32E36100100CAFE03 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; - 75B3C1B32E36100100CAFE06 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; C9D2C84F2A320AA000D15901 /* UIColor+DWStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44312022CCA2A0009BAF7F /* UIColor+DWStyle.m */; }; C9D2C8502A320AA000D15901 /* DWEnvironment.m in Sources */ = {isa = PBXBuildFile; fileRef = FBEF3AF021823CD800917AB6 /* DWEnvironment.m */; }; C9D2C8512A320AA000D15901 /* AtmItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BC928C1305E00490F5E /* AtmItemCell.swift */; }; @@ -1423,7 +1440,6 @@ C9D2C86F2A320AA000D15901 /* NavigationBarAppearanceCustomizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4730586F295AD62B004641DA /* NavigationBarAppearanceCustomizable.swift */; }; C9D2C8702A320AA000D15901 /* AmountObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B5290A901200E030C8 /* AmountObject.swift */; }; C9D2C8712A320AA000D15901 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; - 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C9D2C8722A320AA000D15901 /* DSTransaction+DashWallet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4709C31D2880247C00B4BD48 /* DSTransaction+DashWallet.m */; }; C9D2C8742A320AA000D15901 /* DWLocalCurrencyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1C234B771400451078 /* DWLocalCurrencyModel.m */; }; C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */; }; @@ -2451,6 +2467,14 @@ 4944819B9E17D4CC7DBFF293 /* Pods-WatchApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.release.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.release.xcconfig"; sourceTree = ""; }; 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-WatchApp Extension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 4D37A3F73905BC239A9D127D /* Pods-WatchApp Extension.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testnet.xcconfig"; sourceTree = ""; }; + 5151C8C22F913BF100F0A604 /* Coinbase-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Coinbase-Info.plist"; sourceTree = ""; }; + 5151C8C32F913BF100F0A604 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + 5151C8C42F913BF100F0A604 /* Topper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Topper-Info.plist"; sourceTree = ""; }; + 5151C8C52F913BF100F0A604 /* ZenLedger-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ZenLedger-Info.plist"; sourceTree = ""; }; + 5151CA212F92335E00F0A604 /* LocalCurrencyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalCurrencyView.swift; sourceTree = ""; }; + 5151CA222F92335E00F0A604 /* LocalCurrencyViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalCurrencyViewModel.swift; sourceTree = ""; }; + 5151CD612F926D1900F0A604 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; + 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalCurrencyCellView.swift; sourceTree = ""; }; 62C1F7A3ABEE7CF3BBB270C4 /* Pods-DashWalletTests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testflight.xcconfig"; sourceTree = ""; }; 67217DE34817FB304EDEA8D4 /* Pods-dashpay.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testnet.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testnet.xcconfig"; sourceTree = ""; }; 6A44C167AF8F881176AFB256 /* Pods-TodayExtension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testflight.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testflight.xcconfig"; sourceTree = ""; }; @@ -2590,6 +2614,8 @@ 75AA33D12BF9E18E00F12465 /* Color+DWStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+DWStyle.swift"; sourceTree = ""; }; 75AA33D42BF9E1D400F12465 /* Font+DWStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+DWStyle.swift"; sourceTree = ""; }; 75AA33D72BFB4A5A00F12465 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutSelectionView.swift; sourceTree = ""; }; + 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCustomizeBannerView.swift; sourceTree = ""; }; 75BDE7AB2BF3287400556791 /* Toast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = ""; }; 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinLevelsViewModel.swift; sourceTree = ""; }; 75C1F09D2AFF675400FE675E /* EnterVotingKeyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnterVotingKeyViewController.swift; sourceTree = ""; }; @@ -2654,12 +2680,14 @@ 8391BA0D088FF516D63DE9A1 /* Pods-dashpay.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testflight.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testflight.xcconfig"; sourceTree = ""; }; 86CC430C535DAEBF900E5914 /* Pods-dashwallet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.debug.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.debug.xcconfig"; sourceTree = ""; }; 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewView.swift; sourceTree = ""; }; + 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysView.swift; sourceTree = ""; }; A47B6DF71195E41A5B7B5F99 /* Pods-dashpay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.debug.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.debug.xcconfig"; sourceTree = ""; }; AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProviderToGiftCardsTable.swift; sourceTree = ""; }; AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/GiftCardProvider.swift; sourceTree = ""; }; AD6615F1246B5935365B05BD /* NavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBar.swift; sourceTree = ""; }; AF918A810315A7BE335BFFA6 /* Pods-WatchApp.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testnet.xcconfig"; sourceTree = ""; }; B1A681489B9516DC10084A61 /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; sourceTree = ""; }; + B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BRAWWeakTimerTarget.swift; sourceTree = ""; }; BA4EECDF1B351AE200D443A3 /* DWAppGroupConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWAppGroupConstants.h; sourceTree = ""; }; BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = TodayExtensionAssets.xcassets; sourceTree = ""; }; @@ -2695,7 +2723,6 @@ C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletKeysOverviewModel.swift; sourceTree = ""; }; C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysViewController.swift; sourceTree = ""; }; - 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysView.swift; sourceTree = ""; }; C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysModel.swift; sourceTree = ""; }; C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysCell.swift; sourceTree = ""; }; C909615829F29C9200002D82 /* KeysOverviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewCell.swift; sourceTree = ""; }; @@ -2704,7 +2731,6 @@ C917024029D462C6008C034D /* PayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayViewController.swift; sourceTree = ""; }; C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysModel.swift; sourceTree = ""; }; C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysViewController.swift; sourceTree = ""; }; - B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; C943B2BA2A408CEC00AF23C5 /* DWUpdatingUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWUpdatingUserProfileView.h; sourceTree = ""; }; C943B2BB2A408CEC00AF23C5 /* DWCurrentUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWCurrentUserProfileView.h; sourceTree = ""; }; C943B2BC2A408CEC00AF23C5 /* DWErrorUpdatingUserProfileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWErrorUpdatingUserProfileView.m; sourceTree = ""; }; @@ -3088,8 +3114,6 @@ C94F5E8729D3E7E30034FD57 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; C94F5E8929D3FCCF0034FD57 /* ShortcutAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutAction.swift; sourceTree = ""; }; C94F5E8D29D404850034FD57 /* ShortcutCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCell.swift; sourceTree = ""; }; - 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutSelectionView.swift; sourceTree = ""; }; - 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCustomizeBannerView.swift; sourceTree = ""; }; C94F5E8F29D4060A0034FD57 /* ShortcutsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutsView.swift; sourceTree = ""; }; C956AF152A5C3301002FAB75 /* DWPressableButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWPressableButton.h; sourceTree = ""; }; C956AF162A5C3302002FAB75 /* DWPressableButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWPressableButton.m; sourceTree = ""; }; @@ -3204,6 +3228,11 @@ GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoRestrictionService.swift; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 5151CDF22F929C2300F0A604 /* Geometry Readers */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = "Geometry Readers"; sourceTree = ""; }; + 5151CDF62F929D3F00F0A604 /* ScrollViews */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = ScrollViews; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 2A4662FD2279DC2F0027533B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -4292,6 +4321,8 @@ 2A7A7C13234B761700451078 /* LocalCurrency */ = { isa = PBXGroup; children = ( + 5151CA212F92335E00F0A604 /* LocalCurrencyView.swift */, + 5151CA222F92335E00F0A604 /* LocalCurrencyViewModel.swift */, 2A7A7C17234B764C00451078 /* Cells */, 2A7A7C14234B763600451078 /* DWLocalCurrencyViewController.h */, 2A7A7C15234B763600451078 /* DWLocalCurrencyViewController.m */, @@ -4310,6 +4341,7 @@ children = ( 2A7A7C1E234B79B700451078 /* DWLocalCurrencyTableViewCell.h */, 2A7A7C1F234B79B700451078 /* DWLocalCurrencyTableViewCell.m */, + 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */, ); path = Cells; sourceTree = ""; @@ -6144,6 +6176,8 @@ 7566F4882BB6CAD6005238D2 /* SwiftUI Components */ = { isa = PBXGroup; children = ( + 5151CDF62F929D3F00F0A604 /* ScrollViews */, + 5151CDF22F929C2300F0A604 /* Geometry Readers */, 7581B19C2CE3509A00714007 /* Dialogs */, 75EBAA112BB99B6B004488E3 /* BottomSheet.swift */, AD6615F1246B5935365B05BD /* NavigationBar.swift */, @@ -6167,6 +6201,7 @@ 75387B492E0400C300BCCC72 /* MerchantDenominations.swift */, 7545ED5F2DA91FC60075F45C /* NumericKeyboardView.swift */, 756FE7092CDCD6CD00E6C195 /* ValidationCheck.swift */, + 5151CD612F926D1900F0A604 /* SearchBar.swift */, ); path = "SwiftUI Components"; sourceTree = ""; @@ -6346,6 +6381,10 @@ 75D5F3C7191EC270004AB296 /* DashWallet */ = { isa = PBXGroup; children = ( + 5151C8C22F913BF100F0A604 /* Coinbase-Info.plist */, + 5151C8C32F913BF100F0A604 /* GoogleService-Info.plist */, + 5151C8C42F913BF100F0A604 /* Topper-Info.plist */, + 5151C8C52F913BF100F0A604 /* ZenLedger-Info.plist */, 2A44313B22CF62FC009BAF7F /* Sources */, 2A4430F022CBD566009BAF7F /* Resources */, FB6DD3811F7FA48500BC1E4D /* dashwallet.entitlements */, @@ -7744,6 +7783,10 @@ BAE12BF11B2DEE7F00895CC5 /* PBXTargetDependency */, BA913BF91BD57E4D005A7C0E /* PBXTargetDependency */, ); + fileSystemSynchronizedGroups = ( + 5151CDF22F929C2300F0A604 /* Geometry Readers */, + 5151CDF62F929D3F00F0A604 /* ScrollViews */, + ); name = dashwallet; productName = DashWallet; productReference = 75D5F3BE191EC270004AB296 /* dashwallet.app */; @@ -7843,6 +7886,10 @@ ); dependencies = ( ); + fileSystemSynchronizedGroups = ( + 5151CDF22F929C2300F0A604 /* Geometry Readers */, + 5151CDF62F929D3F00F0A604 /* ScrollViews */, + ); name = dashpay; productName = DashWallet; productReference = C9D2C9532A320AA000D15901 /* dashpay.app */; @@ -7983,6 +8030,10 @@ 4709C30F287E787700B4BD48 /* Migrations.bundle in Resources */, 474C720F298A1A3E00475CA6 /* TxDetailTaxCategoryCell.xib in Resources */, 2ADC722923B5547000D9DD37 /* Localizable.stringsdict in Resources */, + 5151C8CA2F913BF100F0A604 /* Coinbase-Info.plist in Resources */, + 5151C8CB2F913BF100F0A604 /* ZenLedger-Info.plist in Resources */, + 5151C8CC2F913BF100F0A604 /* GoogleService-Info.plist in Resources */, + 5151C8CD2F913BF100F0A604 /* Topper-Info.plist in Resources */, 75E2F3C82AA4CF1900C3B458 /* Topper-Info.plist in Resources */, 753CD8792E2E218800BCF070 /* mixing_anim.json in Resources */, 2A2CD71822F99CAE008C7BC9 /* ShortcutsView.xib in Resources */, @@ -8096,6 +8147,10 @@ C9D2C92A2A320AA000D15901 /* explore.db in Resources */, C9D2C92B2A320AA000D15901 /* (null) in Resources */, C9D2C92C2A320AA000D15901 /* Coinbase.storyboard in Resources */, + 5151C8C62F913BF100F0A604 /* Coinbase-Info.plist in Resources */, + 5151C8C72F913BF100F0A604 /* ZenLedger-Info.plist in Resources */, + 5151C8C82F913BF100F0A604 /* GoogleService-Info.plist in Resources */, + 5151C8C92F913BF100F0A604 /* Topper-Info.plist in Resources */, 75889B892AD2DF0200C17F5D /* CoinJoin.storyboard in Resources */, C9D2C92E2A320AA000D15901 /* ImportWalletInfo.storyboard in Resources */, C9D2C92F2A320AA000D15901 /* ReceiveContentView.xib in Resources */, @@ -8878,6 +8933,7 @@ 47AE8BF528C1306000490F5E /* MerchantListLocationOffCell.swift in Sources */, 1186092529759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift in Sources */, 2A913E9023A31713006A2A59 /* UIViewController+DWEmbedding.m in Sources */, + 5151CD622F926D1900F0A604 /* SearchBar.swift in Sources */, 2A2CD71322F97B65008C7BC9 /* CALayer+DWShadow.m in Sources */, 47AE8BA528BFADD900490F5E /* MerchantDAO.swift in Sources */, 47AE8BAA28BFAE5800490F5E /* ExploreDatabaseSyncManager.swift in Sources */, @@ -9102,6 +9158,8 @@ C9F452012A0CE6C900825057 /* HomeView.swift in Sources */, 47A2E3AC2972B1A60032A63B /* CoinbaseRatesProvider.swift in Sources */, 7581B19B2CE349BB00714007 /* ConfirmSpendDialog.swift in Sources */, + 5151CA252F92335E00F0A604 /* LocalCurrencyViewModel.swift in Sources */, + 5151CA262F92335E00F0A604 /* LocalCurrencyView.swift in Sources */, 472D13DF299DF5C6006903F1 /* TaxReportGenerator.swift in Sources */, 119E8D122909513F00D406C1 /* CrowdNodeError.swift in Sources */, 75D9EBC32DE5CD9C009416A2 /* GiftCardsDAO.swift in Sources */, @@ -9130,6 +9188,7 @@ 4774DCDD28F43A68008CF87D /* ServiceDataSource.swift in Sources */, 75387B4A2E0400C300BCCC72 /* MerchantDenominations.swift in Sources */, 47838B7A2900196F0003E8AB /* ConverterView.swift in Sources */, + 5151CDF12F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */, 2A0C69CA23142E11001B8C90 /* DWModalBaseAnimation.m in Sources */, C956AF262A5CACE6002FAB75 /* TitleValueCell.swift in Sources */, 75D657682DF579F300ACE570 /* TransactionFilterDialog.swift in Sources */, @@ -9244,6 +9303,8 @@ C9D2C69F2A320AA000D15901 /* DWPlaceholderFormTableViewCell.m in Sources */, C9D2C6A02A320AA000D15901 /* DWTitleDetailCellView.m in Sources */, C9D2C6A12A320AA000D15901 /* AmountInputControl.swift in Sources */, + 5151CA232F92335E00F0A604 /* LocalCurrencyViewModel.swift in Sources */, + 5151CA242F92335E00F0A604 /* LocalCurrencyView.swift in Sources */, C9D2C6A22A320AA000D15901 /* DWSegmentSliderFormTableViewCell.m in Sources */, 759609212C4553A400F3BF04 /* BuyCreditsViewController.swift in Sources */, 7549BE5E2DEAF55B004F0BAF /* IconBitmapDAO.swift in Sources */, @@ -9294,6 +9355,7 @@ C9D2C6C02A320AA000D15901 /* Transaction.swift in Sources */, C943B3232A408CED00AF23C5 /* DWFaceDetector.m in Sources */, C9D2C6C12A320AA000D15901 /* AllMerchantLocationsViewController.swift in Sources */, + 5151CDF02F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */, C9D2C6C22A320AA000D15901 /* DWPaymentOutput.m in Sources */, 753FDBEA2AEA422F0005EEC3 /* VotingPrefs.swift in Sources */, C9D2C6C32A320AA000D15901 /* DWPayModelStub.m in Sources */, @@ -9767,6 +9829,7 @@ 7545ED5E2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */, 75AA33D02BF9D44A00F12465 /* ButtonsGroup.swift in Sources */, C9D2C80C2A320AA000D15901 /* AllMerchantLocationsDataProvider.swift in Sources */, + 5151CD632F926D1900F0A604 /* SearchBar.swift in Sources */, C9D2C80D2A320AA000D15901 /* MainTabbarController.swift in Sources */, 751C05DB2D3D0E8C00475E52 /* JoinDashPayViewModel.swift in Sources */, C9D2C80E2A320AA000D15901 /* NumberFormatter+DashWallet.swift in Sources */, diff --git a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/Cells/LocalCurrencyCellView.swift b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/Cells/LocalCurrencyCellView.swift new file mode 100644 index 000000000..3f9ba34fc --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/Cells/LocalCurrencyCellView.swift @@ -0,0 +1,153 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +struct LocalCurrencyCellView: View { + + private enum Layout { + static let spacing: CGFloat = 16 + static let horizontalPadding: CGFloat = 10 + static let flagSize: CGFloat = 30 + static let checkboxSize: CGFloat = 22 + static let checkboxSelectedBorderWidth: CGFloat = 5 + static let checkboxDefaultBorderWidth: CGFloat = 1.5 + static let trailingSpacing: CGFloat = 10 + static let infoVerticalPadding: CGFloat = 10 + static let infoSpacing: CGFloat = 1 + } + + let item: CurrencyItem + let isSelected: Bool + let searchQuery: String + + var body: some View { + HStack(spacing: Layout.spacing) { + flagSection + infoSection + trailingSection + } + .padding(.horizontal, Layout.horizontalPadding) + .clipShape(.rect) + } + + private var flagSection: some View { + Group { + if let flagName = item.flagName, UIImage(named: flagName) != nil { + Image(flagName) + .resizable() + .scaledToFill() + } else { + Color.gray200 + } + } + .frame(width: Layout.flagSize, height: Layout.flagSize) + .clipShape(.circle) + } + + private var infoSection: some View { + VStack(alignment: .leading, spacing: Layout.infoSpacing) { + highlightedText(item.name, query: searchQuery) + .font(.subhead.weight(.medium)) + .foregroundColor(.primaryText) + .lineLimit(1) + + Text(item.priceString ?? " ") + .font(.footnote) + .foregroundColor(.tertiaryText) + .lineLimit(1) + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(.vertical, Layout.infoVerticalPadding) + } + + private var trailingSection: some View { + HStack(spacing: Layout.trailingSpacing) { + currencyCodeView + checkboxView + } + } + + private var currencyCodeView: some View { + highlightedText(item.code, query: searchQuery) + .font(.caption1) + .foregroundColor(.tertiaryText) + .lineLimit(1) + } + + private var checkboxView: some View { + Circle() + .strokeBorder( + isSelected ? Color.dashBlue : Color.gray300, + lineWidth: isSelected ? Layout.checkboxSelectedBorderWidth : Layout.checkboxDefaultBorderWidth + ) + .frame(width: Layout.checkboxSize, height: Layout.checkboxSize) + } + + /// Builds a SwiftUI Text with the first occurrence of `query` highlighted in dashBlue. + private func highlightedText(_ text: String, query: String) -> Text { + let trimmed = query.trimmingCharacters(in: .whitespaces) + guard !trimmed.isEmpty, + let range = text.range(of: trimmed, options: .caseInsensitive) else { + return Text(text) + } + let before = String(text[.. Void + var onBack: (() -> Void)? + + init( + currencyCode: String? = nil, + onSelect: @escaping (String) -> Void, + onBack: (() -> Void)? = nil + ) { + self._viewModel = StateObject(wrappedValue: LocalCurrencyViewModel(currencyCode: currencyCode)) + self.onSelect = onSelect + self.onBack = onBack + } + + /// Preview / testing init — accepts a pre-built ViewModel. + fileprivate init( + viewModel: LocalCurrencyViewModel, + onSelect: @escaping (String) -> Void, + onBack: (() -> Void)? = nil + ) { + self._viewModel = StateObject(wrappedValue: viewModel) + self.onSelect = onSelect + self.onBack = onBack + } + + var body: some View { + ZStack(alignment: .top) { + // Background + + LocalCurrencyScrollContentView( + headerHeight: fullHeaderSize.height, + onScrollChanged: { offset in + scrollViewOffcet = min(offset.y, 0) + }, + filteredItems: viewModel.filteredItems, + selectedCurrencyCode: viewModel.selectedCurrencyCode, + searchQuery: viewModel.searchQuery, + select: viewModel.select(currencyCode:), + onSelect: onSelect + ) + .padding(.horizontal, 20) + + LocalCurrencyTopOverlayView( + scrollOffset: scrollViewOffcet, + onBack: onBack, + searchQuery: $viewModel.searchQuery + ) + .readingFrame { frame in + if fullHeaderSize == .zero { + fullHeaderSize = frame.size + } + } + } + .background(Color.primaryBackground) + } +} + +private struct LocalCurrencyScrollContentView: View { + + let headerHeight: CGFloat + let onScrollChanged: (CGPoint) -> Void + var filteredItems: [CurrencyItem] + var selectedCurrencyCode: String + var searchQuery: String + var select: (String) -> Void + var onSelect: (String) -> Void + + var body: some View { + ScrollViewWithOnScrollChanged(.vertical, showsIndicators: false) { + VStack { + Rectangle() + .opacity(0) + .frame(height: headerHeight) + + // Currency list + LazyVStack(spacing: 2) { + ForEach(filteredItems) { item in + LocalCurrencyCellView( + item: item, + isSelected: item.code == selectedCurrencyCode, + searchQuery: searchQuery + ) + .onTapGesture { + select(item.code) + onSelect(item.code) + } + } + } + .padding(filteredItems.count > 0 ? 6 : 0) + .background( + RoundedRectangle(cornerRadius: 20) + .fill(Color.secondaryBackground) + ) + } + } onScrollChanged: { offset in + onScrollChanged(offset) + } + } +} + +private struct LocalCurrencyTopOverlayView: View { + let scrollOffset: CGFloat + var onBack: (() -> Void)? + @Binding var searchQuery: String + + var body: some View { + VStack { + header + + if scrollOffset > -20 { + SearchBar(text: $searchQuery) + .transition(.move(edge: .top).combined(with: .opacity)) + .padding(.horizontal, 20) + } + } + .padding(.bottom, 6) + .background(toolbarBackground) + .animation(.smooth, value: scrollOffset) + } + + private var header: some View { + HStack(alignment: .center, spacing: 0) { + ZStack { + if let onBack { + NavBarBack(onBack: onBack) + } + + // Title + Text(NSLocalizedString("Local Currency", comment: "Settings")) + .font(.subheadline) + .fontWeight(.medium) + .foregroundColor(.primaryText) + } + } + } + + @ViewBuilder + private var toolbarBackground: some View { + ZStack(alignment: .bottom) { + Rectangle() + .fill(.clear) + .background(Color.primaryBackground) + .ignoresSafeArea() + + Divider() + .background(Color(red: 176/255, green: 182/255, blue: 188/255, opacity: 0.15)) + .opacity(scrollOffset < -20 ? 1 : 0) + } + + } +} + +// MARK: - Preview + +#if DEBUG +#Preview { + LocalCurrencyView( + viewModel: LocalCurrencyViewModel( + items: [ + CurrencyItem(code: "USD", name: "US Dollar", flagName: "united states", priceString: "42.50"), + CurrencyItem(code: "EUR", name: "Euro", flagName: "european union", priceString: "39.20"), + CurrencyItem(code: "GBP", name: "British Pound", flagName: "united kingdom", priceString: "33.80"), + CurrencyItem(code: "JPY", name: "Japanese Yen", flagName: "japan", priceString: "6380.00"), + CurrencyItem(code: "UAH", name: "Ukrainian Hryvnia", flagName: "ukraine", priceString: "1750.00"), + CurrencyItem(code: "PLN", name: "Polish Zloty", flagName: "poland", priceString: "168.00"), + CurrencyItem(code: "CHF", name: "Swiss Franc", flagName: "switzerland", priceString: "37.10"), + + ], + selectedCode: "USD" + ), + onSelect: { _ in }, + onBack: {} + ) +} +#endif diff --git a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift new file mode 100644 index 000000000..6152811a1 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift @@ -0,0 +1,240 @@ +// +// Created by Roman Chornyi +// Copyright © 2024 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Combine + +// MARK: - CurrencyItem + +struct CurrencyItem: Identifiable, Equatable { + var id: String { code } + let code: String + let name: String + let flagName: String? + let priceString: String? +} + +// MARK: - LocalCurrencyViewModel + +@MainActor +class LocalCurrencyViewModel: ObservableObject { + private let allItems: [CurrencyItem] + + @Published var searchQuery: String = "" + @Published var selectedCurrencyCode: String + + var filteredItems: [CurrencyItem] { + let trimmed = searchQuery.trimmingCharacters(in: .whitespaces) + guard !trimmed.isEmpty else { return allItems } + let query = trimmed.lowercased() + return allItems.filter { + $0.code.lowercased().contains(query) || $0.name.lowercased().contains(query) + } + } + + /// Production init — loads currencies from CurrencyExchangerObjcWrapper. + init(currencyCode: String? = nil) { + let formatter = NumberFormatter() + formatter.maximumFractionDigits = 2 + formatter.minimumFractionDigits = 2 + + let items: [CurrencyItem] = CurrencyExchangerObjcWrapper.prices.map { price in + CurrencyItem( + code: price.code, + name: price.name, + flagName: LocalCurrencyViewModel.flagByCode[price.code], + priceString: formatter.string(from: price.price) + ) + } + self.allItems = items + self.selectedCurrencyCode = currencyCode ?? App.fiatCurrency + } + + /// Preview / testing init — accepts pre-built items without DashSync. + init(items: [CurrencyItem], selectedCode: String) { + self.allItems = items + self.selectedCurrencyCode = selectedCode + } + + func select(currencyCode: String) { + selectedCurrencyCode = currencyCode + App.shared.fiatCurrency = currencyCode + } +} + +// MARK: - Flag mapping + +extension LocalCurrencyViewModel { + static let flagByCode: [String: String] = [ + "AED": "united arab emirates", + "AFN": "afghanistan", + "ALL": "albania", + "AMD": "armenia", + "ANG": "sint maarten", + "AOA": "angola", + "ARS": "argentina", + "AUD": "australia", + "AWG": "aruba", + "AZN": "azerbaijan", + "BAM": "bosnia and herzegovina", + "BBD": "barbados", + "BDT": "bangladesh", + "BGN": "bulgaria", + "BHD": "bahrain", + "BIF": "burundi", + "BMD": "bermuda", + "BND": "brunei", + "BOB": "bolivia", + "BRL": "brazil", + "BSD": "bahamas", + "BTN": "bhutan", + "BWP": "botswana", + "BYN": "belarus", + "BZD": "belize", + "CAD": "canada", + "CDF": "democratic republic of congo", + "CHF": "switzerland", + "CLF": "chile", + "CLP": "chile", + "CNY": "china", + "COP": "colombia", + "CRC": "costa rica", + "CUP": "cuba", + "CVE": "cape verde", + "CZK": "czech republic", + "DJF": "djibouti", + "DKK": "denmark", + "DOP": "dominican republic", + "DZD": "Algeria", + "EGP": "egypt", + "ETB": "ethiopia", + "EUR": "european union", + "FJD": "fiji", + "FKP": "falkland islands", + "GBP": "united kingdom", + "GEL": "georgia", + "GHS": "ghana", + "GIP": "gibraltar", + "GMD": "gambia", + "GNF": "guinea", + "GTQ": "guatemala", + "GYD": "guyana", + "HKD": "hong kong", + "HNL": "honduras", + "HRK": "croatia", + "HTG": "haiti", + "HUF": "hungary", + "IDR": "indonesia", + "ILS": "israel", + "INR": "india", + "IQD": "iraq", + "IRR": "iran", + "ISK": "iceland", + "JEP": "jersey", + "JMD": "jamaica", + "JOD": "jordan", + "JPY": "japan", + "KES": "kenya", + "KGS": "kyrgyzstan", + "KHR": "cambodia", + "KMF": "comoros", + "KPW": "north korea", + "KRW": "south korea", + "KWD": "kuwait", + "KYD": "cayman islands", + "KZT": "kazakhstan", + "LAK": "laos", + "LBP": "lebanon", + "LKR": "sri lanka", + "LRD": "liberia", + "LSL": "lesotho", + "LYD": "libya", + "MAD": "morocco", + "MDL": "moldova", + "MGA": "madagascar", + "MKD": "republic of macedonia", + "MMK": "myanmar", + "MNT": "mongolia", + "MOP": "macao", + "MRU": "mauritania", + "MUR": "mauritius", + "MVR": "maldives", + "MWK": "malawi", + "MXN": "mexico", + "MYR": "malaysia", + "MZN": "mozambique", + "NAD": "namibia", + "NGN": "nigeria", + "NIO": "nicaragua", + "NOK": "norway", + "NPR": "nepal", + "NZD": "new zealand", + "OMR": "oman", + "PAB": "panama", + "PEN": "peru", + "PGK": "papua new guinea", + "PHP": "philippines", + "PKR": "pakistan", + "PLN": "poland", + "PYG": "paraguay", + "QAR": "qatar", + "RON": "romania", + "RSD": "serbia", + "RUB": "russia", + "RWF": "rwanda", + "SAR": "saudi arabia", + "SBD": "solomon islands", + "SCR": "seychelles", + "SDG": "sudan", + "SEK": "sweden", + "SGD": "singapore", + "SHP": "united kingdom", + "SLL": "sierra leone", + "SOS": "somalia", + "SRD": "suriname", + "STN": "sao tome and prince", + "SVC": "el salvador", + "SYP": "syria", + "SZL": "swaziland", + "THB": "thailand", + "TJS": "tajikistan", + "TMT": "turkmenistan", + "TND": "tunisia", + "TOP": "tonga", + "TRY": "turkey", + "TTD": "trinidad and tobago", + "TWD": "taiwan", + "TZS": "tanzania", + "UAH": "ukraine", + "UGX": "uganda", + "USD": "united states", + "UYU": "uruguay", + "UZS": "uzbekistan", + "VES": "venezuela", + "VND": "vietnam", + "VUV": "vanuatu", + "WST": "samoa", + "XAF": "central african cfa franc", + "XCD": "anguilla", + "XOF": "benin", + "XPF": "french polynesia", + "YER": "yemen", + "ZAR": "south africa", + "ZMW": "zambia", + "ZWL": "zimbabwe", + ] +} diff --git a/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift index 6b206712f..4e1581446 100644 --- a/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift +++ b/DashWallet/Sources/UI/Menu/Settings/SettingsScreen.swift @@ -21,21 +21,17 @@ import Combine struct SettingsScreen: View { private let vc: UINavigationController - private let delegateInternal: DelegateInternal private let onDidRescan: () -> () - + @StateObject private var viewModel = SettingsMenuViewModel() @State private var showNetworkAlert = false @State private var showRescanWarningAlert = false @State private var showRescanActionAlert = false @State private var showCSVExportActivity = false - + init(vc: UINavigationController, onDidRescan: @escaping () -> ()) { self.vc = vc self.onDidRescan = onDidRescan - self.delegateInternal = DelegateInternal(onHide: { - vc.popViewController(animated: true) - }) } var body: some View { @@ -191,8 +187,17 @@ struct SettingsScreen: View { } private func showCurrencySelector() { - let controller = DWLocalCurrencyViewController(navigationAppearance: .default, presentationMode: .screen, currencyCode: nil) - controller.delegate = delegateInternal + let view = LocalCurrencyView( + currencyCode: nil, + onSelect: { [weak vc] _ in + vc?.popViewController(animated: true) + }, + onBack: { [weak vc] in + vc?.popViewController(animated: true) + } + ) + let controller = UIHostingController(rootView: view) + controller.hidesBottomBarWhenPushed = true vc.pushViewController(controller, animated: true) } @@ -231,20 +236,6 @@ struct SettingsScreen: View { } } -extension SettingsScreen { - class DelegateInternal: NSObject, DWLocalCurrencyViewControllerDelegate { - let onHide: () -> () - - init(onHide: @escaping () -> ()) { - self.onHide = onHide - } - - func localCurrencyViewController(_ controller: DWLocalCurrencyViewController, didSelectCurrency currencyCode: String) { - onHide() - } - func localCurrencyViewControllerDidCancel(_ controller: DWLocalCurrencyViewController) { onHide() } - } -} struct ActivityView: UIViewControllerRepresentable { let activityItems: [Any] diff --git a/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/FrameReader.swift b/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/FrameReader.swift new file mode 100644 index 000000000..2a8265152 --- /dev/null +++ b/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/FrameReader.swift @@ -0,0 +1,96 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +@available(iOS 14, *) +/// Adds a transparent View and read it's frame. +/// +/// Adds a GeometryReader with infinity frame. +public struct FrameReader: View { + + let coordinateSpace: CoordinateSpace + let onChange: (_ frame: CGRect) -> Void + + public init(coordinateSpace: CoordinateSpace, onChange: @escaping (_ frame: CGRect) -> Void) { + self.coordinateSpace = coordinateSpace + self.onChange = onChange + } + + public var body: some View { + GeometryReader { geo in + Text("") + .frame(maxWidth: .infinity, maxHeight: .infinity) + .onAppear(perform: { + onChange(geo.frame(in: coordinateSpace)) + }) + .onChange(of: geo.frame(in: coordinateSpace), perform: onChange) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } +} + +@available(iOS 14, *) +public extension View { + + /// Get the frame of the View + /// + /// Adds a GeometryReader to the background of a View. + func readingFrame(coordinateSpace: CoordinateSpace = .global, onChange: @escaping (_ frame: CGRect) -> ()) -> some View { + background(FrameReader(coordinateSpace: coordinateSpace, onChange: onChange)) + } +} + +@available(iOS 14, *) +struct FrameReader_Previews: PreviewProvider { + + struct PreviewView: View { + + @State private var yOffset: CGFloat = 0 + + var body: some View { + ScrollView(.vertical) { + VStack { + Text("") + .frame(maxWidth: .infinity) + .frame(height: 200) + .cornerRadius(10) + .background(Color.green) + .padding() + .readingFrame { frame in + yOffset = frame.minY + } + + ForEach(0..<30) { x in + Text("") + .frame(maxWidth: .infinity) + .frame(height: 200) + .cornerRadius(10) + .background(Color.green) + .padding() + } + } + } + .coordinateSpace(name: "test") + .overlay(Text("Offset: \(yOffset)")) + } + } + + static var previews: some View { + PreviewView() + } +} diff --git a/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/LocationReader.swift b/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/LocationReader.swift new file mode 100644 index 000000000..d788347d5 --- /dev/null +++ b/DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/LocationReader.swift @@ -0,0 +1,92 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +@available(iOS 14, *) +/// Adds a transparent View and read it's center point. +/// +/// Adds a GeometryReader with 0px by 0px frame. +public struct LocationReader: View { + + let coordinateSpace: CoordinateSpace + let onChange: (_ location: CGPoint) -> Void + + public init(coordinateSpace: CoordinateSpace, onChange: @escaping (_ location: CGPoint) -> Void) { + self.coordinateSpace = coordinateSpace + self.onChange = onChange + } + + public var body: some View { + FrameReader(coordinateSpace: coordinateSpace) { frame in + onChange(CGPoint(x: frame.midX, y: frame.midY)) + } + .frame(width: 0, height: 0, alignment: .center) + } +} + +@available(iOS 14, *) +public extension View { + + /// Get the center point of the View + /// + /// Adds a 0px GeometryReader to the background of a View. + func readingLocation(coordinateSpace: CoordinateSpace = .global, onChange: @escaping (_ location: CGPoint) -> ()) -> some View { + background(LocationReader(coordinateSpace: coordinateSpace, onChange: onChange)) + } + +} + +@available(iOS 14, *) +struct LocationReader_Previews: PreviewProvider { + + struct PreviewView: View { + + @State private var yOffset: CGFloat = 0 + + var body: some View { + ScrollView(.vertical) { + VStack { + Text("Hello, world!") + .frame(maxWidth: .infinity) + .frame(height: 200) + .cornerRadius(10) + .background(Color.green) + .padding() + .readingLocation { location in + yOffset = location.y + } + + ForEach(0..<30) { x in + Text("") + .frame(maxWidth: .infinity) + .frame(height: 200) + .cornerRadius(10) + .background(Color.green) + .padding() + } + } + } + .coordinateSpace(name: "test") + .overlay(Text("Offset: \(yOffset)")) + } + } + + static var previews: some View { + PreviewView() + } +} diff --git a/DashWallet/Sources/UI/SwiftUI Components/ScrollViews/ScrollViewWithOnScrollChanged.swift b/DashWallet/Sources/UI/SwiftUI Components/ScrollViews/ScrollViewWithOnScrollChanged.swift new file mode 100644 index 000000000..282dc8f63 --- /dev/null +++ b/DashWallet/Sources/UI/SwiftUI Components/ScrollViews/ScrollViewWithOnScrollChanged.swift @@ -0,0 +1,79 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI + +@available(iOS 14, *) +public struct ScrollViewWithOnScrollChanged: View { + + let axes: Axis.Set + let showsIndicators: Bool + let content: Content + let onScrollChanged: (_ origin: CGPoint) -> () + @State private var coordinateSpaceID: String = UUID().uuidString + + public init( + _ axes: Axis.Set = .vertical, + showsIndicators: Bool = false, + @ViewBuilder content: () -> Content, + onScrollChanged: @escaping (_ origin: CGPoint) -> ()) { + self.axes = axes + self.showsIndicators = showsIndicators + self.content = content() + self.onScrollChanged = onScrollChanged + } + + public var body: some View { + ScrollView(axes, showsIndicators: showsIndicators) { + LocationReader(coordinateSpace: .named(coordinateSpaceID), onChange: onScrollChanged) + content + } + .coordinateSpace(name: coordinateSpaceID) + } +} + +@available(iOS 14, *) +struct ScrollViewWithOnScrollChanged_Previews: PreviewProvider { + + struct PreviewView: View { + + @State private var yPosition: CGFloat = 0 + + var body: some View { + ScrollViewWithOnScrollChanged { + VStack { + ForEach(0..<30) { x in + Text("x: \(x)") + .frame(maxWidth: .infinity) + .frame(height: 200) + .cornerRadius(10) + .background(Color.red) + .padding() + .id(x) + } + } + } onScrollChanged: { origin in + yPosition = origin.y + } + .overlay(Text("Offset: \(yPosition)")) + } + } + + static var previews: some View { + PreviewView() + } +} From c85a865b8b1f0655efa25a941448f1c0f61adcf7 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Mon, 20 Apr 2026 12:25:58 +0300 Subject: [PATCH 17/66] refactor(local-currency): extract CurrencyItem and debounce filtering --- DashWallet.xcodeproj/project.pbxproj | 6 +++ .../Settings/LocalCurrency/CurrencyItem.swift | 26 ++++++++++ .../LocalCurrencyViewModel.swift | 48 +++++++++++-------- 3 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 DashWallet/Sources/UI/Menu/Settings/LocalCurrency/CurrencyItem.swift diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index ed75d6f00..f1040cdde 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -507,6 +507,8 @@ 5151CD632F926D1900F0A604 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CD612F926D1900F0A604 /* SearchBar.swift */; }; 5151CDF02F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */; }; 5151CDF12F928D7D00F0A604 /* LocalCurrencyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */; }; + 5151CE182F9624D000F0A604 /* CurrencyItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CE172F9624D000F0A604 /* CurrencyItem.swift */; }; + 5151CE192F9624D000F0A604 /* CurrencyItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5151CE172F9624D000F0A604 /* CurrencyItem.swift */; }; 7502A4872AE401EF00ACDDD3 /* UsernameVotingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7502A4862AE401EF00ACDDD3 /* UsernameVotingViewController.swift */; }; 7503643A2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; 7503643B2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 750364392C89CFB70029EC0D /* CoinJoinProgressView.swift */; }; @@ -2475,6 +2477,7 @@ 5151CA222F92335E00F0A604 /* LocalCurrencyViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalCurrencyViewModel.swift; sourceTree = ""; }; 5151CD612F926D1900F0A604 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; 5151CDEF2F928D7D00F0A604 /* LocalCurrencyCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalCurrencyCellView.swift; sourceTree = ""; }; + 5151CE172F9624D000F0A604 /* CurrencyItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyItem.swift; sourceTree = ""; }; 62C1F7A3ABEE7CF3BBB270C4 /* Pods-DashWalletTests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.testflight.xcconfig"; sourceTree = ""; }; 67217DE34817FB304EDEA8D4 /* Pods-dashpay.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testnet.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testnet.xcconfig"; sourceTree = ""; }; 6A44C167AF8F881176AFB256 /* Pods-TodayExtension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.testflight.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.testflight.xcconfig"; sourceTree = ""; }; @@ -4332,6 +4335,7 @@ 2AA87CF926E5681100F0CEA6 /* DWCurrencyObject.m */, 2ACD53E6234BADD300650AD3 /* DWCurrencyItem.h */, 2AA87CFB26E568A100F0CEA6 /* DWCurrencyItemPriceProvider.h */, + 5151CE172F9624D000F0A604 /* CurrencyItem.swift */, ); path = LocalCurrency; sourceTree = ""; @@ -8668,6 +8672,7 @@ 47AE8BF428C1306000490F5E /* FetchingNextPageCell.swift in Sources */, 47081197298CF20C003FCA3D /* Transaction.swift in Sources */, 47AE8BE628C1305F00490F5E /* AllMerchantLocationsViewController.swift in Sources */, + 5151CE192F9624D000F0A604 /* CurrencyItem.swift in Sources */, 2ACCD84D23180E7E00A96B62 /* DWPaymentOutput.m in Sources */, 2AB3415E23A8133A004E37A7 /* DWPayModelStub.m in Sources */, 2A74EFF1230531DA00C475EB /* DWRecoverContentView.m in Sources */, @@ -9337,6 +9342,7 @@ C9D2C6BB2A320AA000D15901 /* DWFormTableViewController.m in Sources */, C943B34D2A40A4C500AF23C5 /* DWInfoPopupViewController.m in Sources */, 75F990822AFD1065006759AB /* UsernameRequestDetailsViewController.swift in Sources */, + 5151CE182F9624D000F0A604 /* CurrencyItem.swift in Sources */, C943B32A2A408CED00AF23C5 /* DWAvatarExternalSourceView.m in Sources */, C9D2C6BC2A320AA000D15901 /* WalletKeysOverviewModel.swift in Sources */, C9D2C6BD2A320AA000D15901 /* UIAssembly.swift in Sources */, diff --git a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/CurrencyItem.swift b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/CurrencyItem.swift new file mode 100644 index 000000000..d21102613 --- /dev/null +++ b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/CurrencyItem.swift @@ -0,0 +1,26 @@ +// +// Created by Roman Chornyi +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +struct CurrencyItem: Identifiable, Equatable { + var id: String { code } + let code: String + let name: String + let flagName: String? + let priceString: String? +} diff --git a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift index 6152811a1..ecbf9867d 100644 --- a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift @@ -18,34 +18,15 @@ import Foundation import Combine -// MARK: - CurrencyItem - -struct CurrencyItem: Identifiable, Equatable { - var id: String { code } - let code: String - let name: String - let flagName: String? - let priceString: String? -} - -// MARK: - LocalCurrencyViewModel - @MainActor class LocalCurrencyViewModel: ObservableObject { private let allItems: [CurrencyItem] + private var cancellables = Set() @Published var searchQuery: String = "" + @Published private(set) var filteredItems: [CurrencyItem] = [] @Published var selectedCurrencyCode: String - var filteredItems: [CurrencyItem] { - let trimmed = searchQuery.trimmingCharacters(in: .whitespaces) - guard !trimmed.isEmpty else { return allItems } - let query = trimmed.lowercased() - return allItems.filter { - $0.code.lowercased().contains(query) || $0.name.lowercased().contains(query) - } - } - /// Production init — loads currencies from CurrencyExchangerObjcWrapper. init(currencyCode: String? = nil) { let formatter = NumberFormatter() @@ -62,18 +43,43 @@ class LocalCurrencyViewModel: ObservableObject { } self.allItems = items self.selectedCurrencyCode = currencyCode ?? App.fiatCurrency + self.filteredItems = items + setupSearch() } /// Preview / testing init — accepts pre-built items without DashSync. init(items: [CurrencyItem], selectedCode: String) { self.allItems = items self.selectedCurrencyCode = selectedCode + self.filteredItems = items + setupSearch() } func select(currencyCode: String) { selectedCurrencyCode = currencyCode App.shared.fiatCurrency = currencyCode } + + private func setupSearch() { + $searchQuery + .debounce(for: .milliseconds(150), scheduler: RunLoop.main) + .sink { [weak self] query in + self?.applyFilter(query) + } + .store(in: &cancellables) + } + + private func applyFilter(_ query: String) { + let trimmed = query.trimmingCharacters(in: .whitespaces) + guard !trimmed.isEmpty else { + filteredItems = allItems + return + } + let lowercased = trimmed.lowercased() + filteredItems = allItems.filter { + $0.code.lowercased().contains(lowercased) || $0.name.lowercased().contains(lowercased) + } + } } // MARK: - Flag mapping From c57de5e23b38b90dc8957114c56d0fa53c5beb06 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Mon, 20 Apr 2026 12:36:44 +0300 Subject: [PATCH 18/66] fix(previews): enable local currency SwiftUI previews --- .../xcschemes/dashwallet.xcscheme | 2 +- DashWallet/AppDelegate.m | 6 ++++ .../LocalCurrency/LocalCurrencyView.swift | 36 ++++++++++++------- .../LocalCurrencyViewModel.swift | 25 ++++++------- 4 files changed, 41 insertions(+), 28 deletions(-) diff --git a/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme b/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme index dc4c775c9..b2b6d169e 100644 --- a/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme +++ b/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme @@ -73,7 +73,7 @@ Void, - onBack: (() -> Void)? = nil - ) { - self._viewModel = StateObject(wrappedValue: viewModel) - self.onSelect = onSelect - self.onBack = onBack - } - var body: some View { ZStack(alignment: .top) { - // Background + background LocalCurrencyScrollContentView( headerHeight: fullHeaderSize.height, @@ -77,7 +66,10 @@ struct LocalCurrencyView: View { } } } - .background(Color.primaryBackground) + } + + private var background: some View { + Color.primaryBackground } } @@ -179,6 +171,24 @@ private struct LocalCurrencyTopOverlayView: View { // MARK: - Preview #if DEBUG +extension LocalCurrencyView { + fileprivate init( + viewModel: LocalCurrencyViewModel, + onSelect: @escaping (String) -> Void, + onBack: (() -> Void)? = nil + ) { + self._viewModel = StateObject(wrappedValue: viewModel) + self.onSelect = onSelect + self.onBack = onBack + } +} + +extension LocalCurrencyViewModel { + convenience init(items: [CurrencyItem], selectedCode: String) { + self.init(allItems: items, selectedCurrencyCode: selectedCode) + } +} + #Preview { LocalCurrencyView( viewModel: LocalCurrencyViewModel( diff --git a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift index ecbf9867d..f1fdae22c 100644 --- a/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift +++ b/DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyViewModel.swift @@ -27,8 +27,14 @@ class LocalCurrencyViewModel: ObservableObject { @Published private(set) var filteredItems: [CurrencyItem] = [] @Published var selectedCurrencyCode: String - /// Production init — loads currencies from CurrencyExchangerObjcWrapper. - init(currencyCode: String? = nil) { + init(allItems: [CurrencyItem], selectedCurrencyCode: String) { + self.allItems = allItems + self.selectedCurrencyCode = selectedCurrencyCode + self.filteredItems = allItems + setupSearch() + } + + convenience init(currencyCode: String? = nil) { let formatter = NumberFormatter() formatter.maximumFractionDigits = 2 formatter.minimumFractionDigits = 2 @@ -41,18 +47,7 @@ class LocalCurrencyViewModel: ObservableObject { priceString: formatter.string(from: price.price) ) } - self.allItems = items - self.selectedCurrencyCode = currencyCode ?? App.fiatCurrency - self.filteredItems = items - setupSearch() - } - - /// Preview / testing init — accepts pre-built items without DashSync. - init(items: [CurrencyItem], selectedCode: String) { - self.allItems = items - self.selectedCurrencyCode = selectedCode - self.filteredItems = items - setupSearch() + self.init(allItems: items, selectedCurrencyCode: currencyCode ?? App.fiatCurrency) } func select(currencyCode: String) { @@ -82,6 +77,8 @@ class LocalCurrencyViewModel: ObservableObject { } } + + // MARK: - Flag mapping extension LocalCurrencyViewModel { From a74a18448d74622246e23c3c4d672f71efd5c454 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:30:21 +0300 Subject: [PATCH 19/66] ci: enforce Xcode 26.x for release archive pipeline --- .github/workflows/release-xcode26.yml | 62 +++++++++++++++++++++++++++ fastlane/Fastfile | 32 +++++++++++++- 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release-xcode26.yml diff --git a/.github/workflows/release-xcode26.yml b/.github/workflows/release-xcode26.yml new file mode 100644 index 000000000..216c6d86b --- /dev/null +++ b/.github/workflows/release-xcode26.yml @@ -0,0 +1,62 @@ +name: Release Archive (Xcode 26.x) + +on: + workflow_dispatch: + push: + branches: + - release/* + - release/** + +jobs: + archive: + name: Archive Build + runs-on: macos-latest + timeout-minutes: 90 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Select Xcode 26.x + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: "26.x" + + - name: Verify Xcode version + run: | + mkdir -p build + xcodebuild -version | tee build/xcode-version.txt + if ! grep -Eq '^Xcode 26\.' build/xcode-version.txt; then + echo "Expected Xcode 26.x but got:" + cat build/xcode-version.txt + exit 1 + fi + + - name: Setup CocoaPods + uses: maxim-lobanov/setup-cocoapods@v1 + with: + version: "1.15.2" + + - name: Ensure fastlane is available + run: | + if ! command -v fastlane >/dev/null 2>&1; then + gem install fastlane -N + fi + fastlane --version + + - name: Install pods + run: pod install --repo-update + + - name: Build release archive + run: fastlane ios release_archive_ci + + - name: Upload build logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: release-xcode26-logs-${{ github.run_number }} + if-no-files-found: warn + path: | + build/xcode-version.txt + build/logs/** + fastlane/report.xml diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 03a8c89d4..66741a59c 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -21,6 +21,7 @@ platform :ios do desc "Push a new beta build to TestFlight" lane :beta do + ensure_xcode_26 ensure_git_status_clean cocoapods_install @@ -28,10 +29,12 @@ platform :ios do increment_build_number build_app( + workspace: ENV["XCODE_WORKSPACE"], scheme: ENV["XCODE_SCHEME"], configuration: "Release", clean: true, - export_method: "app-store" + export_method: "app-store", + buildlog_path: "build/logs" ) upload_to_testflight( @@ -43,6 +46,24 @@ platform :ios do clean_build_artifacts end + desc "Build release archive in CI with Xcode 26.x (no upload)" + lane :release_archive_ci do + ensure_xcode_26 + + cocoapods_install + + build_app( + workspace: ENV["XCODE_WORKSPACE"], + scheme: ENV["XCODE_SCHEME"], + configuration: "Release", + clean: true, + skip_codesigning: true, + skip_package_ipa: true, + archive_path: "build/DashWallet.xcarchive", + buildlog_path: "build/logs" + ) + end + desc "Run tests" lane :test do setup_travis @@ -61,4 +82,13 @@ platform :ios do ) end + private_lane :ensure_xcode_26 do + xcode_version_output = sh("xcodebuild -version") + UI.message("Detected Xcode:\n#{xcode_version_output}") + + unless xcode_version_output.match?(/^Xcode 26\./) + UI.user_error!("Xcode 26.x is required for release lanes. Current version output:\n#{xcode_version_output}") + end + end + end From b12f1c9b1a52283efa46a9ccb1725724bb45bfc3 Mon Sep 17 00:00:00 2001 From: Roman <51091564+jeanpierreroma@users.noreply.github.com> Date: Mon, 20 Apr 2026 20:16:51 +0300 Subject: [PATCH 20/66] ci: enable release archive workflow on PR to master --- .github/workflows/release-xcode26.yml | 48 ++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-xcode26.yml b/.github/workflows/release-xcode26.yml index 216c6d86b..b3d5d7c71 100644 --- a/.github/workflows/release-xcode26.yml +++ b/.github/workflows/release-xcode26.yml @@ -4,8 +4,10 @@ on: workflow_dispatch: push: branches: - - release/* - - release/** + - master + pull_request: + branches: + - master jobs: archive: @@ -44,19 +46,49 @@ jobs: fi fastlane --version - - name: Install pods - run: pod install --repo-update - - name: Build release archive run: fastlane ios release_archive_ci + - name: Prepare public-safe artifacts + if: always() + run: | + mkdir -p build/public-artifacts + + if [ -f build/xcode-version.txt ]; then + cp build/xcode-version.txt build/public-artifacts/xcode-version.txt + fi + + if [ -d build/logs ]; then + for src in build/logs/*; do + [ -f "$src" ] || continue + dst="build/public-artifacts/$(basename "$src")" + sed -E \ + -e 's/(Authorization: Bearer )[A-Za-z0-9._-]+/\1[REDACTED]/g' \ + -e 's/([?&](token|access_token|password|api_key|apikey|secret)=)[^&[:space:]]+/\1[REDACTED]/Ig' \ + -e 's/(APPLE_APP_SPECIFIC_PASSWORD=)[^[:space:]]+/\1[REDACTED]/g' \ + -e 's/(FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=)[^[:space:]]+/\1[REDACTED]/g' \ + "$src" > "$dst" + done + fi + + if [ -f fastlane/report.xml ]; then + cp fastlane/report.xml build/public-artifacts/fastlane-report.xml + fi + + { + echo "Archive log summary" + echo "===================" + if [ -d build/public-artifacts ]; then + grep -R -n -E "ARCHIVE SUCCEEDED|ARCHIVE FAILED|BUILD SUCCEEDED|error:" build/public-artifacts || true + fi + } > build/public-artifacts/archive-summary.txt + - name: Upload build logs if: always() uses: actions/upload-artifact@v4 with: name: release-xcode26-logs-${{ github.run_number }} + retention-days: 3 if-no-files-found: warn path: | - build/xcode-version.txt - build/logs/** - fastlane/report.xml + build/public-artifacts/** From 989d1ea99021a6e3e41351afb39c4a0c2f6fd1dc Mon Sep 17 00:00:00 2001 From: ross-dash Date: Wed, 22 Apr 2026 14:47:17 +0200 Subject: [PATCH 21/66] feat(menu): refactor menu with new MenuItem component and update navigation - Migrate all menu items to use the new MenuItem component - Update styles for MenuItemsList - Replace all menu item icons with updated assets - Change "Buy & Sell Dash" and "Explore" from bottom sheet to full page --- DashSyncCurrentCommit | 2 +- DashWallet.xcodeproj/project.pbxproj | 235 ++++++++++-------- .../xcschemes/dashwallet.xcscheme | 2 +- .../Dash logo/Contents.json | 6 + .../dash-logo-black.imageset/Contents.json | 23 ++ .../dash-logo-black.png | Bin 0 -> 4028 bytes .../dash-logo-black@2x.png | Bin 0 -> 8256 bytes .../dash-logo-black@3x.png | Bin 0 -> 12872 bytes .../Contents.json | 0 .../import.private.key.png | Bin .../import.private.key@2x.png | Bin .../import.private.key@3x.png | Bin .../zenledger_large.imageset/Contents.json | 0 .../zenledger_large.png | Bin .../zenledger_large@2x.png | Bin .../zenledger_large@3x.png | Bin .../Menu/Image.face.id.imageset/Layer 1.png | Bin 565 -> 0 bytes .../Image.face.id.imageset/Layer 1@2x.png | Bin 1043 -> 0 bytes .../Image.face.id.imageset/Layer 1@3x.png | Bin 1649 -> 0 bytes .../Contents.json | 23 ++ .../image-menu-advanced_security.png | Bin 0 -> 712 bytes .../image-menu-advanced_security@2x.png | Bin 0 -> 1217 bytes .../image-menu-advanced_security@3x.png | Bin 0 -> 1746 bytes .../Contents.json | 6 +- .../image-menu-atm.png | Bin 0 -> 626 bytes .../image-menu-atm@2x.png | Bin 0 -> 1011 bytes .../image-menu-atm@3x.png | Bin 0 -> 1420 bytes .../Contents.json | 23 ++ .../image-menu-autohide_balance.png | Bin 0 -> 650 bytes .../image-menu-autohide_balance@2x.png | Bin 0 -> 1215 bytes .../image-menu-autohide_balance@3x.png | Bin 0 -> 1687 bytes .../Contents.json | 23 ++ .../image-menu-pin.png | Bin 0 -> 767 bytes .../image-menu-pin@2x.png | Bin 0 -> 1341 bytes .../image-menu-pin@3x.png | Bin 0 -> 1930 bytes .../Contents.json | 23 ++ .../image-menu-touch_id.png | Bin 0 -> 1188 bytes .../image-menu-touch_id@2x.png | Bin 0 -> 2510 bytes .../image-menu-touch_id@3x.png | Bin 0 -> 3732 bytes .../Contents.json | 6 +- .../image-menu-face_id.png | Bin 0 -> 709 bytes .../image-menu-face_id@2x.png | Bin 0 -> 1186 bytes .../image-menu-face_id@3x.png | Bin 0 -> 1748 bytes .../Contents.json | 23 ++ .../image-menu-merchant.png | Bin 0 -> 608 bytes .../image-menu-merchant@2x.png | Bin 0 -> 1012 bytes .../image-menu-merchant@3x.png | Bin 0 -> 1498 bytes .../Contents.json | 23 ++ .../image-menu-recovery_phrase.png | Bin 0 -> 771 bytes .../image-menu-recovery_phrase@2x.png | Bin 0 -> 1236 bytes .../image-menu-recovery_phrase@3x.png | Bin 0 -> 1825 bytes .../Contents.json | 23 ++ .../image-menu-reset_wallet.png | Bin 0 -> 859 bytes .../image-menu-reset_wallet@2x.png | Bin 0 -> 1546 bytes .../image-menu-reset_wallet@3x.png | Bin 0 -> 2222 bytes .../image-menu-staking.imageset/Contents.json | 23 ++ .../image-menu-staking.png | Bin 0 -> 897 bytes .../image-menu-staking@2x.png | Bin 0 -> 1499 bytes .../image-menu-staking@3x.png | Bin 0 -> 2201 bytes .../image.about.imageset/dash.logo.circle.png | Bin 723 -> 753 bytes .../dash.logo.circle@2x.png | Bin 1246 -> 1223 bytes .../dash.logo.circle@3x.png | Bin 1730 -> 1802 bytes .../advanced security.png | Bin 522 -> 0 bytes .../advanced security@2x.png | Bin 931 -> 0 bytes .../advanced security@3x.png | Bin 1363 -> 0 bytes .../eye.closed.png | Bin 591 -> 0 bytes .../eye.closed@2x.png | Bin 1128 -> 0 bytes .../eye.closed@3x.png | Bin 1585 -> 0 bytes .../buy.sell.dash.2.png | Bin 684 -> 763 bytes .../buy.sell.dash.2@2x.png | Bin 1239 -> 1311 bytes .../buy.sell.dash.2@3x.png | Bin 1806 -> 1908 bytes .../image.change.pin.imageset/Layer_1.png | Bin 659 -> 0 bytes .../image.change.pin.imageset/Layer_1@2x.png | Bin 1252 -> 0 bytes .../image.change.pin.imageset/Layer_1@3x.png | Bin 1731 -> 0 bytes .../Contents.json | 6 +- .../image.coinjoin.menu.imageset/Layer_1.png | Bin 692 -> 0 bytes .../Layer_1@2x.png | Bin 1361 -> 0 bytes .../Layer_1@3x.png | Bin 1956 -> 0 bytes .../image.coinjoin.menu.imageset/mixing.png | Bin 0 -> 767 bytes .../mixing@2x.png | Bin 0 -> 1475 bytes .../mixing@3x.png | Bin 0 -> 2101 bytes .../image.csv.export.imageset/Contents.json | 6 +- .../image.csv.export.imageset/csv-export.png | Bin 0 -> 677 bytes .../csv-export@2x.png | Bin 0 -> 1209 bytes .../csv-export@3x.png | Bin 0 -> 1730 bytes .../image.csv.export.imageset/csv.export.png | Bin 417 -> 0 bytes .../csv.export@2x.png | Bin 687 -> 0 bytes .../csv.export@3x.png | Bin 945 -> 0 bytes .../image.currency.imageset/Contents.json | 6 +- .../Menu/image.currency.imageset/cash.png | Bin 495 -> 0 bytes .../Menu/image.currency.imageset/cash@2x.png | Bin 882 -> 0 bytes .../Menu/image.currency.imageset/cash@3x.png | Bin 1268 -> 0 bytes .../local.currency.png | Bin 0 -> 719 bytes .../local.currency@2x.png | Bin 0 -> 1289 bytes .../local.currency@3x.png | Bin 0 -> 1878 bytes .../Menu/image.explore.imageset/Contents.json | 6 +- .../image.explore.imageset/Explore-Blue.png | Bin 578 -> 0 bytes .../Explore-Blue@2x.png | Bin 1070 -> 0 bytes .../Explore-Blue@3x.png | Bin 1510 -> 0 bytes .../Menu/image.explore.imageset/explore-2.png | Bin 0 -> 693 bytes .../image.explore.imageset/explore-2@2x.png | Bin 0 -> 1173 bytes .../image.explore.imageset/explore-2@3x.png | Bin 0 -> 1693 bytes .../Contents.json | 6 +- .../extend-public-key.png | Bin 0 -> 712 bytes .../extend-public-key@2x.png | Bin 0 -> 1196 bytes .../extend-public-key@3x.png | Bin 0 -> 1758 bytes .../public.key.png | Bin 478 -> 0 bytes .../public.key@2x.png | Bin 812 -> 0 bytes .../public.key@3x.png | Bin 1222 -> 0 bytes .../Contents.json | 6 +- .../import-private-key.png | Bin 0 -> 822 bytes .../import-private-key@2x.png | Bin 0 -> 1406 bytes .../import-private-key@3x.png | Bin 0 -> 2110 bytes .../import.private.key.png | Bin 571 -> 0 bytes .../import.private.key@2x.png | Bin 983 -> 0 bytes .../import.private.key@3x.png | Bin 1504 -> 0 bytes .../Contents.json | 6 +- .../Layer_1.png | Bin 310 -> 0 bytes .../Layer_1@2x.png | Bin 571 -> 0 bytes .../Layer_1@3x.png | Bin 785 -> 0 bytes .../masternode-keys.png | Bin 0 -> 626 bytes .../masternode-keys@2x.png | Bin 0 -> 1030 bytes .../masternode-keys@3x.png | Bin 0 -> 1496 bytes .../Contents.json | 6 +- .../Layer_1.png | Bin 322 -> 0 bytes .../Layer_1@2x.png | Bin 572 -> 0 bytes .../Layer_1@3x.png | Bin 827 -> 0 bytes .../network-monitor.png | Bin 0 -> 586 bytes .../network-monitor@2x.png | Bin 0 -> 955 bytes .../network-monitor@3x.png | Bin 0 -> 1476 bytes .../Contents.json | 6 +- .../image.notifications.imageset/Layer 1.png | Bin 426 -> 0 bytes .../Layer 1@2x.png | Bin 721 -> 0 bytes .../Layer 1@3x.png | Bin 987 -> 0 bytes .../notification.png | Bin 0 -> 499 bytes .../notification@2x.png | Bin 0 -> 833 bytes .../notification@3x.png | Bin 0 -> 1196 bytes .../Layer_1.png | Bin 350 -> 0 bytes .../Layer_1@2x.png | Bin 661 -> 0 bytes .../Layer_1@3x.png | Bin 959 -> 0 bytes .../rescan.blockchain.png | Bin 577 -> 616 bytes .../rescan.blockchain@2x.png | Bin 1028 -> 1084 bytes .../rescan.blockchain@3x.png | Bin 1505 -> 1573 bytes .../image.reset.wallet.imageset/Contents.json | 23 -- .../reset wallet.png | Bin 698 -> 0 bytes .../reset wallet@2x.png | Bin 1044 -> 0 bytes .../reset wallet@3x.png | Bin 1731 -> 0 bytes .../image.security.imageset/Contents.json | 6 +- .../Menu/image.security.imageset/Vector.png | Bin 459 -> 0 bytes .../image.security.imageset/Vector@2x.png | Bin 789 -> 0 bytes .../image.security.imageset/Vector@3x.png | Bin 1182 -> 0 bytes .../Menu/image.security.imageset/security.png | Bin 0 -> 572 bytes .../image.security.imageset/security@2x.png | Bin 0 -> 960 bytes .../image.security.imageset/security@3x.png | Bin 0 -> 1327 bytes .../image.settings.imageset/Contents.json | 6 +- .../Iconly_x2F_Bold_x2F_Setting.png | Bin 567 -> 0 bytes .../Iconly_x2F_Bold_x2F_Setting@2x.png | Bin 1035 -> 0 bytes .../Iconly_x2F_Bold_x2F_Setting@3x.png | Bin 1478 -> 0 bytes .../Menu/image.settings.imageset/settings.png | Bin 0 -> 669 bytes .../image.settings.imageset/settings@2x.png | Bin 0 -> 1168 bytes .../image.settings.imageset/settings@3x.png | Bin 0 -> 1720 bytes .../Menu/image.support.imageset/Contents.json | 6 +- .../Menu/image.support.imageset/Group.png | Bin 600 -> 0 bytes .../Menu/image.support.imageset/Group@2x.png | Bin 1106 -> 0 bytes .../Menu/image.support.imageset/Group@3x.png | Bin 1641 -> 0 bytes .../Menu/image.support.imageset/support.png | Bin 0 -> 651 bytes .../image.support.imageset/support@2x.png | Bin 0 -> 1089 bytes .../image.support.imageset/support@3x.png | Bin 0 -> 1648 bytes .../Menu/image.tools.imageset/Contents.json | 6 +- .../Menu/image.tools.imageset/Group.png | Bin 369 -> 0 bytes .../Menu/image.tools.imageset/Group@2x.png | Bin 563 -> 0 bytes .../Menu/image.tools.imageset/Group@3x.png | Bin 898 -> 0 bytes .../Menu/image.tools.imageset/tools.png | Bin 0 -> 627 bytes .../Menu/image.tools.imageset/tools@2x.png | Bin 0 -> 905 bytes .../Menu/image.tools.imageset/tools@3x.png | Bin 0 -> 1390 bytes .../image.touch.id.imageset/Contents.json | 23 -- .../image.touch.id.imageset/fingerprint.png | Bin 1025 -> 0 bytes .../fingerprint@2x.png | Bin 2042 -> 0 bytes .../fingerprint@3x.png | Bin 3086 -> 0 bytes .../menu_buySellDash.imageset/Contents.json | 56 ----- .../menu_buySellDash.png | Bin 1211 -> 0 bytes .../menu_buySellDash@2x.png | Bin 2492 -> 0 bytes .../menu_buySellDash@3x.png | Bin 3711 -> 0 bytes .../menu_buySellDash_dark.png | Bin 1132 -> 0 bytes .../menu_buySellDash_dark@2x.png | Bin 2090 -> 0 bytes .../menu_buySellDash_dark@3x.png | Bin 3095 -> 0 bytes .../Menu/menu_security.imageset/Contents.json | 56 ----- .../menu_security.imageset/menu_security.png | Bin 1132 -> 0 bytes .../menu_security@2x.png | Bin 2609 -> 0 bytes .../menu_security@3x.png | Bin 3964 -> 0 bytes .../menu_security_dark.png | Bin 946 -> 0 bytes .../menu_security_dark@2x.png | Bin 1916 -> 0 bytes .../menu_security_dark@3x.png | Bin 2869 -> 0 bytes .../Menu/menu_settings.imageset/Contents.json | 56 ----- .../Menu/menu_settings.imageset/levels.png | Bin 499 -> 0 bytes .../Menu/menu_settings.imageset/levels@2x.png | Bin 778 -> 0 bytes .../Menu/menu_settings.imageset/levels@3x.png | Bin 1093 -> 0 bytes .../menu_settings.imageset/menu_settings.png | Bin 607 -> 0 bytes .../menu_settings@2x.png | Bin 1176 -> 0 bytes .../menu_settings@3x.png | Bin 1792 -> 0 bytes .../Menu/menu_support.imageset/Contents.json | 23 -- .../menu_support.imageset/menu_support.png | Bin 852 -> 0 bytes .../menu_support.imageset/menu_support@2x.png | Bin 1675 -> 0 bytes .../menu_support.imageset/menu_support@3x.png | Bin 2464 -> 0 bytes .../Menu/menu_tools.imageset/Contents.json | 56 ----- .../Menu/menu_tools.imageset/menu_tools.png | Bin 1160 -> 0 bytes .../menu_tools.imageset/menu_tools@2x.png | Bin 2480 -> 0 bytes .../menu_tools.imageset/menu_tools@3x.png | Bin 3875 -> 0 bytes .../Menu/menu_tools.imageset/tools.png | Bin 880 -> 0 bytes .../Menu/menu_tools.imageset/tools@2x.png | Bin 1772 -> 0 bytes .../Menu/menu_tools.imageset/tools@3x.png | Bin 2641 -> 0 bytes .../Contents.json | 6 +- .../menu-coinbase.png | Bin 0 -> 581 bytes .../menu-coinbase@2x.png | Bin 0 -> 1037 bytes .../menu-coinbase@3x.png | Bin 0 -> 1467 bytes .../Contents.json | 6 +- .../service-topper.imageset/menu-topper.png | Bin 0 -> 651 bytes .../menu-topper@2x.png | Bin 0 -> 1026 bytes .../menu-topper@3x.png | Bin 0 -> 1390 bytes .../Contents.json | 6 +- .../service-uphold.imageset/menu-uphold.png | Bin 0 -> 857 bytes .../menu-uphold@2x.png | Bin 0 -> 1664 bytes .../menu-uphold@3x.png | Bin 0 -> 2435 bytes .../zenledger.imageset/Contents.json | 6 +- .../zenledger.imageset/zen_ledger.png | Bin 462 -> 0 bytes .../zenledger.imageset/zen_ledger@2x.png | Bin 728 -> 0 bytes .../zenledger.imageset/zen_ledger@3x.png | Bin 1062 -> 0 bytes .../zenledger.imageset/zenledger.png | Bin 0 -> 409 bytes .../zenledger.imageset/zenledger@2x.png | Bin 0 -> 504 bytes .../zenledger.imageset/zenledger@3x.png | Bin 0 -> 593 bytes .../UI/Buy Sell/BuySellPortalScreen.swift | 176 +++++++++++++ .../BuySellPortalViewController.swift | 162 ++++-------- .../Buy Sell/Model/BuySellPortalModel.swift | 10 +- .../UI/Explore Dash/ExploreMenuScreen.swift | 209 ++++++++++++++++ .../Home/HomeViewController+Shortcuts.swift | 35 ++- .../UI/Main/MainTabbarController.swift | 29 +-- .../UI/Menu/Main/MainMenuViewController.swift | 116 ++++----- .../UI/Menu/Main/MainMenuViewModel.swift | 14 +- .../UI/Menu/Security/SecurityMenuScreen.swift | 46 +--- .../Menu/Security/SecurityMenuViewModel.swift | 32 ++- .../Menu/Settings/SettingsMenuViewModel.swift | 12 +- .../UI/Menu/Settings/SettingsScreen.swift | 35 +-- .../UI/Menu/Tools/ToolsMenuScreen.swift | 115 ++++----- .../UI/Menu/Tools/ToolsMenuViewModel.swift | 10 +- .../UI/SwiftUI Components/Color+DWStyle.swift | 6 +- .../UI/SwiftUI Components/MenuItem.swift | 43 ++-- .../UI/SwiftUI Components/TopIntro.swift | 42 ++++ .../BackgroundColor.colorset/Contents.json | 6 +- .../Colors/Black800.colorset/Contents.json | 20 ++ 249 files changed, 1135 insertions(+), 842 deletions(-) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Dash logo/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/dash-logo-black.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/dash-logo-black@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/dash-logo-black@3x.png rename DashWallet/Resources/AppAssets.xcassets/{Menu => Illustration}/image.import.private.key.large.imageset/Contents.json (100%) rename DashWallet/Resources/AppAssets.xcassets/{Menu => Illustration}/image.import.private.key.large.imageset/import.private.key.png (100%) rename DashWallet/Resources/AppAssets.xcassets/{Menu => Illustration}/image.import.private.key.large.imageset/import.private.key@2x.png (100%) rename DashWallet/Resources/AppAssets.xcassets/{Menu => Illustration}/image.import.private.key.large.imageset/import.private.key@3x.png (100%) rename DashWallet/Resources/AppAssets.xcassets/{ => Illustration}/zenledger_large.imageset/Contents.json (100%) rename DashWallet/Resources/AppAssets.xcassets/{ => Illustration}/zenledger_large.imageset/zenledger_large.png (100%) rename DashWallet/Resources/AppAssets.xcassets/{ => Illustration}/zenledger_large.imageset/zenledger_large@2x.png (100%) rename DashWallet/Resources/AppAssets.xcassets/{ => Illustration}/zenledger_large.imageset/zenledger_large@3x.png (100%) delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/Image.face.id.imageset/Layer 1@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/image-menu-advanced_security.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/image-menu-advanced_security@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/image-menu-advanced_security@3x.png rename DashWallet/Resources/AppAssets.xcassets/Menu/{image.change.pin.imageset => image-menu-atm.imageset}/Contents.json (67%) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/image-menu-atm.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/image-menu-atm@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/image-menu-atm@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id@3x.png rename DashWallet/Resources/AppAssets.xcassets/Menu/{image.advanced.security.imageset => image-menu-face_id.imageset}/Contents.json (65%) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-face_id.imageset/image-menu-face_id.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-face_id.imageset/image-menu-face_id@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-face_id.imageset/image-menu-face_id@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-merchant.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-merchant.imageset/image-menu-merchant.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-merchant.imageset/image-menu-merchant@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-merchant.imageset/image-menu-merchant@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-recovery_phrase.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-recovery_phrase.imageset/image-menu-recovery_phrase.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-recovery_phrase.imageset/image-menu-recovery_phrase@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-recovery_phrase.imageset/image-menu-recovery_phrase@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-reset_wallet.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-reset_wallet.imageset/image-menu-reset_wallet.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-reset_wallet.imageset/image-menu-reset_wallet@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-reset_wallet.imageset/image-menu-reset_wallet@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/Contents.json create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.advanced.security.imageset/advanced security@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.autohide.balance.imageset/eye.closed@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Layer_1@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/Layer_1@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/mixing.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/mixing@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.coinjoin.menu.imageset/mixing@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv-export.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv-export@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv-export@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.csv.export.imageset/csv.export@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/cash@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/local.currency.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/local.currency@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.currency.imageset/local.currency@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/Explore-Blue@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/explore-2.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/explore-2@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.explore.imageset/explore-2@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/extend-public-key.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/extend-public-key@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/extend-public-key@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.extend.public.key.imageset/public.key@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import-private-key.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import-private-key@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import-private-key@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.import.private.key.imageset/import.private.key@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/Layer_1@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/masternode-keys.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/masternode-keys@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.masternode.keys.imageset/masternode-keys@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/Layer_1@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/network-monitor.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/network-monitor@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.network.monitor.imageset/network-monitor@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/Layer 1@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/notification.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/notification@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.notifications.imageset/notification@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.recovery.phrase.imageset/Layer_1@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.reset.wallet.imageset/reset wallet@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/Vector@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/security.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/security@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.security.imageset/security@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/Iconly_x2F_Bold_x2F_Setting@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/settings.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/settings@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.settings.imageset/settings@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/Group@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/support.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/support@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.support.imageset/support@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/Group@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/tools.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/tools@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.tools.imageset/tools@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image.touch.id.imageset/fingerprint@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash_dark.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash_dark@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_buySellDash.imageset/menu_buySellDash_dark@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security_dark.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security_dark@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_security.imageset/menu_security_dark@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/levels.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/levels@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/levels@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/menu_settings.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/menu_settings@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_settings.imageset/menu_settings@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_support.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_support.imageset/menu_support.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_support.imageset/menu_support@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_support.imageset/menu_support@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/menu_tools.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/menu_tools@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/menu_tools@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/tools.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/tools@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/menu_tools.imageset/tools@3x.png rename DashWallet/Resources/AppAssets.xcassets/Menu/{image.autohide.balance.imageset => service-coinbase.imageset}/Contents.json (68%) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-coinbase.imageset/menu-coinbase.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-coinbase.imageset/menu-coinbase@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-coinbase.imageset/menu-coinbase@3x.png rename DashWallet/Resources/AppAssets.xcassets/Menu/{Image.face.id.imageset => service-topper.imageset}/Contents.json (69%) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-topper.imageset/menu-topper.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-topper.imageset/menu-topper@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-topper.imageset/menu-topper@3x.png rename DashWallet/Resources/AppAssets.xcassets/Menu/{image.recovery.phrase.imageset => service-uphold.imageset}/Contents.json (69%) create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-uphold.imageset/menu-uphold.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-uphold.imageset/menu-uphold@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/service-uphold.imageset/menu-uphold@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zen_ledger.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zen_ledger@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zen_ledger@3x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zenledger.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zenledger@2x.png create mode 100644 DashWallet/Resources/AppAssets.xcassets/zenledger.imageset/zenledger@3x.png create mode 100644 DashWallet/Sources/UI/Buy Sell/BuySellPortalScreen.swift create mode 100644 DashWallet/Sources/UI/Explore Dash/ExploreMenuScreen.swift create mode 100644 DashWallet/Sources/UI/SwiftUI Components/TopIntro.swift create mode 100644 Shared/Resources/SharedAssets.xcassets/Colors/Black800.colorset/Contents.json diff --git a/DashSyncCurrentCommit b/DashSyncCurrentCommit index c2319bf8a..063befb65 100644 --- a/DashSyncCurrentCommit +++ b/DashSyncCurrentCommit @@ -1 +1 @@ -e272a368fa8b5a3fcaa637f5631352980dcc557f +5e4545e0fefb2b2aa98c2209394898ea6cfcd43b diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index 399b0070f..c41c8aff8 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -318,6 +318,7 @@ 2AFF01DB243F4559003718DC /* DWDPRegistrationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFF01DA243F4559003718DC /* DWDPRegistrationStatus.m */; }; 3198E8048E48954CD87BAD11 /* libPods-DashWalletTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */; }; 3A0C6A2A57DFF02865E36200 /* ImportPrivateKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */; }; + 429281E6D1C2A8F6E6F5E1BF /* ExploreMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E885671E3CD719B868599531 /* ExploreMenuScreen.swift */; }; 470617D6299A671900DCC667 /* CrowdNodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470617D5299A671900DCC667 /* CrowdNodeCell.swift */; }; 47081197298CF20C003FCA3D /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47081196298CF20B003FCA3D /* Transaction.swift */; }; 4708119F2990F56F003FCA3D /* TransactionDataItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4708119E2990F56F003FCA3D /* TransactionDataItem.swift */; }; @@ -355,6 +356,8 @@ 474C7215298A1FCF00475CA6 /* TxDetailActionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 474C7214298A1FCF00475CA6 /* TxDetailActionCell.xib */; }; 474C7218298A422500475CA6 /* TransactionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474C7217298A422400475CA6 /* TransactionItemView.swift */; }; 4751136C28D9A3DB00223B77 /* BuySellPortalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751136B28D9A3DB00223B77 /* BuySellPortalViewController.swift */; }; + 8DF3D24EE3B247B79AE9CAB5 /* BuySellPortalScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B94B3697D7742BFA991B5CC /* BuySellPortalScreen.swift */; }; + E5767AEAEF7C4921886E915A /* BuySellPortalScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B94B3697D7742BFA991B5CC /* BuySellPortalScreen.swift */; }; 4751136F28D9B50E00223B77 /* CoinbaseInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751136E28D9B50E00223B77 /* CoinbaseInfoViewController.swift */; }; 4751137528DAF28800223B77 /* UIAssembly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751137428DAF28800223B77 /* UIAssembly.swift */; }; 4751CAC0296EFD2900F63AC4 /* AccountListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CABF296EFD2900F63AC4 /* AccountListController.swift */; }; @@ -570,16 +573,16 @@ 754119E01CDA93FF0042DC51 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAE12BE61B2DEE7F00895CC5 /* NotificationCenter.framework */; }; 754495DD2AE91B6300492817 /* GroupedRequestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754495DC2AE91B6300492817 /* GroupedRequestCell.swift */; }; 754495DF2AE91D3500492817 /* UsernameRequestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754495DE2AE91D3500492817 /* UsernameRequestCell.swift */; }; - 754565C82DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */; }; - 754565CA2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */; }; - 754565CB2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */; }; - 754565CC2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */; }; - 754565CE2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */; }; - 754565CF2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */; }; + 754565C82DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */; }; + 754565CA2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */; }; + 754565CB2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */; }; + 754565CC2DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */; }; + 754565CE2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */; }; + 754565CF2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */; }; 754565D12DABA5F300DA4E8E /* MerchantTypesDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */; }; 754565D22DABA5F300DA4E8E /* MerchantTypesDialog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */; }; - 7545ED532DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */; }; - 7545ED542DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */; }; + 7545ED532DA91A2F0075F45C /* CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* CTXConstants.swift */; }; + 7545ED542DA91A2F0075F45C /* CTXConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED522DA91A2F0075F45C /* CTXConstants.swift */; }; 7545ED572DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */; }; 7545ED582DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */; }; 7545ED5D2DA91F590075F45C /* DashSpendTermsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */; }; @@ -625,6 +628,8 @@ 7566F4842BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */; }; 7566F48A2BB6CAF2005238D2 /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4892BB6CAF2005238D2 /* MenuItem.swift */; }; 7566F48B2BB6CAF2005238D2 /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4892BB6CAF2005238D2 /* MenuItem.swift */; }; + 00C5FE923D8D4B13A805B0FB /* TopIntro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10F1F64BEA504250AC161D34 /* TopIntro.swift */; }; + F8208C62742D4746B1D29A79 /* TopIntro.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10F1F64BEA504250AC161D34 /* TopIntro.swift */; }; 7569D6832DE6DA6800768BFF /* ExploreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */; }; 7569D6842DE6DA6800768BFF /* ExploreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */; }; 7569D6862DE6DB2200768BFF /* ExploreHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7569D6852DE6DB1B00768BFF /* ExploreHeaderView.swift */; }; @@ -682,8 +687,8 @@ 759C8FA02B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; - 75A2F3032DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */; }; - 75A2F3042DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */; }; + 75A2F3032DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */; }; + 75A2F3042DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */; }; 75A8C1652AE5726B0042256E /* UsernameRequestsDAO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */; }; 75A8C1672AE5734A0042256E /* UsernameRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1662AE5734A0042256E /* UsernameRequest.swift */; }; 75A8C1692AE6A1AC0042256E /* VotingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A8C1682AE6A1AC0042256E /* VotingViewModel.swift */; }; @@ -698,6 +703,10 @@ 75AA33D82BFB4A5A00F12465 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33D72BFB4A5A00F12465 /* Extensions.swift */; }; 75AA33D92BFB4A5A00F12465 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75AA33D72BFB4A5A00F12465 /* Extensions.swift */; }; 75AE5A7F2A87C363006CD4BA /* DWConfirmUsernameContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C943B5712A40ED4200AF23C5 /* DWConfirmUsernameContentView.xib */; }; + 75B3C1A22E36100100CAFE02 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; + 75B3C1A32E36100100CAFE03 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; + 75B3C1B22E36100100CAFE05 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; + 75B3C1B32E36100100CAFE06 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; 75BDE7AC2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; 75BDE7AD2BF3287400556791 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75BDE7AB2BF3287400556791 /* Toast.swift */; }; 75C1F0452AE26AC0006929CA /* CoinJoinLevelsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */; }; @@ -779,15 +788,19 @@ 75FFD6C72BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; 75FFD6C82BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FFD6C62BF495800032879E /* HomeViewController+Shortcuts.swift */; }; 893AE6F535290DD1CEE89219 /* ImportPrivateKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D53435DCAF024BC82E0247F3 /* ImportPrivateKeySheet.swift */; }; + 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; 91F0B8B92F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; 91F0B8BA2F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */; }; + A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; A30AF4A11189A2EFB04EB535 /* libPods-WatchApp Extension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C22BC09CF6178544B2300A4 /* libPods-WatchApp Extension.a */; }; AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; - AA0000042DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */; }; - AA0000052DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */; }; + AA0000042DUMMYID001234567 /* GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* GiftCardProvider.swift */; }; + AA0000052DUMMYID001234567 /* GiftCardProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000062DUMMYID001234567 /* GiftCardProvider.swift */; }; AE99C52D130994B720927E8F /* libPods-dashpay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6E23A2DA41FE189E773C705 /* libPods-dashpay.a */; }; AEAE60406265A73AFD573FD1 /* libPods-dashwallet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3BA4BE42F52588AED15BF7E /* libPods-dashwallet.a */; }; + B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; + B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; B453B34B871E4125607DACDC /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6615F1246B5935365B05BD /* NavigationBar.swift */; }; BA4A72671BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */; }; BA54D3CE1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */; }; @@ -804,17 +817,18 @@ BAA6E3F11BD5CA5900773205 /* BRAWReceiveMoneyInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA6E3F01BD5CA5900773205 /* BRAWReceiveMoneyInterfaceController.swift */; }; BAE12BF21B2DEE7F00895CC5 /* TodayExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = BAE12BE51B2DEE7F00895CC5 /* TodayExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; BAE12C061B2DEEF700895CC5 /* DWTodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BAE12C051B2DEEF700895CC5 /* DWTodayViewController.m */; }; - BB0000012DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */; }; - BB0000022DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */; }; - BB0000032DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */; }; - BB0000042DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */; }; - BB0000052DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */; }; - BB0000062DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */; }; + BB0000012DUMMYID001234567 /* DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpendError.swift */; }; + BB0000022DUMMYID001234567 /* DashSpendError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000072DUMMYID001234567 /* DashSpendError.swift */; }; + BB0000032DUMMYID001234567 /* DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpendRepository.swift */; }; + BB0000042DUMMYID001234567 /* DashSpendRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000082DUMMYID001234567 /* DashSpendRepository.swift */; }; + BB0000052DUMMYID001234567 /* DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpendRepositoryFactory.swift */; }; + BB0000062DUMMYID001234567 /* DashSpendRepositoryFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB0000092DUMMYID001234567 /* DashSpendRepositoryFactory.swift */; }; C3DAD268246AA6F10001624F /* DWScreenshotWarningViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD267246AA6F10001624F /* DWScreenshotWarningViewController.m */; }; C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */; }; + C5D7E9F1A2B3C4D5E6F70012 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; + C5D7E9F1A2B3C4D5E6F70013 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */; }; C909615129F158D700002D82 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; - A0795C9369A1402498C00F69 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C909615329F28E3700002D82 /* DerivationPathKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */; }; C909615529F297DD00002D82 /* DerivationPathKeysCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */; }; C909615929F29C9200002D82 /* KeysOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615829F29C9200002D82 /* KeysOverviewCell.swift */; }; @@ -823,8 +837,6 @@ C917024129D462C6008C034D /* PayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C917024029D462C6008C034D /* PayViewController.swift */; }; C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */; }; C91E91AE29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; - B3A1F2C4D5E6078901234568 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; - C5D7E9F1A2B3C4D5E6F70012 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF222A5C7D93002FAB75 /* ConfirmPaymentViewController.swift */; }; C93078492A6AD4FC00906E4B /* UpholdConfirmViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF2E2A5D5F6B002FAB75 /* UpholdConfirmViewController.swift */; }; C930784A2A6AD52400906E4B /* UpholdConfirmTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C956AF302A5D601C002FAB75 /* UpholdConfirmTransferModel.swift */; }; @@ -1019,8 +1031,6 @@ C94F5E8829D3E7E30034FD57 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C94F5E8729D3E7E30034FD57 /* GoogleService-Info.plist */; }; C94F5E8A29D3FCCF0034FD57 /* ShortcutAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8929D3FCCF0034FD57 /* ShortcutAction.swift */; }; C94F5E8E29D404850034FD57 /* ShortcutCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8D29D404850034FD57 /* ShortcutCell.swift */; }; - 75B3C1A22E36100100CAFE02 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; - 75B3C1B22E36100100CAFE05 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; C94F5E9029D4060A0034FD57 /* ShortcutsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8F29D4060A0034FD57 /* ShortcutsView.swift */; }; C956AF0C2A5B591A002FAB75 /* DashInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94D98202A4CC78F00F3BEE1 /* DashInputField.swift */; }; C956AF0D2A5B592E002FAB75 /* TappableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9829CDD2A562822007132E4 /* TappableLabel.swift */; }; @@ -1103,8 +1113,6 @@ C9D2C6D42A320AA000D15901 /* DWRecoverTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFA2305464C00C475EB /* DWRecoverTextView.m */; }; C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C314287EA11900B4BD48 /* TransactionMetadata.swift */; }; C9D2C6D62A320AA000D15901 /* ExtendedPublicKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */; }; - B3A1F2C4D5E6078901234569 /* ExtendedPublicKeySheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */; }; - C5D7E9F1A2B3C4D5E6F70013 /* CSVExportSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */; }; C9D2C6D82A320AA000D15901 /* AtmListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDD28C1305E00490F5E /* AtmListViewController.swift */; }; C9D2C6D92A320AA000D15901 /* TxDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5145F2848F75B005A8E3E /* TxDetailViewController.swift */; }; C9D2C6DA2A320AA000D15901 /* NSAttributedString+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E9299E5396006903F1 /* NSAttributedString+Builder.swift */; }; @@ -1151,7 +1159,7 @@ C9D2C70C2A320AA000D15901 /* DWUpholdLogoutTutorialViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE652230FF4600956D5F /* DWUpholdLogoutTutorialViewController.m */; }; C9D2C70D2A320AA000D15901 /* CBAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF46A429654E190067B6EE /* CBAccount.swift */; }; C9D2C70E2A320AA000D15901 /* Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AF180429070B720025803E /* Types.swift */; }; - C9D2C70F2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C70F2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7112A320AA000D15901 /* Coinbase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4774DCDA28F3FA9C008CF87D /* Coinbase.swift */; }; C9D2C7122A320AA000D15901 /* SyncModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F452072A11F28600825057 /* SyncModel.swift */; }; C9D2C7132A320AA000D15901 /* ReceiveContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FAA29DC1098001BC549 /* ReceiveContentView.swift */; }; @@ -1171,7 +1179,7 @@ C9D2C7242A320AA000D15901 /* WKWebView+CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D1780298BA9AF005BEB30 /* WKWebView+CrowdNode.swift */; }; C9D2C7252A320AA000D15901 /* SyncingActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3AFE29350929008D58DC /* SyncingActivityMonitor.swift */; }; C9D2C7262A320AA000D15901 /* EmptyUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FAF29DC27F4001BC549 /* EmptyUIView.swift */; }; - C9D2C7272A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7272A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7282A320AA000D15901 /* DWQRScanModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AC92C891FEB0B8B008CAEE0 /* DWQRScanModel.m */; }; C9D2C72A2A320AA000D15901 /* SyncView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451F62A0CAE1300825057 /* SyncView.swift */; }; C9D2C72B2A320AA000D15901 /* SuccessfulOperationStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47522F4F2927CB9000EE143E /* SuccessfulOperationStatusViewController.swift */; }; @@ -1202,7 +1210,7 @@ C9D2C7492A320AA000D15901 /* DWCurrencyObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AA87CF926E5681100F0CEA6 /* DWCurrencyObject.m */; }; C9D2C74A2A320AA000D15901 /* ShortcutsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8F29D4060A0034FD57 /* ShortcutsView.swift */; }; C9D2C74B2A320AA000D15901 /* DWFormSectionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE3E2230FF4600956D5F /* DWFormSectionModel.m */; }; - C9D2C74C2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C74C2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C74D2A320AA000D15901 /* CoinbasePlaceBuyOrderResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFA628C896BC000427E7 /* CoinbasePlaceBuyOrderResponse.swift */; }; C9D2C74E2A320AA000D15901 /* ExploreMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDC28C1305E00490F5E /* ExploreMapView.swift */; }; C9D2C74F2A320AA000D15901 /* DWSeedPhraseRow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE9322DD078600C99324 /* DWSeedPhraseRow.m */; }; @@ -1226,7 +1234,7 @@ C9D2C7642A320AA000D15901 /* BasePageSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F2C67C28602D4F00C2B774 /* BasePageSheetViewController.swift */; }; C9D2C7662A320AA000D15901 /* CrowdNodeRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0329051F9900D406C1 /* CrowdNodeRequest.swift */; }; C9D2C7672A320AA000D15901 /* CoinbaseExchangeRateResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFAF28C896BC000427E7 /* CoinbaseExchangeRateResponse.swift */; }; - C9D2C7692A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7692A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C76A2A320AA000D15901 /* CrowdNodePortalItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117728A2297A7D24006F1553 /* CrowdNodePortalItem.swift */; }; C9D2C76B2A320AA000D15901 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B528FE75A700028A8D /* BaseViewController.swift */; }; C9D2C76C2A320AA000D15901 /* AccountListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CABF296EFD2900F63AC4 /* AccountListController.swift */; }; @@ -1276,12 +1284,12 @@ C9D2C7A52A320AA000D15901 /* DWModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69C523142AA4001B8C90 /* DWModalPresentationController.m */; }; C9D2C7A72A320AA000D15901 /* ActionButtonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B328FDCF7800028A8D /* ActionButtonViewController.swift */; }; C9D2C7A82A320AA000D15901 /* BuySellServiceItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4774DCE428F4668B008CF87D /* BuySellServiceItemCell.swift */; }; - C9D2C7AA2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7AA2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7AB2A320AA000D15901 /* DWBaseFormTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BC82347E0D700451078 /* DWBaseFormTableViewCell.m */; }; C9D2C7AC2A320AA000D15901 /* AccountCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CAC6296FAEBB00F63AC4 /* AccountCell.swift */; }; C9D2C7AD2A320AA000D15901 /* DWTransactionListDataProviderStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913EA723A79AD2006A2A59 /* DWTransactionListDataProviderStub.m */; }; C9D2C7B12A320AA000D15901 /* CoinbaseBaseIDForCurrencyResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFA028C896BC000427E7 /* CoinbaseBaseIDForCurrencyResponse.swift */; }; - C9D2C7B22A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7B22A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7B32A320AA000D15901 /* SpecifyAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AC8412297822E000BD1B49 /* SpecifyAmountViewController.swift */; }; C9D2C7B42A320AA000D15901 /* DWUpholdTransactionObject+DWView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFCB9C323BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m */; }; C9D2C7B62A320AA000D15901 /* CrowdNodeDepositTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114CFECF296469D9005F421B /* CrowdNodeDepositTx.swift */; }; @@ -1292,14 +1300,14 @@ C9D2C7BD2A320AA000D15901 /* DWSharedUIConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E2822FB1C5D00FF8653 /* DWSharedUIConstants.m */; }; C9D2C7BE2A320AA000D15901 /* BRAppleWatchTransactionData.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A858A0E237EE89B0097A7B5 /* BRAppleWatchTransactionData.m */; }; C9D2C7C02A320AA000D15901 /* HomeHeaderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F4520A2A1209D100825057 /* HomeHeaderModel.swift */; }; - C9D2C7C22A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7C22A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7C32A320AA000D15901 /* DWDPRegistrationStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFF01DA243F4559003718DC /* DWDPRegistrationStatus.m */; }; C9D2C7C42A320AA000D15901 /* CurrencyExchanger_Objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 472D13EC299E6579006903F1 /* CurrencyExchanger_Objc.m */; }; C9D2C7C62A320AA000D15901 /* Tools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B7290A92CD00E030C8 /* Tools.swift */; }; C9D2C7C72A320AA000D15901 /* BuySellPortalModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478A2C7028DC554200AD1420 /* BuySellPortalModel.swift */; }; C9D2C7C92A320AA000D15901 /* BuyDashViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478C98252942DC2700FAA0F0 /* BuyDashViewController.swift */; }; C9D2C7CA2A320AA000D15901 /* DWModalDismissalAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69CF23143435001B8C90 /* DWModalDismissalAnimation.m */; }; - C9D2C7CB2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C7CB2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C7CD2A320AA000D15901 /* UIViewController+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDEECD294A3CF2008AE06D /* UIViewController+DashWallet.swift */; }; C9D2C7CE2A320AA000D15901 /* CrowdNodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470617D5299A671900DCC667 /* CrowdNodeCell.swift */; }; C9D2C7CF2A320AA000D15901 /* MerchantListLocationOffCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD128C1305E00490F5E /* MerchantListLocationOffCell.swift */; }; @@ -1393,12 +1401,10 @@ C9D2C8472A320AA000D15901 /* DWBaseTransactionListDataProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913EAD23A7AC86006A2A59 /* DWBaseTransactionListDataProvider.m */; }; C9D2C8482A320AA000D15901 /* CoinbaseTransactionsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFA828C896BC000427E7 /* CoinbaseTransactionsRequest.swift */; }; C9D2C8492A320AA000D15901 /* DWAppRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9CEBAC22E1DA4000A50237 /* DWAppRootViewController.m */; }; - C9D2C84A2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C84A2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C84B2A320AA000D15901 /* UITableView+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F005FE297164600029EB10 /* UITableView+DashWallet.swift */; }; C9D2C84C2A320AA000D15901 /* TransferAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B128FDC72700028A8D /* TransferAmountViewController.swift */; }; C9D2C84D2A320AA000D15901 /* ShortcutCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C94F5E8D29D404850034FD57 /* ShortcutCell.swift */; }; - 75B3C1A32E36100100CAFE03 /* ShortcutSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */; }; - 75B3C1B32E36100100CAFE06 /* ShortcutCustomizeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */; }; C9D2C84F2A320AA000D15901 /* UIColor+DWStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44312022CCA2A0009BAF7F /* UIColor+DWStyle.m */; }; C9D2C8502A320AA000D15901 /* DWEnvironment.m in Sources */ = {isa = PBXBuildFile; fileRef = FBEF3AF021823CD800917AB6 /* DWEnvironment.m */; }; C9D2C8512A320AA000D15901 /* AtmItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BC928C1305E00490F5E /* AtmItemCell.swift */; }; @@ -1418,14 +1424,13 @@ C9D2C8622A320AA000D15901 /* BackupInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FB129DD5141001BC549 /* BackupInfoViewController.swift */; }; C9D2C8652A320AA000D15901 /* DWCaptureSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BAD234770C900451078 /* DWCaptureSessionManager.m */; }; C9D2C8662A320AA000D15901 /* DWDataMigrationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A11F59E2194BD6200E7B563 /* DWDataMigrationManager.m */; }; - C9D2C86A2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C86A2A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C86B2A320AA000D15901 /* AmountPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E5299E3C81006903F1 /* AmountPreviewView.swift */; }; C9D2C86C2A320AA000D15901 /* ModalNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4759D513292FEFFB002F20DC /* ModalNavigationController.swift */; }; C9D2C86E2A320AA000D15901 /* TransferAmountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A50F3A2913BC0900C70123 /* TransferAmountModel.swift */; }; C9D2C86F2A320AA000D15901 /* NavigationBarAppearanceCustomizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4730586F295AD62B004641DA /* NavigationBarAppearanceCustomizable.swift */; }; C9D2C8702A320AA000D15901 /* AmountObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B5290A901200E030C8 /* AmountObject.swift */; }; C9D2C8712A320AA000D15901 /* DerivationPathKeysViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */; }; - 8A7607606A594C6E99A2FAC7 /* DerivationPathKeysView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */; }; C9D2C8722A320AA000D15901 /* DSTransaction+DashWallet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4709C31D2880247C00B4BD48 /* DSTransaction+DashWallet.m */; }; C9D2C8742A320AA000D15901 /* DWLocalCurrencyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7C1C234B771400451078 /* DWLocalCurrencyModel.m */; }; C9D2C8762A320AA000D15901 /* DWUpholdMainnetConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8ACEB522E0502100EE5035 /* DWUpholdMainnetConstants.m */; }; @@ -1452,7 +1457,7 @@ C9D2C8952A320AA000D15901 /* ConvertCryptoOrderPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CACF2970224D00F63AC4 /* ConvertCryptoOrderPreviewModel.swift */; }; C9D2C8972A320AA000D15901 /* RatesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A2E3A82972B15F0032A63B /* RatesProvider.swift */; }; C9D2C8982A320AA000D15901 /* CBAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A2A2E8293E612900938DB7 /* CBAuth.swift */; }; - C9D2C8992A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C8992A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C89A2A320AA000D15901 /* CoinbaseCreateAddressesRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFAE28C896BC000427E7 /* CoinbaseCreateAddressesRequest.swift */; }; C9D2C89B2A320AA000D15901 /* DWImportWalletInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A10EB342358996700C38B61 /* DWImportWalletInfoViewController.m */; }; C9D2C89D2A320AA000D15901 /* SyncingAlertContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451ED2A0BF1F500825057 /* SyncingAlertContentView.swift */; }; @@ -1503,7 +1508,7 @@ C9D2C8DD2A320AA000D15901 /* AtmDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD528C1305E00490F5E /* AtmDataProvider.swift */; }; C9D2C8DE2A320AA000D15901 /* GettingStartedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110C67942921147F006B580C /* GettingStartedViewController.swift */; }; C9D2C8DF2A320AA000D15901 /* NetworkUnavailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477A963D292CD27D0013605B /* NetworkUnavailableView.swift */; }; - C9D2C8E02A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C9D2C8E02A320AA000D15901 /* BuildFile in Sources */ = {isa = PBXBuildFile; }; C9D2C8E12A320AA000D15901 /* DWLockScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A63004D2328F37C00827825 /* DWLockScreenViewController.m */; }; C9D2C8E22A320AA000D15901 /* UpholdTransferViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4789D2302981069700BAFEFA /* UpholdTransferViewController.swift */; }; C9D2C8E32A320AA000D15901 /* DWVerifySeedPhraseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE8322DC9B5D00C99324 /* DWVerifySeedPhraseViewController.m */; }; @@ -1562,7 +1567,7 @@ C9D2C9272A320AA000D15901 /* SyncView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A4E531922EA382B00E5168A /* SyncView.xib */; }; C9D2C9292A320AA000D15901 /* BackupInfoItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C9F42FB529DD8702001BC549 /* BackupInfoItemView.xib */; }; C9D2C92A2A320AA000D15901 /* explore.db in Resources */ = {isa = PBXBuildFile; fileRef = 47AE8BAF28BFF28400490F5E /* explore.db */; }; - C9D2C92B2A320AA000D15901 /* (null) in Resources */ = {isa = PBXBuildFile; }; + C9D2C92B2A320AA000D15901 /* BuildFile in Resources */ = {isa = PBXBuildFile; }; C9D2C92C2A320AA000D15901 /* Coinbase.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0F3693812919A70B007F4E91 /* Coinbase.storyboard */; }; C9D2C92E2A320AA000D15901 /* ImportWalletInfo.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2A10EB3D2358BDA500C38B61 /* ImportWalletInfo.storyboard */; }; C9D2C92F2A320AA000D15901 /* ReceiveContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C9F42FAC29DC115A001BC549 /* ReceiveContentView.xib */; }; @@ -1626,12 +1631,13 @@ CC0000192DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; CC0000202DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; D0B1968E57F8D7B118C22CED /* libPods-DashWalletScreenshotsUITests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C20BCC772DF4075F8EADAE0 /* libPods-DashWalletScreenshotsUITests.a */; }; - DE3A167A235B79D705C0A962 /* (null) in Frameworks */ = {isa = PBXBuildFile; }; + DE3A167A235B79D705C0A962 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; }; EE0000012DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */; }; EE0000022DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */; }; EE0000042DUMMYID001234567 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000052DUMMYID001234567 /* PercentageFormatter.swift */; }; EE0000062DUMMYID001234567 /* PercentageFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0000052DUMMYID001234567 /* PercentageFormatter.swift */; }; EE5F3D5C458E92B69D14BFD8 /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6615F1246B5935365B05BD /* NavigationBar.swift */; }; + EEEF8B708189DE9500235280 /* ExploreMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E885671E3CD719B868599531 /* ExploreMenuScreen.swift */; }; FB248B5D1F73803100405AE0 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB248B5C1F73803100405AE0 /* UserNotifications.framework */; }; FB248B631F79BB7C00405AE0 /* SafariServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB248B621F79BB7C00405AE0 /* SafariServices.framework */; }; FB2E5537218BA161003A1B7C /* DWVersionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FB2E5536218BA161003A1B7C /* DWVersionManager.m */; }; @@ -1645,8 +1651,8 @@ FBF3F42D1E42B00C00C7248E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F42C1E42B00C00C7248E /* UIKit.framework */; }; FBF3F42F1E42B01E00C7248E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F42E1E42B01E00C7248E /* CoreGraphics.framework */; }; FBF3F4311E42B02800C7248E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF3F4301E42B02800C7248E /* ImageIO.framework */; }; - FF0000012DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */; }; - FF0000022DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */; }; + FF0000012DUMMYID001234567 /* PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* PiggyCardsConstants.swift */; }; + FF0000022DUMMYID001234567 /* PiggyCardsConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000042DUMMYID001234567 /* PiggyCardsConstants.swift */; }; FF0000052DUMMYID001234567 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */; }; FF0000072DUMMYID001234567 /* PiggyCardsModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */; }; FF0000082DUMMYID001234567 /* BarcodeScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF0000092DUMMYID001234567 /* BarcodeScanner.swift */; }; @@ -2307,6 +2313,7 @@ 474C7214298A1FCF00475CA6 /* TxDetailActionCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TxDetailActionCell.xib; sourceTree = ""; }; 474C7217298A422400475CA6 /* TransactionItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionItemView.swift; sourceTree = ""; }; 4751136B28D9A3DB00223B77 /* BuySellPortalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuySellPortalViewController.swift; sourceTree = ""; }; + 7B94B3697D7742BFA991B5CC /* BuySellPortalScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuySellPortalScreen.swift; sourceTree = ""; }; 4751136E28D9B50E00223B77 /* CoinbaseInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinbaseInfoViewController.swift; sourceTree = ""; }; 4751137428DAF28800223B77 /* UIAssembly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIAssembly.swift; sourceTree = ""; }; 4751CABF296EFD2900F63AC4 /* AccountListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountListController.swift; sourceTree = ""; }; @@ -2512,11 +2519,11 @@ 753FDBED2AECF52B0005EEC3 /* UsernameVoting.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UsernameVoting.storyboard; sourceTree = ""; }; 754495DC2AE91B6300492817 /* GroupedRequestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupedRequestCell.swift; sourceTree = ""; }; 754495DE2AE91D3500492817 /* UsernameRequestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestCell.swift; sourceTree = ""; }; - 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendAPI.swift; sourceTree = ""; }; - 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendEndpoint.swift; sourceTree = ""; }; - 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendRepository.swift; sourceTree = ""; }; + 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendAPI.swift; sourceTree = ""; }; + 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendEndpoint.swift; sourceTree = ""; }; + 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendRepository.swift; sourceTree = ""; }; 754565D02DABA5EB00DA4E8E /* MerchantTypesDialog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MerchantTypesDialog.swift; sourceTree = ""; }; - 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTXConstants.swift; sourceTree = ""; }; + 7545ED522DA91A2F0075F45C /* CTXConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTXConstants.swift; sourceTree = ""; }; 7545ED562DA91AEA0075F45C /* DashSpendUserAuthViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendUserAuthViewModel.swift; sourceTree = ""; }; 7545ED5C2DA91F590075F45C /* DashSpendTermsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpendTermsScreen.swift; sourceTree = ""; }; 7545ED5F2DA91FC60075F45C /* NumericKeyboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumericKeyboardView.swift; sourceTree = ""; }; @@ -2544,6 +2551,7 @@ 756557B42CE84FF70060348D /* FeeInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeeInfo.swift; sourceTree = ""; }; 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuScreen.swift; sourceTree = ""; }; 7566F4892BB6CAF2005238D2 /* MenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuItem.swift; sourceTree = ""; }; + 10F1F64BEA504250AC161D34 /* TopIntro.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopIntro.swift; sourceTree = ""; }; 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreViewController.swift; sourceTree = ""; }; 7569D6852DE6DB1B00768BFF /* ExploreHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreHeaderView.swift; sourceTree = ""; }; 7569D6882DE6DB6700768BFF /* ExploreContentsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreContentsView.swift; sourceTree = ""; }; @@ -2583,7 +2591,7 @@ 759AFDE22CC67E89007072D2 /* VotingInfoScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingInfoScreen.swift; sourceTree = ""; }; 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeAPYView.swift; sourceTree = ""; }; 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeUtils.swift; sourceTree = ""; }; - 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendTokenService.swift; sourceTree = ""; }; + 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendTokenService.swift; sourceTree = ""; }; 75A8C1632AE5725C0042256E /* UsernameRequestsDAO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequestsDAO.swift; sourceTree = ""; }; 75A8C1662AE5734A0042256E /* UsernameRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRequest.swift; sourceTree = ""; }; 75A8C1682AE6A1AC0042256E /* VotingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingViewModel.swift; sourceTree = ""; }; @@ -2592,6 +2600,8 @@ 75AA33D12BF9E18E00F12465 /* Color+DWStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+DWStyle.swift"; sourceTree = ""; }; 75AA33D42BF9E1D400F12465 /* Font+DWStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+DWStyle.swift"; sourceTree = ""; }; 75AA33D72BFB4A5A00F12465 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutSelectionView.swift; sourceTree = ""; }; + 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCustomizeBannerView.swift; sourceTree = ""; }; 75BDE7AB2BF3287400556791 /* Toast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = ""; }; 75C1F0442AE26AC0006929CA /* CoinJoinLevelsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinLevelsViewModel.swift; sourceTree = ""; }; 75C1F09D2AFF675400FE675E /* EnterVotingKeyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnterVotingKeyViewController.swift; sourceTree = ""; }; @@ -2656,12 +2666,14 @@ 8391BA0D088FF516D63DE9A1 /* Pods-dashpay.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testflight.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testflight.xcconfig"; sourceTree = ""; }; 86CC430C535DAEBF900E5914 /* Pods-dashwallet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.debug.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.debug.xcconfig"; sourceTree = ""; }; 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewView.swift; sourceTree = ""; }; + 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysView.swift; sourceTree = ""; }; A47B6DF71195E41A5B7B5F99 /* Pods-dashpay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.debug.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.debug.xcconfig"; sourceTree = ""; }; AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddProviderToGiftCardsTable.swift; sourceTree = ""; }; - AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/GiftCardProvider.swift; sourceTree = ""; }; + AA0000062DUMMYID001234567 /* GiftCardProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/GiftCardProvider.swift; sourceTree = ""; }; AD6615F1246B5935365B05BD /* NavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBar.swift; sourceTree = ""; }; AF918A810315A7BE335BFFA6 /* Pods-WatchApp.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp.testnet.xcconfig"; path = "Target Support Files/Pods-WatchApp/Pods-WatchApp.testnet.xcconfig"; sourceTree = ""; }; B1A681489B9516DC10084A61 /* Pods-DashWalletScreenshotsUITests.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testflight.xcconfig"; sourceTree = ""; }; + B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; BA4A72661BE11AFA00E39C01 /* BRAWWeakTimerTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BRAWWeakTimerTarget.swift; sourceTree = ""; }; BA4EECDF1B351AE200D443A3 /* DWAppGroupConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWAppGroupConstants.h; sourceTree = ""; }; BA54D3CD1B2EA74000C9CB28 /* TodayExtensionAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = TodayExtensionAssets.xcassets; sourceTree = ""; }; @@ -2684,9 +2696,9 @@ BAE12BE61B2DEE7F00895CC5 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; BAE12BEA1B2DEE7F00895CC5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BAE12C051B2DEEF700895CC5 /* DWTodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWTodayViewController.m; sourceTree = ""; }; - BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendError.swift; sourceTree = ""; }; - BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepository.swift; sourceTree = ""; }; - BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepositoryFactory.swift; sourceTree = ""; }; + BB0000072DUMMYID001234567 /* DashSpendError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendError.swift; sourceTree = ""; }; + BB0000082DUMMYID001234567 /* DashSpendRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepository.swift; sourceTree = ""; }; + BB0000092DUMMYID001234567 /* DashSpendRepositoryFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/DashSpendRepositoryFactory.swift; sourceTree = ""; }; BC46CEE26088DC2B21D22315 /* Pods-DashWalletScreenshotsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.debug.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.debug.xcconfig"; sourceTree = ""; }; C09FD41E863456F8BF96B2DB /* Pods-dashwallet.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashwallet.testnet.xcconfig"; path = "Target Support Files/Pods-dashwallet/Pods-dashwallet.testnet.xcconfig"; sourceTree = ""; }; C1AFBC4E154DF42D982613E4 /* Pods-DashWalletScreenshotsUITests.testnet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; path = "Target Support Files/Pods-DashWalletScreenshotsUITests/Pods-DashWalletScreenshotsUITests.testnet.xcconfig"; sourceTree = ""; }; @@ -2695,9 +2707,9 @@ C3DAD2CD247585C10001624F /* NSPredicate+DWFullTextSearch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+DWFullTextSearch.h"; sourceTree = ""; }; C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSPredicate+DWFullTextSearch.m"; sourceTree = ""; }; C56BFBBABD008D06578BDD9C /* libPods-DashWalletTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DashWalletTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVExportSheet.swift; sourceTree = ""; }; C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletKeysOverviewModel.swift; sourceTree = ""; }; C909615029F158D700002D82 /* DerivationPathKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysViewController.swift; sourceTree = ""; }; - 9EC1F4DB87C442BEABDF0DB2 /* DerivationPathKeysView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysView.swift; sourceTree = ""; }; C909615229F28E3700002D82 /* DerivationPathKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysModel.swift; sourceTree = ""; }; C909615429F297DD00002D82 /* DerivationPathKeysCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DerivationPathKeysCell.swift; sourceTree = ""; }; C909615829F29C9200002D82 /* KeysOverviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewCell.swift; sourceTree = ""; }; @@ -2706,8 +2718,6 @@ C917024029D462C6008C034D /* PayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayViewController.swift; sourceTree = ""; }; C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysModel.swift; sourceTree = ""; }; C91E91AD29FFC8A1003E7883 /* ExtendedPublicKeysViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeysViewController.swift; sourceTree = ""; }; - B3A1F2C4D5E6078901234567 /* ExtendedPublicKeySheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtendedPublicKeySheet.swift; sourceTree = ""; }; - C5D7E9F1A2B3C4D5E6F70011 /* CSVExportSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSVExportSheet.swift; sourceTree = ""; }; C943B2BA2A408CEC00AF23C5 /* DWUpdatingUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWUpdatingUserProfileView.h; sourceTree = ""; }; C943B2BB2A408CEC00AF23C5 /* DWCurrentUserProfileView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWCurrentUserProfileView.h; sourceTree = ""; }; C943B2BC2A408CEC00AF23C5 /* DWErrorUpdatingUserProfileView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWErrorUpdatingUserProfileView.m; sourceTree = ""; }; @@ -3091,8 +3101,6 @@ C94F5E8729D3E7E30034FD57 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; C94F5E8929D3FCCF0034FD57 /* ShortcutAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutAction.swift; sourceTree = ""; }; C94F5E8D29D404850034FD57 /* ShortcutCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCell.swift; sourceTree = ""; }; - 75B3C1A12E36100100CAFE01 /* ShortcutSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutSelectionView.swift; sourceTree = ""; }; - 75B3C1B12E36100100CAFE04 /* ShortcutCustomizeBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutCustomizeBannerView.swift; sourceTree = ""; }; C94F5E8F29D4060A0034FD57 /* ShortcutsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutsView.swift; sourceTree = ""; }; C956AF152A5C3301002FAB75 /* DWPressableButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DWPressableButton.h; sourceTree = ""; }; C956AF162A5C3302002FAB75 /* DWPressableButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWPressableButton.m; sourceTree = ""; }; @@ -3157,6 +3165,7 @@ D8BD81810F2B0C11C86E7A5E /* Pods-DashWalletTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DashWalletTests.release.xcconfig"; path = "Target Support Files/Pods-DashWalletTests/Pods-DashWalletTests.release.xcconfig"; sourceTree = ""; }; D96AAF71E3E67F7AD309BCC4 /* Pods-TodayExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.release.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.release.xcconfig"; sourceTree = ""; }; E57EEDA37189E949FBAAA627 /* Pods-WatchApp Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.release.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.release.xcconfig"; sourceTree = ""; }; + E885671E3CD719B868599531 /* ExploreMenuScreen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExploreMenuScreen.swift; sourceTree = ""; }; EDE78DB35CE393ADB4F3C5DD /* Pods-TodayExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TodayExtension.debug.xcconfig"; path = "Target Support Files/Pods-TodayExtension/Pods-TodayExtension.debug.xcconfig"; sourceTree = ""; }; EE0000032DUMMYID001234567 /* POIDetailsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = POIDetailsViewModel.swift; sourceTree = ""; }; EE0000052DUMMYID001234567 /* PercentageFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PercentageFormatter.swift; sourceTree = ""; }; @@ -3201,7 +3210,7 @@ FBF3F42E1E42B01E00C7248E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; FBF3F4301E42B02800C7248E /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; FC016B99DFFB0CBAC3D19290 /* Pods-WatchApp Extension.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.testflight.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.testflight.xcconfig"; sourceTree = ""; }; - FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/PiggyCardsConstants.swift; sourceTree = ""; }; + FF0000042DUMMYID001234567 /* PiggyCardsConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/PiggyCardsConstants.swift; sourceTree = ""; }; FF0000062DUMMYID001234567 /* PiggyCardsModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsModels.swift; sourceTree = ""; }; FF0000092DUMMYID001234567 /* BarcodeScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarcodeScanner.swift; sourceTree = ""; }; GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeoRestrictionService.swift; sourceTree = ""; }; @@ -3239,7 +3248,7 @@ 222E7F561C46E9B8009AB45D /* Security.framework in Frameworks */, 222040C61C1A1940005CE1C3 /* WebKit.framework in Frameworks */, 22B6A4481C0E963900673913 /* libbz2.tbd in Frameworks */, - DE3A167A235B79D705C0A962 /* (null) in Frameworks */, + DE3A167A235B79D705C0A962 /* BuildFile in Frameworks */, AEAE60406265A73AFD573FD1 /* libPods-dashwallet.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5295,6 +5304,7 @@ 4774DCE328F46679008CF87D /* Views */, 478A2C6F28DC551E00AD1420 /* Model */, 4751136B28D9A3DB00223B77 /* BuySellPortalViewController.swift */, + 7B94B3697D7742BFA991B5CC /* BuySellPortalScreen.swift */, C9FAABB42AB793CE00878224 /* BuySellPortal.storyboard */, 47838B86290670630003E8AB /* IntegrationViewController.swift */, ); @@ -5675,9 +5685,9 @@ 47AE8B9628BFACE800490F5E /* Model */ = { isa = PBXGroup; children = ( - 7545ED522DA91A2F0075F45C /* DashSpend/CTXConstants.swift */, - AA0000062DUMMYID001234567 /* DashSpend/GiftCardProvider.swift */, - FF0000042DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift */, + 7545ED522DA91A2F0075F45C /* CTXConstants.swift */, + AA0000062DUMMYID001234567 /* GiftCardProvider.swift */, + FF0000042DUMMYID001234567 /* PiggyCardsConstants.swift */, 47AE8B9A28BFAD2000490F5E /* Entites */, 47AE8B9928BFAD0B00490F5E /* DAO */, ); @@ -5697,15 +5707,15 @@ isa = PBXGroup; children = ( FF0000092DUMMYID001234567 /* BarcodeScanner.swift */, - 75A2F3022DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift */, - 754565C42DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift */, - 754565C52DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift */, - 754565C72DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift */, - BB0000072DUMMYID001234567 /* DashSpend/DashSpendError.swift */, - BB0000082DUMMYID001234567 /* DashSpend/DashSpendRepository.swift */, - BB0000092DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift */, + 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */, + 754565C42DAA52A000DA4E8E /* CTXSpendAPI.swift */, + 754565C52DAA52A000DA4E8E /* CTXSpendEndpoint.swift */, + 754565C72DAA52A000DA4E8E /* CTXSpendRepository.swift */, + BB0000072DUMMYID001234567 /* DashSpendError.swift */, + BB0000082DUMMYID001234567 /* DashSpendRepository.swift */, + BB0000092DUMMYID001234567 /* DashSpendRepositoryFactory.swift */, GG0000032DUMMYID001234567 /* GeoRestrictionService.swift */, - DD0000012DUMMYID001234567 /* DashSpend/PiggyCards */, + DD0000012DUMMYID001234567 /* PiggyCards */, 47AE8BAC28BFAE6700490F5E /* DWLocationManager.swift */, 47AE8BA828BFAE5800490F5E /* ExploreDatabaseSyncManager.swift */, ); @@ -5763,6 +5773,7 @@ 47AE8BB428C1305E00490F5E /* Merchants & ATMs */, 47AE8BDF28C1305E00490F5E /* Views */, 7569D6822DE6DA6800768BFF /* ExploreViewController.swift */, + E885671E3CD719B868599531 /* ExploreMenuScreen.swift */, ); path = "Explore Dash"; sourceTree = ""; @@ -6156,6 +6167,7 @@ 750CEFA02CCA6EA100E87A32 /* TextInput.swift */, 75EBAA082BB9791B004488E3 /* Icon.swift */, 7566F4892BB6CAF2005238D2 /* MenuItem.swift */, + 10F1F64BEA504250AC161D34 /* TopIntro.swift */, 75EBAA0B2BB9792F004488E3 /* FeatureTopText.swift */, 754C27CB2CC3C14F00BA7B9F /* FeatureSingleItem.swift */, 75EBAA0E2BB99036004488E3 /* TextIntro.swift */, @@ -7682,7 +7694,7 @@ path = "Sync View"; sourceTree = ""; }; - DD0000012DUMMYID001234567 /* DashSpend/PiggyCards */ = { + DD0000012DUMMYID001234567 /* PiggyCards */ = { isa = PBXGroup; children = ( CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */, @@ -8098,7 +8110,7 @@ C9D2C9272A320AA000D15901 /* SyncView.xib in Resources */, C9D2C9292A320AA000D15901 /* BackupInfoItemView.xib in Resources */, C9D2C92A2A320AA000D15901 /* explore.db in Resources */, - C9D2C92B2A320AA000D15901 /* (null) in Resources */, + C9D2C92B2A320AA000D15901 /* BuildFile in Resources */, C9D2C92C2A320AA000D15901 /* Coinbase.storyboard in Resources */, 75889B892AD2DF0200C17F5D /* CoinJoin.storyboard in Resources */, C9D2C92E2A320AA000D15901 /* ImportWalletInfo.storyboard in Resources */, @@ -8595,7 +8607,7 @@ C9F451EB2A0BF10B00825057 /* SyncingAlertViewController.swift in Sources */, 11B8449628F5B9F80082770C /* CrowdNodeResponse.swift in Sources */, 47AE8BB228BFF61A00490F5E /* FileManager+DashWallet.swift in Sources */, - 7545ED532DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, + 7545ED532DA91A2F0075F45C /* CTXConstants.swift in Sources */, 47AE8BF228C1306000490F5E /* PointOfUseItemCell.swift in Sources */, 47083B3229892D770010AF71 /* DSTransaction+DashWallet.swift in Sources */, 751B61C82AE0EDD000D1C2EF /* CoinJoinLevelsViewController.swift in Sources */, @@ -8604,12 +8616,13 @@ 47AE8C1528C6378E00490F5E /* HairlineView.swift in Sources */, 2A913E9523A3F75F006A2A59 /* DWInitialViewController.m in Sources */, 4751136C28D9A3DB00223B77 /* BuySellPortalViewController.swift in Sources */, + 8DF3D24EE3B247B79AE9CAB5 /* BuySellPortalScreen.swift in Sources */, 2A7A7BD62348CB6600451078 /* SettingsScreen.swift in Sources */, 2A0C69DA2314727F001B8C90 /* UISpringTimingParameters+DWInit.m in Sources */, 47C661AD28F972BD00028A8D /* NumberKeyboardButton.swift in Sources */, 11AE3DD82997C599000856EE /* IsDefaultEmail.swift in Sources */, 2A9FFF2A2233E60F00956D5F /* DWUpholdAccountObject.m in Sources */, - 75A2F3042DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, + 75A2F3042DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */, 2A9FFE812230FF4700956D5F /* DWFormTableViewController.m in Sources */, C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */, 4751137528DAF28800223B77 /* UIAssembly.swift in Sources */, @@ -8920,10 +8933,10 @@ 7549BE582DEAECB8004F0BAF /* CustomIconMetadataProvider.swift in Sources */, 7549BE602DEAF628004F0BAF /* AddIconBitmapsTable.swift in Sources */, AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */, - AA0000042DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */, - BB0000012DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */, - BB0000032DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */, - BB0000052DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */, + AA0000042DUMMYID001234567 /* GiftCardProvider.swift in Sources */, + BB0000012DUMMYID001234567 /* DashSpendError.swift in Sources */, + BB0000032DUMMYID001234567 /* DashSpendRepository.swift in Sources */, + BB0000052DUMMYID001234567 /* DashSpendRepositoryFactory.swift in Sources */, GG0000012DUMMYID001234567 /* GeoRestrictionService.swift in Sources */, CC0000112DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */, CC0000132DUMMYID001234567 /* PiggyCardsCache.swift in Sources */, @@ -8932,7 +8945,7 @@ CC0000192DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */, EE0000012DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */, EE0000042DUMMYID001234567 /* PercentageFormatter.swift in Sources */, - FF0000012DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */, + FF0000012DUMMYID001234567 /* PiggyCardsConstants.swift in Sources */, FF0000052DUMMYID001234567 /* PiggyCardsModels.swift in Sources */, FF0000082DUMMYID001234567 /* BarcodeScanner.swift in Sources */, 2A8B9E6F2302A9C200FF8653 /* DWPasteboardAddressExtractor.m in Sources */, @@ -8948,9 +8961,9 @@ 2AD1CE8022DC92BF00C99324 /* NSString+DWTextSize.m in Sources */, 47AE8C0528C1F74A00490F5E /* PointOfUseListFiltersCell.swift in Sources */, 47AE8C1A28C6A21A00490F5E /* AllMerchantLocationsDataProvider.swift in Sources */, - 754565CC2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */, - 754565CE2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */, - 754565CF2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */, + 754565CC2DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, + 754565CE2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */, + 754565CF2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */, C9F451E52A0B986E00825057 /* MainTabbarController.swift in Sources */, 7545ED612DA91FC60075F45C /* NumericKeyboardView.swift in Sources */, 47B30D78290BFCA60080C326 /* NumberFormatter+DashWallet.swift in Sources */, @@ -9096,6 +9109,7 @@ 7503643A2C89CFB70029EC0D /* CoinJoinProgressView.swift in Sources */, 47A2A2E9293E612900938DB7 /* CBAuth.swift in Sources */, 7566F48A2BB6CAF2005238D2 /* MenuItem.swift in Sources */, + 00C5FE923D8D4B13A805B0FB /* TopIntro.swift in Sources */, 0F6EDFD128C896BD000427E7 /* CoinbaseCreateAddressesRequest.swift in Sources */, 2A10EB352358996700C38B61 /* DWImportWalletInfoViewController.m in Sources */, C9F451EE2A0BF1F500825057 /* SyncingAlertContentView.swift in Sources */, @@ -9181,6 +9195,7 @@ 75D5F3CE191EC270004AB296 /* main.m in Sources */, 2A8C24B423336FEA00000D43 /* DWQuickReceiveViewController.m in Sources */, 893AE6F535290DD1CEE89219 /* ImportPrivateKeySheet.swift in Sources */, + 429281E6D1C2A8F6E6F5E1BF /* ExploreMenuScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -9195,6 +9210,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 80B4C633F37C0A089A9C7138 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; BA913BE61BD57E4D005A7C0E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -9270,6 +9292,7 @@ C9D2C6AE2A320AA000D15901 /* DWInitialViewController.m in Sources */, C943B52D2A40A54600AF23C5 /* DWDashPayContactsUpdater.m in Sources */, C9D2C6AF2A320AA000D15901 /* BuySellPortalViewController.swift in Sources */, + E5767AEAEF7C4921886E915A /* BuySellPortalScreen.swift in Sources */, C9D2C6B02A320AA000D15901 /* SettingsScreen.swift in Sources */, 751B61C52ADFFD0700D1C2EF /* IntegrationViewController+Uphold.swift in Sources */, C943B5022A40A54600AF23C5 /* DWDPGenericStatusItemView.m in Sources */, @@ -9362,7 +9385,7 @@ C943B31D2A408CED00AF23C5 /* DWUserProfileContainerView.m in Sources */, C9D2C6F02A320AA000D15901 /* UIImage+Utils.m in Sources */, C943B4BE2A40A54600AF23C5 /* DWGlobalMatchFailedHeaderView.m in Sources */, - 75A2F3032DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, + 75A2F3032DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */, C943B4C22A40A54600AF23C5 /* BaseCollectionReusableView.m in Sources */, C9D2C6F22A320AA000D15901 /* DWSetupViewController.m in Sources */, C9D2C6F32A320AA000D15901 /* ExploreDatabaseConnection.swift in Sources */, @@ -9414,7 +9437,7 @@ 75A8C1672AE5734A0042256E /* UsernameRequest.swift in Sources */, C9D2C70D2A320AA000D15901 /* CBAccount.swift in Sources */, C9D2C70E2A320AA000D15901 /* Types.swift in Sources */, - C9D2C70F2A320AA000D15901 /* (null) in Sources */, + C9D2C70F2A320AA000D15901 /* BuildFile in Sources */, C943B33B2A408CED00AF23C5 /* DWUploadAvatarChildView.m in Sources */, C9D2C7112A320AA000D15901 /* Coinbase.swift in Sources */, C9D2C7122A320AA000D15901 /* SyncModel.swift in Sources */, @@ -9446,7 +9469,7 @@ C9D2C7252A320AA000D15901 /* SyncingActivityMonitor.swift in Sources */, 75EE38D82CBFE52E00845FFF /* ContactsPlaceholderViewController.swift in Sources */, C9D2C7262A320AA000D15901 /* EmptyUIView.swift in Sources */, - C9D2C7272A320AA000D15901 /* (null) in Sources */, + C9D2C7272A320AA000D15901 /* BuildFile in Sources */, C9D2C7282A320AA000D15901 /* DWQRScanModel.m in Sources */, C943B3292A408CED00AF23C5 /* DWExternalSourceViewController.m in Sources */, C9D2C72A2A320AA000D15901 /* SyncView.swift in Sources */, @@ -9503,12 +9526,13 @@ C9D2C74A2A320AA000D15901 /* ShortcutsView.swift in Sources */, C9D2C74B2A320AA000D15901 /* DWFormSectionModel.m in Sources */, 754C27CF2CC3C7AF00BA7B9F /* MixDashDialog.swift in Sources */, - C9D2C74C2A320AA000D15901 /* (null) in Sources */, + C9D2C74C2A320AA000D15901 /* BuildFile in Sources */, C9D2C74D2A320AA000D15901 /* CoinbasePlaceBuyOrderResponse.swift in Sources */, C9D2C74E2A320AA000D15901 /* ExploreMapView.swift in Sources */, C943B32F2A408CED00AF23C5 /* DWSaveAlertViewController.m in Sources */, C930784C2A6AD59700906E4B /* TitleValueCell.swift in Sources */, 7566F48B2BB6CAF2005238D2 /* MenuItem.swift in Sources */, + F8208C62742D4746B1D29A79 /* TopIntro.swift in Sources */, C9D2C74F2A320AA000D15901 /* DWSeedPhraseRow.m in Sources */, C943B5132A40A54600AF23C5 /* DWHistoryFilterContentView.m in Sources */, C943B4BC2A40A54600AF23C5 /* DWRootContactsViewController.m in Sources */, @@ -9523,7 +9547,7 @@ C9D2C7552A320AA000D15901 /* DWPaymentInput.m in Sources */, C9D2C7572A320AA000D15901 /* OnlineAccountDetailsController.swift in Sources */, C9D2C7582A320AA000D15901 /* UIApplication+DashWallet.swift in Sources */, - 7545ED542DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, + 7545ED542DA91A2F0075F45C /* CTXConstants.swift in Sources */, C9D2C7592A320AA000D15901 /* OnlineAccountInfoController.swift in Sources */, C9D2C75A2A320AA000D15901 /* PaymentController.swift in Sources */, C9D2C75B2A320AA000D15901 /* CALayer+MBAnimationPersistence.m in Sources */, @@ -9552,7 +9576,7 @@ 75EBAA0A2BB9791B004488E3 /* Icon.swift in Sources */, 754C27C72CC3C0B900BA7B9F /* UsernamePrefs.swift in Sources */, C9D2C7672A320AA000D15901 /* CoinbaseExchangeRateResponse.swift in Sources */, - C9D2C7692A320AA000D15901 /* (null) in Sources */, + C9D2C7692A320AA000D15901 /* BuildFile in Sources */, C9D2C76A2A320AA000D15901 /* CrowdNodePortalItem.swift in Sources */, C943B4C82A40A54600AF23C5 /* DWSearchStateViewController.m in Sources */, C9D2C76B2A320AA000D15901 /* BaseViewController.swift in Sources */, @@ -9639,7 +9663,7 @@ C9D2C7A72A320AA000D15901 /* ActionButtonViewController.swift in Sources */, C9D2C7A82A320AA000D15901 /* BuySellServiceItemCell.swift in Sources */, C956AF122A5B5949002FAB75 /* PasteboardContentView.swift in Sources */, - C9D2C7AA2A320AA000D15901 /* (null) in Sources */, + C9D2C7AA2A320AA000D15901 /* BuildFile in Sources */, C943B5002A40A54600AF23C5 /* DWDPTxItemView.m in Sources */, C9D2C7AB2A320AA000D15901 /* DWBaseFormTableViewCell.m in Sources */, C9D2C7AC2A320AA000D15901 /* AccountCell.swift in Sources */, @@ -9649,7 +9673,7 @@ C943B3392A408CED00AF23C5 /* DWUploadAvatarViewController.m in Sources */, 759609242C455B2000F3BF04 /* SendIntro.swift in Sources */, C9D2C7B12A320AA000D15901 /* CoinbaseBaseIDForCurrencyResponse.swift in Sources */, - C9D2C7B22A320AA000D15901 /* (null) in Sources */, + C9D2C7B22A320AA000D15901 /* BuildFile in Sources */, C9D2C7B32A320AA000D15901 /* SpecifyAmountViewController.swift in Sources */, C943B4EA2A40A54600AF23C5 /* DWUserProfileViewController.m in Sources */, 756557B62CE84FFA0060348D /* FeeInfo.swift in Sources */, @@ -9670,7 +9694,7 @@ C956AF212A5C33E5002FAB75 /* DWButton.m in Sources */, C9D2C7C02A320AA000D15901 /* HomeHeaderModel.swift in Sources */, C943B5942A40ED7B00AF23C5 /* DWPlanetarySystemView.m in Sources */, - C9D2C7C22A320AA000D15901 /* (null) in Sources */, + C9D2C7C22A320AA000D15901 /* BuildFile in Sources */, C9D2C7C32A320AA000D15901 /* DWDPRegistrationStatus.m in Sources */, C9D2C7C42A320AA000D15901 /* CurrencyExchanger_Objc.m in Sources */, 752F81982E30F55E00ADA76D /* SecurityMenuScreen.swift in Sources */, @@ -9684,7 +9708,7 @@ C9D2C7C92A320AA000D15901 /* BuyDashViewController.swift in Sources */, C956AF0D2A5B592E002FAB75 /* TappableLabel.swift in Sources */, C9D2C7CA2A320AA000D15901 /* DWModalDismissalAnimation.m in Sources */, - C9D2C7CB2A320AA000D15901 /* (null) in Sources */, + C9D2C7CB2A320AA000D15901 /* BuildFile in Sources */, C9D2C7CD2A320AA000D15901 /* UIViewController+DashWallet.swift in Sources */, 75D5D5332CC928630049ED7B /* UIHostingController+DashWallet.swift in Sources */, C9D2C7CE2A320AA000D15901 /* CrowdNodeCell.swift in Sources */, @@ -9713,10 +9737,10 @@ C9D2C7E22A320AA000D15901 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */, 7549BE612DEAF628004F0BAF /* AddIconBitmapsTable.swift in Sources */, AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */, - AA0000052DUMMYID001234567 /* DashSpend/GiftCardProvider.swift in Sources */, - BB0000022DUMMYID001234567 /* DashSpend/DashSpendError.swift in Sources */, - BB0000042DUMMYID001234567 /* DashSpend/DashSpendRepository.swift in Sources */, - BB0000062DUMMYID001234567 /* DashSpend/DashSpendRepositoryFactory.swift in Sources */, + AA0000052DUMMYID001234567 /* GiftCardProvider.swift in Sources */, + BB0000022DUMMYID001234567 /* DashSpendError.swift in Sources */, + BB0000042DUMMYID001234567 /* DashSpendRepository.swift in Sources */, + BB0000062DUMMYID001234567 /* DashSpendRepositoryFactory.swift in Sources */, GG0000022DUMMYID001234567 /* GeoRestrictionService.swift in Sources */, CC0000122DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */, CC0000142DUMMYID001234567 /* PiggyCardsCache.swift in Sources */, @@ -9725,7 +9749,7 @@ CC0000202DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */, EE0000022DUMMYID001234567 /* POIDetailsViewModel.swift in Sources */, EE0000062DUMMYID001234567 /* PercentageFormatter.swift in Sources */, - FF0000022DUMMYID001234567 /* DashSpend/PiggyCardsConstants.swift in Sources */, + FF0000022DUMMYID001234567 /* PiggyCardsConstants.swift in Sources */, FF0000072DUMMYID001234567 /* PiggyCardsModels.swift in Sources */, FF0000102DUMMYID001234567 /* BarcodeScanner.swift in Sources */, C943B4B62A40A54600AF23C5 /* DWFetchedResultsDataSource.m in Sources */, @@ -9858,7 +9882,7 @@ C9D2C8482A320AA000D15901 /* CoinbaseTransactionsRequest.swift in Sources */, C943B3372A408CED00AF23C5 /* DWEditProfileTextFieldCell.m in Sources */, C9D2C8492A320AA000D15901 /* DWAppRootViewController.m in Sources */, - C9D2C84A2A320AA000D15901 /* (null) in Sources */, + C9D2C84A2A320AA000D15901 /* BuildFile in Sources */, 7513DA882AB175E0005D55F6 /* TopperViewModel.swift in Sources */, C9D2C84B2A320AA000D15901 /* UITableView+DashWallet.swift in Sources */, C9D2C84C2A320AA000D15901 /* TransferAmountViewController.swift in Sources */, @@ -9894,7 +9918,7 @@ C9D2C8652A320AA000D15901 /* DWCaptureSessionManager.m in Sources */, C9D2C8662A320AA000D15901 /* DWDataMigrationManager.m in Sources */, 7502A4872AE401EF00ACDDD3 /* UsernameVotingViewController.swift in Sources */, - C9D2C86A2A320AA000D15901 /* (null) in Sources */, + C9D2C86A2A320AA000D15901 /* BuildFile in Sources */, C943B51F2A40A54600AF23C5 /* DWSuccessInvitationView.m in Sources */, C9D2C86B2A320AA000D15901 /* AmountPreviewView.swift in Sources */, 75CDD7812C0898E400F433D2 /* Shape.swift in Sources */, @@ -9952,7 +9976,7 @@ C9D2C8972A320AA000D15901 /* RatesProvider.swift in Sources */, C9D2C8982A320AA000D15901 /* CBAuth.swift in Sources */, C943B51C2A40A54600AF23C5 /* SuccessInvitationViewController.swift in Sources */, - C9D2C8992A320AA000D15901 /* (null) in Sources */, + C9D2C8992A320AA000D15901 /* BuildFile in Sources */, C9D2C89A2A320AA000D15901 /* CoinbaseCreateAddressesRequest.swift in Sources */, C943B3382A408CED00AF23C5 /* DWEditProfileAvatarView.m in Sources */, C943B5582A40DA3700AF23C5 /* DWFullScreenModalControllerViewController.m in Sources */, @@ -9988,9 +10012,9 @@ 757422222DF87B5200CB0175 /* MerchantFiltersView.swift in Sources */, C943B5382A40A65B00AF23C5 /* DWScrollingViewController.m in Sources */, C9D2C8B22A320AA000D15901 /* CoinbaseAccountAddress.swift in Sources */, - 754565C82DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendAPI.swift in Sources */, - 754565CA2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */, - 754565CB2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */, + 754565C82DAA52A000DA4E8E /* CTXSpendAPI.swift in Sources */, + 754565CA2DAA52A000DA4E8E /* CTXSpendRepository.swift in Sources */, + 754565CB2DAA52A000DA4E8E /* CTXSpendEndpoint.swift in Sources */, C930784E2A6AD59E00906E4B /* ConfirmPaymentModel.swift in Sources */, C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */, C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */, @@ -10040,7 +10064,7 @@ C943B50E2A40A54600AF23C5 /* DWConfirmInvitationContentView.m in Sources */, C9D2C8DE2A320AA000D15901 /* GettingStartedViewController.swift in Sources */, C9D2C8DF2A320AA000D15901 /* NetworkUnavailableView.swift in Sources */, - C9D2C8E02A320AA000D15901 /* (null) in Sources */, + C9D2C8E02A320AA000D15901 /* BuildFile in Sources */, 751B61C32ADFF9AE00D1C2EF /* UpholdPortalModel.swift in Sources */, C943B4FC2A40A54600AF23C5 /* DWDPEstablishedContactNotificationObject.m in Sources */, C9D2C8E12A320AA000D15901 /* DWLockScreenViewController.m in Sources */, @@ -10073,6 +10097,7 @@ 75A8C1692AE6A1AC0042256E /* VotingViewModel.swift in Sources */, 1DD7BE9CD62998F12672140D /* RadioButtonRow.swift in Sources */, 3A0C6A2A57DFF02865E36200 /* ImportPrivateKeySheet.swift in Sources */, + EEEF8B708189DE9500235280 /* ExploreMenuScreen.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme b/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme index dc4c775c9..6d35021d0 100644 --- a/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme +++ b/DashWallet.xcodeproj/xcshareddata/xcschemes/dashwallet.xcscheme @@ -73,7 +73,7 @@ VMdm27xAn;M>aIvBQAh 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 isht_!t$&uv95^XFIIdbIO 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 Xe)vKaI?V|l_#qR+iv~4%F0uauS*;w* literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/dash-logo-black@3x.png b/DashWallet/Resources/AppAssets.xcassets/Dash logo/dash-logo-black.imageset/dash-logo-black@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..03a5ddc1ed5e0d4885dbdb124d2c02e16d1ed12b GIT binary patch literal 12872 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 literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/image-menu-advanced_security@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-advanced_security.imageset/image-menu-advanced_security@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e6bf2104e562ac5e6a925b883c1d9dbca71e82ac GIT binary patch literal 1746 zcmV;@1}*uCP)8a!t8fel93$4jGzsfZzk}c6%g5X38d{sTU>SQtXE)ox z*`IiY=O7@3u<7IN3KDS+t;Q8tz`W2WgC;)eE{eMii%B1E$M9;S3kESKbT-&RakB*$ z_%VG*YCF*Stq%rBzy$C9-$x(&afw7GQsCnrWS@?}0M#uz8)PW*0W3GC=t^2pfoei$ zpU!}bCaeZs6nhU!Qr>mYM{0FMCYm_WXHb%I7EO@_z!|J2Ewt=Y&_rM8>@!UgmjJ=X z#ntKpI6RmCPShb!-=hhq{#7HZo)pQ+V z8zMP^?dHicHPnTsB++X7=EtnVsJ^8-SY2qoRLg5K)G#xth=%J({s7-_aSX}uS9zm& z);AjI-@58RV3?E_;13eH-RS)Ams4Cg(a+MWwdycsCkpL|D6}Kgg$}=x?SoWxpdX8-P)+a`_}d<)wfbNi2G{ahT5AnB<4a z<GP5PyS7t!zx2Zol1;_XHThc4N1KFt&G2Mk zBX`$_MC{q>;Jk;57J?mFX<2)4TblRo8ags0%-IJWeMIi z*-$72mYr1SCLoM%s<3h$Ty)U7d&>TM8nOX??W24wntTHx#H3OR)NWR$&yD_vvmm>u z!V_ACYqGyhzb2UfkDL67CZV~G>C1g|1qV=VMMul|CN9A{Xh-M9 z^Cu;7o%r9H`thc}nO-*2V-@*tnay+C9qT@OM<4HOfD@tkAWt(8$-c!GokH%vDOq)l zDcL^S)-!w)oNqw&lO~lrZP|gVQ!HR2IH&9RX^B;L9RcPK0-&!tFt&s_A`0z@D6}IM zM`(?$W+9>@wBPP}UjI2Ht5WhZfkuF!5#I5C@qJO=S7#n}gu>q5?^_YS?1JDO@QDy# zRflTyM<-5m0|j7BaP5n{2~OER-|j?N6O9d>A_Sqsf@6|Q5xu3^$>0kFRKoWP`RBZt zpoCu3!9)=Cw;&Me)=X#$T`ymqUN)$OO=q~yV42$uq^j(huKlBaYD0==7iPz*ahN>e zQM+eEU+BEv7gTeKQv{UidM&pEr{l;xZ6osvbw8Cn9JX5K{q3MzdQ;D$L30!Bttm;h zq>|j!vjUb~QDmZe_U^E85L!c_QRuZ*6qzu1e)Q)Q#Q1V)_KZ{C$5^yX^#$5G5&dXk z1*h;$gnT0UW8U0s17l5ePS1iDJ>Lxa0iWlEt%j%ofEp#Ii=E&bQ5!qyEVXaZ)CA6F zyx57z)Wd9p*LeL|VuL(tVh8@Rbp1Q*7iYzcwp-gG6C@xBS)89)M-{9eI_^T~>2*dI zB2SnnHUsOmQ2Rnp>qB-a@`PDpJLr|RFZ2i=cGvq5dBQZY^XIb%mT?r`$&=LczG!L} o@O=VfXwN4Si9{liNW>W50qD$DYSZl$3;+NC07*qoM6N<$f)Qpx?EnA( literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/Contents.json similarity index 67% rename from DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json rename to DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/Contents.json index 596ac5b1b..62d7fe385 100644 --- a/DashWallet/Resources/AppAssets.xcassets/Menu/image.change.pin.imageset/Contents.json +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "Layer_1.png", + "filename" : "image-menu-atm.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "Layer_1@2x.png", + "filename" : "image-menu-atm@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "Layer_1@3x.png", + "filename" : "image-menu-atm@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/image-menu-atm.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-atm.imageset/image-menu-atm.png new file mode 100644 index 0000000000000000000000000000000000000000..bbcbc42d16510099045eb412a93c1ebd16c9815d GIT binary patch literal 626 zcmV-&0*(ENP)ClXRT)`vU%EN)h$`P3|fe01f z455LgStD}$R`z^+APqk6;?b>u6|Uu2gzRZqOA=3VbqI3Vs*G0IOHzRTvP)_@O4|f? zrFvwJLbj^z`d??UfI3DC{Cl_`mq7UNJVh+R79SY@Mx5Q% z7JH-H%Y!NSChU3nh~;_Q+{##-OFB@@i zn;Z_B2V^ z;k6}%uApTF%?`*8$_~hsboxr46RhgmCH|F(Eh!`(eKVPfZ6)^cmCn^4V6j*%YXn=U z)Zo_vxN{7SU2)WcX&COrz3$++7wBw^p^;+2gZmbE^M|;38?VPTPB%NyM6uxh?{5G< z#A`zlXVZOjwjZI0BfZj}9Ik{|f|`=wJckD45x$z-rmFHIxPOFc^A09y%seo5D4y&+ z(thFdeRQ`*P@o~b5*k#T7F>4+XB$J9Wh_1;4E}iVpMD}P+F_!JVH*m_Bix_x-183W zq4V}4_ZpcTnx1%D)t$T(i(r3pLjRg9z%OvR)k8(f3nubJhY`6I-#nx!7o=Jnj((kN zZ&kUP+>5I0WzNUbkR}6DiE!B729sTw!evpEPdBfF7o30{2WD9UHNgZo*c&roU>XFo zk8^`DgH{7m7aY9h#tF=!)xdNJ7KkXD^5f9)?Yi$Vr=DP~?M-xFkD4r|9sJR8`DqQ6ng!)fw{Z`r=E3S&6a zz4=7I<%5W{i0n(x5JOj$4smgiI39>q|>Tbb}F14=aHF2(LI+aNV(j>y8PRZU_D6Wx_Lq z4`~WCA=t~EkXt6S+9;u(RXWr2il~=h>dpD+i2n6=S&`-Rv`i6hjff`o*mQ_)@uK;9 z3np_ah-Mx(57!+lxb9fNb;k;xlfN>*T5$dsB`J#V7%LAOp(Jv_*~RD8!*NS*l9LOj z^%)bB=(?b(-wJ!RicO16#Y!AAz16ThB(_^^H{N0!#A#ZMkynS)vHjx#k6BKwWYv7#*%O9sm`BEjrNx)5N?|JP@ z_Mhb0TR5u*FMTsR3o<}%{nPDb+?3NNXX#cdTKbkK6_l??iJMM6m2|@zqFu=kFB;V_ z+FI`y`ELV-o$#JcyC$T4DplvpInKBCn1MS)UuwE>M)Kx&d5=iXbwr>N1GA$p1qOOW z-)u^tzN8(recCvB!@8s%#$#O@X0(?DB)qLJZM5}DuOkUn{|<_PP9Aj>Wck)O^KHz^Gcan>u-_Jf70E4N(x4w z>f4(d8+{0WzBwsxXv~*mTHXW~)EIbmI5PCYdCP*feOXC%{W7pvG?Brj5L#w4W z+bsxzo1+OBM@HBP0o+;fMVe|63mY9wM#r}_5rkuiu=4@a^6(6iXDB}NL_=56%obXc z%UV9{ZKg~nrrDHOp^UUX%hDM>CVaAn%Cge3W48*NRc$*~pbFQPCaI}CoArSdd~#Jd zw_6J4kE7fdDV5S5l@}g$Y6d3TB;zxY4f+L~{6sA3<_n9ZIZ*`eXp7)&bLBKv)2BZL zVcreeeSFPi<3O>@L;eYp*Bs5pIPxG#t*L%ztj6OiSKA*yr=V(ne!HBTYGP~(A#s=s zM^->r@N-aR3v;_Jl-~w_CK>ynZ^mpLnj2lF61LCeyFSnB&T!%8v@VP;%BB?oF#8 z4ajI*Mk@v2<=q*AwJM{I+esfc4o%$q2=&ZtN$zcxL}=fC^(xPBhAm)c^-D83QG=h} zS;UDo3e6Wr z89(=uAcw;U<@s#`Eu!qH5tWVCKAP{hkz=gJUj=9ZZ@$8AybyUQRB}5a%f3J;)I!1h zdiUy1*`((Lp=ke$QQ33O5h`ls)@Str-4G^%X3TPrPG6Mb^!fU0&S-VesuLC6KxO5_ z-Tbt@rCAbQ*fq@D)4LbJ>R~^ris^=ebvCx-UmkB=t%KUC#tp?otvc-T=hJjU-o!8m zcivgs>Jy_wa5m=QuVY~K;au5<*JdR3Gb3BqEe)NrI5r06&2o|sKPUlB1B#`pWuHDS R^A?{azy*ELsTze(`4^?Hii!XL literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/Contents.json new file mode 100644 index 000000000..496f21f6d --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "image-menu-autohide_balance.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "image-menu-autohide_balance@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "image-menu-autohide_balance@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance.png new file mode 100644 index 0000000000000000000000000000000000000000..95ba3bedb47c217f1c189f890b78eddac4295eb9 GIT binary patch literal 650 zcmV;50(Jd~P)bXtpS8{fe*4cQ(*0Kmmq~5{yKJxye zM(YuhF(#W%k^@4!`+IUKm1x7f>9CKryNX1LslVE#y@*DBOzTIafg{`GsP!{qOBu*& zVCOV)pibo43~6fo)pEVn!;W=(cYX&UYIM>Ac$nnyfG1WFIolbI!`6;kciyJDwiufg zjCBcSX|>x3r&@06U?JZ8(K)0&h-RTp&nJvAjbb)*cBIBMqZ}M(2tko5?>X|V?C^ez zd!AUL%o;WeQE`ZqXE#&UK618!v{1?wN0>ZN!z6@>1$d7)S>IzhJW9@uTIB3Vs^vR4 zWc-e8P!mZa7gTHSXCu{|%g?YML3kH|8mF9=TqlER<<-cPf;|$B*sBrWnVt-eV3BC- z9L1*S5_-@_?#S4sp}!=0i*bSyCE*acwJ5{P$9hMwroH)qX734qL9PKmPA`SJo1)X9 z7nww21to*3Db&|RS}56cWaX&5;#jJq@Gg)lSt#jKpFTPN1pn@)aWU58y@*7+y^$}S kMtll(bp##RtaAJVFLddR?WTD*fG#zJL$RCxc^Fr~ZpY!^qRE zXFAufA@p`An5qzR3o;sSJSIgAdeLu*F1+v&2s&tN4lpOOL;9j$r`Mb0nSMQ0G>Z&Z z>NN5<5>bPjRUJC_7T)l#Xz|&C85_~9R}TFLGPsKTu-H3z{uvr;JrsbMU}kxuV?5CW z-mdd{+*~lTY|)_mJ(Pzy+33KL>{)t}<4T)e4-@aF&E6b>!rvWDN<~p6Pd}jb_Y{uU zd6#O(yL@gW%xjq!^V%^~hl6j@AY=7M#eO^oU9MD!D28#3IFl8ijCZ5REP$)VXH z-Rf^4#1mXmWn_u#P{;?Aw+p!E>Y?1tTC%b|9KtwUQZX$!*!w>!bu#)4uJ|I;%X-0a zqESU&Y^to2jV8S|;DW@~$Yv#39(G&c1yw!?V=P1;SE&9LcW@!&mQV|Bz0~09UE%M; zG$T{tz47_>c{5L7=aKE{!)i|4gB$JWezZwL)8KVgg!gd4Q?DqRkQQIzf}AjtMGJYI zJjPIT2*1`dJW-qe|NY9?;KHgbwe4!bf#Z@O#X;PU9%1XHB1CI!R}1ESGSHc7}$VyQ~Cgtk@EmN1*}Hn7#KiTCq`W?Jzb`DoK- z8RglOE{-#(=!>9bEZS^C9lGo;%hTLAh-+yr=3UFn{)6-8SW&1%hv6xX*Nr04u1zbc zO^N^~6@o)}y9;Kx zcjSwkrQX+;qVv_mQTj18JUq#G=fI1e?QrXs%)&wg>WO`# zifg=CX8X)ZV#uP2cNzDh{&2pBTJ9P!r%r0i0+^AE*m2fpEBOX;EqR5*Omoi<;=^JZ3bA;rW0%(&UlLOELAG2h9vq@<*z dq@*Ml{{TcY6pE#yq&WZp002ovPDHLkV1kP2MVSBq literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-autohide_balance.imageset/image-menu-autohide_balance@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..670ecd165b3221aae307b530b68c33f7cd723e1e GIT binary patch literal 1687 zcmV;I259+-P)Ul(hZw9myOGXi6UbWXroK>(HX&qFUsIy_ z;Cemv^9oX^-?E1!|Ez4MhxXDrW(;$o-(MU;h^>ki&BZSK{<;$OrTX7G%5Ef|p6ZAa zTb`)#<9HUv54*vT+yuFc@>Y3bcP?7W8h3Bn3g~vkF_P>E?LUq&CCr5;e2C3y!#_Rs z+MkA%+X+p~uh@k0=c0@D@B63;d!dQ>7MtjSEd0-@6OTh|;!ug*hG+Z@51AzoCA9f^S@`hTPb2xPer>`6+Jg6Pdrpj(HT&B24PRFIVB3JfQw% z*`8|W4Z?7xzD>)f{j*4A<^Ej8I9$_WG+^y4Z9uz}Akf&;$XaL@?i?Ls&Cq zv8l6FaSb1qoes89ghBn1%XRLl2ChT4;F}B|wM9${A~_F`^lgwI;hlJk}SXEa=dlr$>iCAt=I|9;2rUTa~4nN5V3=W;dr5i zkV2See1{+XjS_IM_`uw@#h3{rmOoW^t=($31N z5O_8AIE5aC!!)dRvB#_j#=u+|O8*v3f|UB{bQ3P)LY-nWwc!a}1i1aj3G#*QvG35* zJi{7hU2O8t%;3LC^e#;Ft4xT$Ra7rYSFL6tBSMQU`7VwxbP^<`->6LClV!hMTGp9o ziKBah6gQx&-*X8>xrj|Q)lAHCh9CM=#L|L)s4n>swoIpFxU2fS$voF^WthoOdp$Yu2ZmoU9!`eT73Hv#!coZ^IU@*a!VjPHhx)P3!Q?V;!OLZv`DK zgl%227Ak#>>i%swiLLXTsqr^^wo1ZoDYmB}IbvIm9_)VEQuA6e1Wrt&+Q*jr>`j|} zF80-=leQ{*gJwIl)mZib6~i74X2rJVre4a^D${QFt(n+TO>uXgTe-Ke8#?C$p4fB~ z#bDJortMycF0<31)tmJ&S#12;m`)-3k4`)hu^sWZStyEKiN_6{QS2)G2~9j2vFZ69 z*PA|*xqg$gG+5BcEJH;4>O`*F6q{G!*P`!IENZB;rgPg_!kZfjCp4jJs`HMvkh#T= z8wo4)2(oU0-I?><6t|GrSHHKMLaeMy)ycbyz2Mu^I8gaSrpA$l;h`4K=L5M)|GaLB zEgG$E#SHXQal`l}zVp1YCpxDzDdc?@eNpvAw>Vvw?RLF8A zRMZcjjUT1{4XT_Vy@7Ls>IN3jwB2f7o9qlFTR&2!5@eM;z_28e^M*5zGX$O+#HiWHE&wJo zS{6a7s4`K&QyJnncNhUT;^fx_l-NLlND&OoOv#BG7bk{^lfSexnE>h?#(^C0uMoe^ zF`78JpF!f5o+3O9ISzP_&tV2<;*xZW;jp@(Ao971-0PEac=b*nOA2knCtGauEU}au zxP;g9r}}pul}_4dhnm$Z#TG7Dh2`4od*w7=syWuR+S@yp-UmDte6eZ1c0#Qdy#<2Q z$suKr`Pl}6J3Xfif6*J~8lVeMmzcwBf~rKuVfqxZ(Phg4K_n6}jWt7A7%T?>p`uXdhOPc!=HgS65^nFr)Rlz_#;ROkiU(!EU zr1UfrPm4;F-=SoLL8#NXhcRHkq{@5WrHDqhn? zll6#AJ1I$X%IVv79$)S1bvpkG{k)<%W&R7JEvd5F?8$T5MQN~GDyiQRG4@f_8ZRo6 zZULcVra_XN7S};t;i(|$g3v%; zi`Tzzof`kKL6kc@hm^v+Y%T8_^v)==f)2j}X<2f6k?a%mb!AUC2b(g-fRCXdTZSu; zxq$GEfo~2jJGYb4F(ezY`RZe@TujbqQsD;US%2uY7Shr$7kr^wEX0Cl+xxZ9smb)o xSU>i9YjeWmPNu3tL#39h-ejNYTJQo3{sY;$?n5nB`jr3x002ovPDHLkV1l4-Sc(7u literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@2x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b70b6ca31150810b85486ed03345bf5a56c4074 GIT binary patch literal 1341 zcmV-D1;YA?P)!G%|zDYiIAZkQHJwvR0ncP76X^PwoR{*iUQWMIvj zHEV7W3T+a83xH&V6!+*(BWk$=O&83yoIyl?M$~>re}6`=e}c*X5n95(;P9Np{IdtG z$0Q;^JtDe3koY&g#rqQ+ei=clDTy4xFAEZWmJhN z^e>2I#&oY^%;GT`P=AHPI3#2A6szGi4u%udKrWb#QZhKEZ{Ei$QDoKCneIRB{fV z91L&Xa~5m(B-J~3zIo#MxOj!L)xBNxRpFf7g3W%QjOVt&$&1O@?6?K%pQ{QRo0D!h z=UyOKJ%oe=Pt5*Iuzi)(H$&mX?8j`+3*%mJsI*jVY0IM}?IF|qGfnC6NAWkySx z>c1#^_=HGV3Ik!W@hNJgA$O$pKcz|ASl6#c0 z|Bopi&xd}-Zw^oFBgT{*(70Oo#2M5BYpb>IJU(wwfMc4KV~krFOdA#$BH9{Te>U15 zY27%KtY3~XWuw8lhiZz|7u#3ZZ@3rHb!0U}*Ws#XsyHJH;EO*!0-6@_s=&8QbyV6f zRYA+g0tT00nG3LC+zbT_?3xOK`QI$v7$|`85x6*TxTS`IwSGhXl!TTihE~S zl_OiD-xcO?ut%Zgv(2Ygf6Dtb*B0mfC0qAr!?E$-?4#?=C9*X;1nW~1?+)|v9k$h{dRI|~MKjMYO3bQ{AFQyev zC&ngr=e{<$R>e<`Xi9bscENmPDZv&?vky)Or(~fI;qZw$xbKXD9-IG`#?lTAcES88 zNi5~{Seo}KXEs@tGk~1He3ykU_qQ~b=D9nfyn=jKORZ#R0v6t*v zZ7~OK!M&eym(mr~hI8(2!R%I~hN2rRijtP%&@!o*ymtxC(uzJV`Y;O#YdU@x*DHz@ zP6~u9%2LwuE3IP0ifr2p3Zjt3H52CL~VPnIu8LWDx|H?}( z*Ln4YG8naoRls|ebM6|{uW4mBY_%MdV_7z;DK;CTDeO~|xhiZefk0Tyehcy zBV^Ul>`JMQrl>6QgDMp-+j~KL&6+i9ZWX@(*SOm8SLIfY00000NkvXXu0mjfU7&x3 literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-change_pin.imageset/image-menu-pin@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3f80321ea43ed31c1671bee2838b33d693e256bb GIT binary patch literal 1930 zcmV;52X**~P)oB%7> zsmfEtYiz9e1jr{aJ^{Xg@d==UoIFO)ft^WrujCRS?ab`<%&x@#s#JVvSF8Oq^z_$^ z02&$^8X6iJ8X8sz1$AcdPX{1f$M3fJXKgySo=?;z{&I}BfsdPW=xvRmrqoC1!37H1 z-Uh9nUSKyJ5Vjd*n-CqnoNX#G{Ar1 zF4T)?f+rA~cYhy%Uc0EF$V3-(dIra%E(9jrh$h#}q$f2n6OQ1dnIyeXqdSbyWQ(;r z!S6b-TwFp5d+_VVIS3bA;*6$NV6>85@dn z3;NjpHkwUF8b2V>DD3My6VmZjA8$d_-*sS&f9NgW+_wLS)|zgt1F>me5AXdhxv9e2 z!A#`Z!1El>5uJ_Z3#fv_jrs5Ocx0doJiQRV5uJ_Z2BPI>vfPDc*QS;^UtP z+=XsN^L>o_z;hFttJM{_b9Kk47nwG8+=SL^Byy~3^)j(O(Z-6S=}^x>1S}V&@RU6W z`pP{Qkx=lNJq5aU(%KTcw&J!4hr?WuaG?~IiGJDGn)BLSe2!WWI=SZ;b?@l9so9_F zioF}13Dh*50vP*VLJ-WgAM(ivHKg z?C`72myQA-fCzSt+O`8G&4=aT%-6S%PQ4S^^G}`aH<=u*u?q5&+XR<&PGQRPP8)Dh z95hO-Z%EXwLtmUSf36kgS^K?+sU3dhATr$#*EhLyO41~*+lm7DUPsmla|U6!#K#ef z8H3PGJqi8?_7*qZi_o-=FB0Fw z=5no947rR_;k+~XT2()yDQqSm)IDr=V>XH#T z$1gwee+fR}Jol$i@1R(|V~p2+oOggddzY=P-hr}kh2_bf)3N>wKRZDF_uJ6{v|4+P z*}*-b3JbWTbR8x`^A#jmRAHIrd)Tas2|$bWeZqN}3JbVsWEVPx@H6&o`cfur?s}zT z%i^GsUFginm!A|DRaiKEx%OqU21YV$?(l0;NWM6KB2!^;nAGh;)5KMztaO)Yg=P9L zO#;VAU*1Z`PFlF=EB!2TUE^ea?2{qC7Dre+P#R8&?&1i8VE%dTwPEJkQcb9C!H`>I zNSlgCn2*(CJkiFAo6u}NOvJpw(%`(SjeD*`sUbAnhW7e!J=FC;E<92KsA0;`XUhq{ z>|JU~FV$TcJVrAg?sG8vi&1mDGtBElcI-_Kz|eOC75{v6>zX3B_#TLE-;Ws04^Az! zqEODpb2MkC6(L*H=)D9?fF8P2!|dBf2Nmt8uwSI<6gC-2;bqa~it}$UUy%gs&8rud-a7l~WyrEt@fW|xhFTzc<#rA$Uj?U~S@a6~ z*K}_JEf8{jJ#Vi1Xhv3R(I<<%*#`k+8>m)EY(bF;`A)U!d~7-9?F~|rFfD<9Uckgd$*5Pnec4+S`+Q-(s$eEemBP={*PPoC@FM8oCv$EYvxb!jZJ8xPO@#P(e0L z`>yMzBQnI?NiW8t&$w;dbrGD*M9N;pXNW{K{qa-56L^j$B~DH`Yp(nN8cT8k_J_7# zzDjrnEA4kd+f)SDctvsE{G5vw5Ax$d7C}iW1-lsZ(Aw&4@6kRLR-3PQ?kRU!)#THL zYPz&$0*!duqCwFjAX@WycZu0#IYWx#rmZpj7XR~A8X6iJ8X6iJ8XhG70}XcF3C?e0 Q5C8xG07*qoM6N<$f-4%UDgXcg literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/Contents.json new file mode 100644 index 000000000..14790fbf2 --- /dev/null +++ b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "image-menu-touch_id.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "image-menu-touch_id@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "image-menu-touch_id@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id.png new file mode 100644 index 0000000000000000000000000000000000000000..bc902c846bbf6f6a4c4cf4d98e5ed862cedacbc9 GIT binary patch literal 1188 zcmV;V1Y7%wP)} zb_$-R!Qd5`tRQp+p(_Ypfr(8{hoQ5c1Cn~btM>yAj&a&qqH}EY^z?MUdv*1F68X}a zk;k_FUv-gXeSL5_k@ntP9?`Y~?%yWj%>iZ~N|5?JD~<8)m7LawTdep1u(Av85(_4n zImhn^qgUbp;!1NVxvH2@6>A!Jf53SX{*cq%L-}mr$nrI3xNsrm<$!YbXAO)r#D_ZP z*)S2QKEa$$=)oQ;>ukyrUj*%{C1_;JD^AS4@1cr z7s^02h;n%<=d(8e)v=>gfd+xRyQaLSwE>=w@jaxjbmaN&34^fa^3#knw$EyN>7I7M zW^W_&)vZxOJ%^DLyj`0}@3xDjJ7h|F2=)%^0=R!&MU)>Hv0aSNS96SMjy3slguJv; zw%BJol4svvq=5$~f zu+QO;rqe}V-VU&*PZ9W@`0@!^+r_saafB~A98XPY*Cg{htyG$XY*aR3#+p#3K;yve zSU{CH{oxnPYcp~D4%3yET~X61kX;Vq7HJ=W(TtUP23G+4C87%5_<(GrVAKSOB7}Ew z7yu!>iire38mt;h8CyBwxb`I^X@82Z_C*%ch(Y!40Ds)7#jp90_KQN`ZHwtNMs$Ta zKdRbhci$!OEOuu?h;U`>N$g#Fb% zgTbEK#gH=TS=|Wsd97ST#Au%6&%K$@WN|zuk(e&yd#47xn{ofa+)Bal{HD%r+t4^@`+1*!P?v8D9DJKDRB40n0{kLmS|U~QVSd5zg= zu~K=x1eAxYR9OKzpJ_3fGgrrAGF>eO_qFYAnOa>OlD1UQM)KGuEfSG-bZB&{^s)!J(?5AEmqzJ;~4D`{qa^GBlv zSkQtNw4nbG33zPk{*eLPt$@op1lW3rA0kcb{?{v39H8o-?B;S3XG zrR*X+*K1}Nff9XC@-qlwAS=~C|4&2)BpjtOynl|G?Lvk%l`#R^bJ3 z4N2OcXs_KNy?=qoxq&3vy^n3r#&C>T@~G+E4(vV~1ifT;R@Fi2tsV;H{mkLyc({qH+AlF4!uK8eg+yGj z{!>K4Zj<4sGfWErICH-%F#dLiZJTUF)CdYBmL?WyCM2jGiJBI8MYK-z?kjp|vCmpY zD8Mx*z~dn)pv%^^)+9PKVfYpbD3e2ZwY=*3%9>T`J-mJr+An!&B}ik)XpI9iu&<_* zCj4D7ZI4jXt4`C$-!53f)5xBaNu8RZApE2+-Mvma7_+2#&MYx{H2jDm>B`3IdT(v| z&$Mtg3M>(00--Fl0|PwxUeld_|6Ayvt$M*!wrWbqvZpb znPC9$Fci7|!fw!s6)7bNLZpZ8Ijvd7EZKB2K7cn<;-qml{h&=}XgE)Tf+mJ3wLBW0 zyBymH$h<@8Y$7^lPQ7D0sGBP8v`mt5>wYKcGY99B;T6lFx16Jy>dkd5r)Q`DP{8gJ z8dbmI(ap1e+7b*2+wUQ-? z7yg#25tc$H*Y<2A`jmcIK~Xi&sPUuFDL;_ zo9dIh)rACT$S~OyIW2Mo1(E&wNxbHz@a>Ah+*d4UfxES7pFt6Wuh{mh(=he6?BRRK z#`g0|)%WjOuU(=V4cl}rsA#A*n`GeECpp76(S`5@#>l|8Z-2E*@bzOBS_|9TP8sPE zn_v78n`&}u>9ZS(bu}4G@{~=&X;c|QKR@2F2-*sUbD*MuAJhv%$pLHUD7&%qM->rgm_O{ib!))- z8C;l#MUwe;b?t6VUT$Y(nk>i5n2?OU7VVjPHcbX>t{?sQSlpwOR?28WAkJ_hC8GSU zY9ETlIqn&Gh~Q%Y`1sAofimovUBdU=6e0>pnV^}2(s?&-Q)|k)H5$fK0(Z}~h9?My z+AwZe&zSdJcMv+#J{z$E!T8L}^LWqUJ|1W6jXFO8ZaocYx`qLsvyN-_W=H?8WIlEi zUe;ug`7lj}j6uzMCNr!a$}o?cg29g4pI~Vw4;=vU1O=8dh!J;mz%(2@!yIF@9|q8n z>NgLxthSrCsQwkt}F4 ziNz{RB6Ct$r2wuJPn(_%8z|0o$OkZ^50+oe^ z8B=a|Rg@qEg*_`E?(B?rZ&%v6aQLQW3N=3vH^(iRop^v1k-qDbbfTy1LTt`$>SF$R z&RCs)C{oG*JuS8yOQxe}tzsWtL!B{z4!o z2ot|qZJOIUbB1%Ehkbg;$!MWhYUO*~OFU^X$xB5L%+~d9I%X9c`doQ$ejk<+&5z+2 z(LOnEWtco5EPwV+Mu!!<4dk|7kok0C2Ofc%Za(Kr`a4RjPt(`6kMv#if)=!(1^qAR YUme+r>5&7FWdHyG07*qoM6N<$f}{qkUjP6A literal 0 HcmV?d00001 diff --git a/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id@3x.png b/DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-enable_touch_id.imageset/image-menu-touch_id@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd3d66d83b8beea89d6704a57ad103ff90629ed GIT binary patch literal 3732 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