Compare commits

..

1 Commits

Author SHA1 Message Date
Vlad Suhomlinov 83b427488d Add scanner test 2021-04-24 11:39:17 +03:00
29 changed files with 1605 additions and 645 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
# Xcode # Xcode
# #
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
.DS_Store
## User settings ## User settings
xcuserdata/ xcuserdata/

View File

@ -0,0 +1,34 @@
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
QTZ/

View File

@ -0,0 +1,73 @@
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
2WbCnk1WmHUHHknabhyRyDYNC6+6z2xk

View File

@ -1,34 +0,0 @@
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
KzQs

View File

@ -1,72 +0,0 @@
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

View File

@ -0,0 +1,34 @@
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
j47xIKCKY6WgW0SbdwAawlSU3w==

View File

@ -0,0 +1,38 @@
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

View File

@ -1 +1 @@
2.219.0 2.172.0

View File

@ -0,0 +1,175 @@
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
cLQEOoB923e1tUEXM1BdKOZ2Rz6YMrZ0JT3taydG7KQ0FhpIXGEW3sx5QajG
SXk8VbRnZs5r2eXFZOftHYTRU61xIk2pHTiu0mqdtZNt/iAA1b1rkteFifI5
pjOS76Oo6KiuEiEAfBqxUN8Fa0hUvH2S/HQd5Q0HrnlXFXIOlJDsmrduD6cq
Hs5RXfMgtJTKukN5pwoOtTVlmmYZSbgy1S3DShHclCf2c04K3dwjYK+ppLa1
UbRcFYGf/Z7XWApIdQpQeipes5kFbuyY6QxCsD9MUmDylBqDZU1YNqsEPYHg
HyCNDBTXqr2cWr/8fgpB+88QCq7IVibxdEc1gHzF8wP65BrsqB/dKnVPEcLa
dEzdIrHUNDcUksesSlH8dcZk/JxBEIYF4ZT9jyoqgswJru6FnlECo+U5ZyW4
rUlP+xZ1f2kNnxCL0qJPwr2wV/VQNCauS/VuDC4CSiN+j50wWPUoqqRzvHpf
I3gHrbRHD3rl73pY6DJ9HPAiqXfzvNmawsU56BP3/lnDze9PBGkXMTaXfP+G
TI9cJSwiKwrvE85P1+jskmxa7pklbzeYVz5FZky3GTO3WFygk/m//EO2v65S
Bqbnm5UDBInSpWvctgoy48nvWG+uqLVV7zUgfdujwVRt5E61peB4I3BEYNvC
WUm1hRF/qYdnmq1kpP01EGSDhuUebCXHHlvBy0aj0LJ8ZipQ0/pKaHIGod6l
wa5khgslwBwYpguVvGjG89UVsTC1fDgP/hNRJbHTVG6mt1EiXyuIAqE3R2D3
K5PwLzcYnZVhI8PoYYQPDFBulTMstqmDfkRnjznKwrdfzzu7/9AJlKQv0Z8P
wGVOrow5Z/K7ogQUvQnuc6YveVh9waIPzIdGV/QT3l4yD1QyWRBV+DWSRbli
Fec0NiIr3z8xEYD7eCErQ/KjIqIW7uRaEayFUGMb5FjN76U5C9IDTHbQ7ChM
oXGFqtWwH6yDK4XFKUzSegw9E0XK4pE1iOvlwWWdemlLM1LSunM+WlE5QSi+
kgn+CJZ538GXZ7tgvaAqozDV/hKifA9Z3KbgS+Dz9ZLZ4x7mhDZvdlyV6by4
AkIKYqCbwa6TxDyr97N8fX0CM6iO61vDAXOGBvolbUW3eeNqiTOzZbW7kP3U
Quev/2SJVHiPYdxhApTJ/UfpXDirn18TdTcHE6qff9UeNs4W/mySe/cCfCgo
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

View File

@ -1,382 +1,295 @@
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
WYODo3GnlooD4sGe1N/OQVwCuwxxxbMBQlBK0FBLJ8kVUME826DQwFu7hndO Sh2dKW8ymVj8dNsVvqFp6aZVXB9AUSTMGsOhRCPZa+RebLI77AUDlJkgBQYW
QbrNI68qRsgdLVw0trtMbrrmYgK3ZbJpZfm0+mofg0TFr3OP/hYLuvoNglvL ssj2VpiTvvw/K/ySp40wfWCVkPc6yn3JufjMq+R2KPaZiHCaMi/7KU2Rts/o
5QDxLuFb8/92m5fl9Cv92XzVmzX+X4YraNfElNHTgS/COIZyZdS9lqdCHgKI dadoGQXVWEpST2Xxb1tLR760fh/oyZcDDhj/1pBHbdRgCFVXeJIs4TIlLJkq
ZBUTDnqNfMZMdRwMoDtQNNIbXYFr0bmRtwGjs+4/LyT/ZyNVIFmBauDzorR0 hvctXQG7Cp/PiCly8NFLN+dSbDkh+hLah3aOoQADin3bz8QEI23wcnES6Qyb
JJ3mKTO3ABa7KPETlm/tVobvjjp1GsbPaXPdwAocdYwFLuPz3ozNffZtCXgd X0NZAnhnyo0xb6aVniy0Ys5pgzRF4tP9evjKXuFYWgyUykwigbuTN5o9mM1Z
xEPf3ttOckJy6T2gPKXYQgcAAIBIbwxPYEamuqZXjoVfCDgYXQPYQAILhmvm 0F5Hc7N31sj1G8lV+4FqLZw+PoIxFS1GEv4gEqcGL6aImjp5USSUg9TlWrSM
xV9lWHMV2iU0wTn4tYEfghMYOlGVHHkk7rp6SdM2A4ARVTziOMtrP6/KwWJp FXQKmekfzTCDp5sEEGeGSo+FK651YOWRCKMGvDCBgehrzxA4VS2ZoPm0qMAC
zp2CIvaE8b/IE3DSy5cQl+x0XY48APN0eUsbn/STHntYKLD7pOThlvsiIh/j COB64RzEFpAJWex/6V5pyFYFCuF4zbTxRk2HNiOh2UXEsW6gww5FmHfbjlUS
B2w0alueeXYOZymoo5KNSD7XsesoFltH1O+rbRownVQZvJ5BMi99C79JPr7x xqySWfQcVWiJutitbZoWRBjMWwBiUX4syikbtMjRD8Xf3sziGJ9PaXiWEzTV
7LEwpzmVKQzO12EcHPx/nyXVqEkXlQIOaZEjHG78LOB+3FALghzpDB7mrXU7 7YLWYo4rovx97BqCm3rQbxGXlY3MPNmk5hOiC1Y2QuelE0MmoQIJBG7wmTyF
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
Icix4mdUGtcm4/Eq1Swsm/EzxfiY+TwV3aZZOBQe2vzmiGHaqy4JCAMH+gCV 8jfy5UUJXA3mflmN9fHphVB9RYqf6md1tqp6BsjN5xs7JXijYQJZmkAk6IqR
6/a4W1YsGHgC9eBWnTudpygCoysE/iyIzBMEdbExcr2XqK2z6Yy9lzvZIChO 5Xf0XxS5NFT3OOOzVWjkBwSQ0wXiTcS/ozjQTalXVL5Xbq5hpPE/l/TA2VBx
CFaBnaHw1RbvSt9sjtqN/Vmn495QBS02yVh0xzLEAlZrMhjL3uIn0Mv5u3rD mi6KuCv0DaFf87m/84qOqUFNVPRb/Sa0NwUsXZZNRJkXOdJQ0V6wIYMBFR7f
r/o2GjxMHRXSgwDxCGfpmhEQtmc6lzPpreT2AlSnxlaBgX/0whSrOA/pY0YI V3qlACpdealPN3c07egNZYwns/o0uSJBquUb5JgWojLs+D/602iDp/+8rjS/
Qy7p8HEnqdPC6scXahyri2YVT4x8tTTQrzIGop3AJj+/1zrLLw0T4EO0pqrA +DXMakzVi5kSzx0cZaPb6I6jeMKUqJr2o7DVIGJSaYppeFM51UooSNy28/Ue
YnPOu2L91d7ohiO0Q5lpGG1J7fJtS4yvxazQJansr+ZcY5ILeNp2i8A3upF3 sOuAfTyX+fJf+Tolmj6ayTc4ggzvdrdxc52SbNcfKoYVnlihwcdFk4/J59KO
muGvuE4l/TPe2bBy/7LdgHAL1sul7uDzrx89QUmlHTjarXYMXNGfxDv2ehnS Fo4uRgGNqHtcakpWBhzWXcmkyMskMHXhGJFP+UfUJMEUibSVEVf3amR+nvaX
3JdAYIJ2H+CZU97t2AnxRe5pGuyjhPjNoPmC7Nts6JmskbQddSRtCAOzsaIk NmdJTdPqU1UgmAxnDN4nFZp7iCvuB2rDzxbHyKJVggXZsy/c1oGqMDyuZuwa
Avoje8zlHAUYa+Dp3bWHDOTjnWdtmWPYxLqnr9gm0RtSMe4z94YY+OC67nvj 5AIcHPjoET+GQDoGggVVf9CWdyZFmBRyZ4wYRQQEbRCXL5sw6sMF7vtUa9kQ
0AR+1NkHXkjbmScjQQmDM3RZMbOfVpdBmqfVJFattx6WI2YSIsGD9CcKtakR 2UpKuRtEiY55P8jEqh8F0iunlT0c9slphOkw8uKI0siBWAlpcrvLeFptGnNA
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

View File

@ -1,9 +1,9 @@
source "https://rubygems.org" source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/strongself/Generamba.git" }
gem "cocoapods" gem "cocoapods"
gem "fastlane" gem "fastlane"
gem 'mustache' # for config generator gem 'generamba', github: 'strongself/develop'
gem 'xcode-install'
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path) eval_gemfile(plugins_path) if File.exist?(plugins_path)

View File

@ -1,42 +1,54 @@
GIT
remote: https://github.com/strongself/Generamba.git
revision: d0930d3bd2589a34e06bf6f9c5016dc3ffe7678a
specs:
generamba (1.5.0)
cocoapods-core (>= 1.4.0, < 2.0.0)
git (= 1.2.9.1)
liquid (= 4.0.0)
terminal-table (= 1.4.5)
thor (= 0.19.1)
xcodeproj (>= 1.5.0, < 2.0.0)
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
CFPropertyList (3.0.6) CFPropertyList (3.0.3)
rexml
activesupport (5.2.4.4) activesupport (5.2.4.4)
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
minitest (~> 5.1) minitest (~> 5.1)
tzinfo (~> 1.1) tzinfo (~> 1.1)
addressable (2.8.6) addressable (2.7.0)
public_suffix (>= 2.0.2, < 6.0) public_suffix (>= 2.0.2, < 5.0)
algoliasearch (1.27.5) algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3) httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1) json (>= 1.5.1)
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.3.0) aws-eventstream (1.1.0)
aws-partitions (1.881.0) aws-partitions (1.418.0)
aws-sdk-core (3.190.3) aws-sdk-core (3.111.2)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.76.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.142.0) jmespath (~> 1.0)
aws-sdk-core (~> 3, >= 3.189.0) aws-sdk-kms (1.41.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.87.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.1)
aws-sigv4 (1.8.0) aws-sigv4 (1.2.2)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4) babosa (1.0.4)
badge (0.13.0) badge (0.12.0)
curb (~> 0.9)
fastimage (>= 1.6) fastimage (>= 1.6)
fastlane (>= 2.0) fastlane (>= 2.0)
mini_magick (>= 4.9.4, < 5.0.0) mini_magick (>= 4.9.4, < 5.0.0)
claide (1.1.0) claide (1.0.3)
cocoapods (1.10.1) cocoapods (1.10.1)
addressable (~> 2.6) addressable (~> 2.6)
claide (>= 1.0.2, < 2.0) claide (>= 1.0.2, < 2.0)
@ -76,57 +88,42 @@ GEM
cocoapods-try (1.2.0) cocoapods-try (1.2.0)
colored (1.2) colored (1.2)
colored2 (3.1.2) colored2 (3.1.2)
commander (4.6.0) commander-fastlane (4.4.6)
highline (~> 2.0.0) highline (~> 1.7.2)
concurrent-ruby (1.1.8) concurrent-ruby (1.1.8)
curb (0.9.11)
declarative (0.0.20) declarative (0.0.20)
digest-crc (0.6.5) declarative-option (0.1.0)
digest-crc (0.6.3)
rake (>= 12.0.0, < 14.0.0) rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107) domain_name (0.5.20190701)
dotenv (2.8.1) unf (>= 0.0.5, < 1.0.0)
emoji_regex (3.2.3) dotenv (2.7.6)
emoji_regex (3.2.1)
escape (0.0.4) escape (0.0.4)
ethon (0.12.0) ethon (0.12.0)
ffi (>= 1.3.0) ffi (>= 1.3.0)
excon (0.109.0) excon (0.78.1)
faraday (1.10.3) faraday (1.3.0)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0) faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0) multipart-post (>= 1.2, < 3)
faraday-patron (~> 1.0) ruby2_keywords
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7) faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0) faraday (>= 0.8.0)
http-cookie (~> 1.0.0) http-cookie (~> 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1) faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0) faraday_middleware (1.0.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.3.0) fastimage (2.2.1)
fastlane (2.219.0) fastlane (2.172.0)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0) addressable (>= 2.3, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0) aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0) babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0) bundler (>= 1.12.0, < 3.0.0)
colored colored
commander (~> 4.6) commander-fastlane (>= 4.4.6, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0) dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0) emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0) excon (>= 0.71.0, < 1.0.0)
@ -135,130 +132,127 @@ GEM
faraday_middleware (~> 1.0) faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0) fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0) gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3) google-api-client (>= 0.37.0, < 0.39.0)
google-apis-playcustomapp_v1 (~> 0.1) google-cloud-storage (>= 1.15.0, < 2.0.0)
google-cloud-env (>= 1.6.0, < 2.0.0) highline (>= 1.7.2, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0) json (< 3.0.0)
jwt (>= 2.1.0, < 3) jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0) mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0) multipart-post (~> 2.0.0)
naturally (~> 2.2)
optparse (>= 0.1.1)
plist (>= 3.1.0, < 4.0.0) plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0) rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3) security (= 0.1.3)
simctl (~> 1.6.3) simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 2.0.0, < 3.0.0) terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3) terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0) tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0) word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0) xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0) xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3) xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-badge (1.5.0) fastlane-plugin-badge (1.4.0)
badge (~> 0.13.0) badge (~> 0.12.0)
fastlane-plugin-firebase_app_distribution (0.8.1) fastlane-plugin-firebase_app_distribution (0.2.5)
google-apis-firebaseappdistribution_v1 (~> 0.3.0)
google-apis-firebaseappdistribution_v1alpha (~> 0.2.0)
ffi (1.14.2) ffi (1.14.2)
fourflusher (2.3.1) fourflusher (2.3.1)
fuzzy_match (2.0.4) fuzzy_match (2.0.4)
gh_inspector (1.1.3) gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0) git (1.2.9.1)
google-apis-core (>= 0.11.0, < 2.a) google-api-client (0.38.0)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1) addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a) googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.a) httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0) mini_mime (~> 1.0)
representable (~> 3.0) representable (~> 3.0)
retriable (>= 2.0, < 4.a) retriable (>= 2.0, < 4.0)
signet (~> 0.12)
google-apis-core (0.2.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.14)
httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
rexml rexml
google-apis-firebaseappdistribution_v1 (0.3.0) signet (~> 0.14)
google-apis-core (>= 0.11.0, < 2.a) google-apis-iamcredentials_v1 (0.1.0)
google-apis-firebaseappdistribution_v1alpha (0.2.0) google-apis-core (~> 0.1)
google-apis-core (>= 0.11.0, < 2.a) google-apis-storage_v1 (0.1.0)
google-apis-iamcredentials_v1 (0.17.0) google-apis-core (~> 0.1)
google-apis-core (>= 0.11.0, < 2.a) google-cloud-core (1.5.0)
google-apis-playcustomapp_v1 (0.13.0) google-cloud-env (~> 1.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.6.1)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0) google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0) google-cloud-env (1.4.0)
faraday (>= 0.17.3, < 3.0) faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.3.1) google-cloud-errors (1.0.1)
google-cloud-storage (1.47.0) google-cloud-storage (1.30.0)
addressable (~> 2.8) addressable (~> 2.5)
digest-crc (~> 0.4) digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1) google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0) google-apis-storage_v1 (~> 0.1)
google-cloud-core (~> 1.6) google-cloud-core (~> 1.2)
googleauth (>= 0.16.2, < 2.a) googleauth (~> 0.9)
mini_mime (~> 1.0) mini_mime (~> 1.0)
googleauth (1.8.1) googleauth (0.14.0)
faraday (>= 0.17.3, < 3.a) faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0) jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11) multi_json (~> 1.11)
os (>= 0.9, < 2.0) os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a) signet (~> 0.14)
highline (2.0.3) highline (1.7.10)
http-cookie (1.0.5) http-cookie (1.0.3)
domain_name (~> 0.5) domain_name (~> 0.5)
httpclient (2.8.3) httpclient (2.8.3)
i18n (1.8.7) i18n (1.8.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jmespath (1.6.2) jmespath (1.4.0)
json (2.7.1) json (2.5.1)
jwt (2.7.1) jwt (2.2.2)
mini_magick (4.12.0) liquid (4.0.0)
mini_mime (1.1.5) memoist (0.16.2)
mini_magick (4.11.0)
mini_mime (1.0.2)
minitest (5.14.3) minitest (5.14.3)
molinillo (0.6.6) molinillo (0.6.6)
multi_json (1.15.0) multi_json (1.15.0)
multipart-post (2.3.0) multipart-post (2.0.0)
mustache (1.1.1)
nanaimo (0.3.0) nanaimo (0.3.0)
nap (1.1.0) nap (1.1.0)
naturally (2.2.1) naturally (2.2.1)
netrc (0.11.0) netrc (0.11.0)
optparse (0.4.0) os (1.1.1)
os (1.1.4) plist (3.6.0)
plist (3.7.1) public_suffix (4.0.6)
public_suffix (5.0.4) rake (13.0.3)
rake (13.1.0) representable (3.0.4)
representable (3.2.0)
declarative (< 0.1.0) declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0) declarative-option (< 0.2.0)
uber (< 0.2.0) uber (< 0.2.0)
retriable (3.1.2) retriable (3.1.2)
rexml (3.2.6) rexml (3.2.4)
rouge (2.0.7) rouge (2.0.7)
ruby-macho (1.4.0) ruby-macho (1.4.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.4)
rubyzip (2.3.2) rubyzip (2.3.0)
security (0.1.3) security (0.1.3)
signet (0.18.0) signet (0.14.0)
addressable (~> 2.8) addressable (~> 2.3)
faraday (>= 0.17.5, < 3.a) faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0) jwt (>= 1.5, < 3.0)
multi_json (~> 1.10) multi_json (~> 1.10)
simctl (1.6.10) simctl (1.6.8)
CFPropertyList CFPropertyList
naturally naturally
slack-notifier (2.3.2)
terminal-notifier (2.0.0) terminal-notifier (2.0.0)
terminal-table (3.0.2) terminal-table (1.4.5)
unicode-display_width (>= 1.1.1, < 3) thor (0.19.1)
thread_safe (0.3.6) thread_safe (0.3.6)
trailblazer-option (0.1.2)
tty-cursor (0.7.1) tty-cursor (0.7.1)
tty-screen (0.8.2) tty-screen (0.8.1)
tty-spinner (0.9.3) tty-spinner (0.9.3)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
typhoeus (1.4.0) typhoeus (1.4.0)
@ -266,18 +260,16 @@ GEM
tzinfo (1.2.9) tzinfo (1.2.9)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uber (0.1.0) uber (0.1.0)
unicode-display_width (2.5.0) unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
word_wrap (1.0.0) word_wrap (1.0.0)
xcode-install (2.8.1) xcodeproj (1.19.0)
claide (>= 0.9.1)
fastlane (>= 2.1.0, < 3.0.0)
xcodeproj (1.23.0)
CFPropertyList (>= 2.3.3, < 4.0) CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3) atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0) claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1) colored2 (~> 3.1)
nanaimo (~> 0.3.0) nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0) xcpretty (0.3.0)
rouge (~> 2.0.7) rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1) xcpretty-travis-formatter (1.0.1)
@ -291,8 +283,7 @@ DEPENDENCIES
fastlane fastlane
fastlane-plugin-badge fastlane-plugin-badge
fastlane-plugin-firebase_app_distribution fastlane-plugin-firebase_app_distribution
mustache generamba!
xcode-install
BUNDLED WITH BUNDLED WITH
2.1.4 2.1.4

View File

@ -1 +0,0 @@
build-scripts/xcode/bootstrap/Makefile

@ -1 +1 @@
Subproject commit 1160ea63208efb777d91a2c19b3307d196ff4a0b Subproject commit 2ac36fbc1b190b229d906d28ba23390f55fab335

View File

@ -15,12 +15,12 @@ targets:
types: types:
development: development:
apple_id: "iosdev@touchin.ru" apple_id: "apple@touchin.ru"
team_id: "D4HA43V467" team_id: "D4HA43V467"
enterprise: enterprise:
apple_id: "enterpriseapple@touchin.ru" apple_id: "enterpriseapple@touchin.ru"
team_id: "**********" team_id: "**********"
appstore: appstore:
apple_id: "iosdev@touchin.ru" apple_id: "apple@touchin.ru"
team_id: "D4HA43V467" team_id: "D4HA43V467"
itc_team_id: "1426360" itc_team_id: "1426360"

View File

@ -3,23 +3,35 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 51; objectVersion = 52;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
3400B87893AA2CBDF5E3FB8C /* Pods_testapp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CEF4CC413320F5A9AC9F4AD /* Pods_testapp.framework */; }; 3400B87893AA2CBDF5E3FB8C /* Pods_testapp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CEF4CC413320F5A9AC9F4AD /* Pods_testapp.framework */; };
4C520A242633FE7D004C4424 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4C520A232633FE7D004C4424 /* GoogleService-Info.plist */; };
4C520A292633FF33004C4424 /* QRCodeReader in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A282633FF33004C4424 /* QRCodeReader */; };
4C520A2D2633FFBF004C4424 /* TISwiftUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A2C2633FFBF004C4424 /* TISwiftUtils */; };
4C520A2F2633FFBF004C4424 /* TIUIKitCore in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A2E2633FFBF004C4424 /* TIUIKitCore */; };
4C520A312633FFBF004C4424 /* TIFoundationUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A302633FFBF004C4424 /* TIFoundationUtils */; };
4C520A332633FFBF004C4424 /* TIUIElements in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A322633FFBF004C4424 /* TIUIElements */; };
4C520A362633FFE1004C4424 /* CardScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C520A352633FFE1004C4424 /* CardScanner.swift */; };
4C520A3B2634007D004C4424 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A3A2634007D004C4424 /* SnapKit */; };
4C520A3E263401A9004C4424 /* Images.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C520A3D263401A9004C4424 /* Images.swift */; };
4C520A4726340555004C4424 /* Reg in Frameworks */ = {isa = PBXBuildFile; productRef = 4C520A4626340555004C4424 /* Reg */; };
4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA819243116E2009937F6 /* AppDelegate.swift */; }; 4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA819243116E2009937F6 /* AppDelegate.swift */; };
4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */; }; 4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */; };
4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81D243116E2009937F6 /* ViewController.swift */; }; 4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA81D243116E2009937F6 /* ViewController.swift */; };
4CEDA821243116E2009937F6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA81F243116E2009937F6 /* Main.storyboard */; }; 4CEDA821243116E2009937F6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA81F243116E2009937F6 /* Main.storyboard */; };
4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA822243116E4009937F6 /* Assets.xcassets */; }; 4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA822243116E4009937F6 /* Assets.xcassets */; };
4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA824243116E4009937F6 /* LaunchScreen.storyboard */; }; 4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA824243116E4009937F6 /* LaunchScreen.storyboard */; };
4CEDA82E24311BB7009937F6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */; };
4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */; }; 4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
1A298113541BC1F2C4C002E5 /* Pods-testapp.appstore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testapp.appstore.xcconfig"; path = "Target Support Files/Pods-testapp/Pods-testapp.appstore.xcconfig"; sourceTree = "<group>"; }; 1A298113541BC1F2C4C002E5 /* Pods-testapp.appstore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testapp.appstore.xcconfig"; path = "Target Support Files/Pods-testapp/Pods-testapp.appstore.xcconfig"; sourceTree = "<group>"; };
4C520A232633FE7D004C4424 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
4C520A352633FFE1004C4424 /* CardScanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardScanner.swift; sourceTree = "<group>"; };
4C520A3D263401A9004C4424 /* Images.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Images.swift; sourceTree = "<group>"; };
4CEDA816243116E2009937F6 /* testapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testapp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4CEDA816243116E2009937F6 /* testapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testapp.app; sourceTree = BUILT_PRODUCTS_DIR; };
4CEDA819243116E2009937F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 4CEDA819243116E2009937F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
4CEDA81B243116E2009937F6 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; 4CEDA81B243116E2009937F6 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
@ -28,7 +40,6 @@
4CEDA822243116E4009937F6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 4CEDA822243116E4009937F6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
4CEDA825243116E4009937F6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 4CEDA825243116E4009937F6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
4CEDA827243116E4009937F6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 4CEDA827243116E4009937F6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseConfigurator.swift; sourceTree = "<group>"; }; 4CEDA83124311D39009937F6 /* FirebaseConfigurator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseConfigurator.swift; sourceTree = "<group>"; };
78341F7625BEA2BE0045D4D3 /* AppStore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AppStore.entitlements; sourceTree = "<group>"; }; 78341F7625BEA2BE0045D4D3 /* AppStore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AppStore.entitlements; sourceTree = "<group>"; };
78341F7725BEA2BE0045D4D3 /* Enterprise.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Enterprise.entitlements; sourceTree = "<group>"; }; 78341F7725BEA2BE0045D4D3 /* Enterprise.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Enterprise.entitlements; sourceTree = "<group>"; };
@ -62,7 +73,14 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4C520A2D2633FFBF004C4424 /* TISwiftUtils in Frameworks */,
4C520A4726340555004C4424 /* Reg in Frameworks */,
3400B87893AA2CBDF5E3FB8C /* Pods_testapp.framework in Frameworks */, 3400B87893AA2CBDF5E3FB8C /* Pods_testapp.framework in Frameworks */,
4C520A312633FFBF004C4424 /* TIFoundationUtils in Frameworks */,
4C520A3B2634007D004C4424 /* SnapKit in Frameworks */,
4C520A292633FF33004C4424 /* QRCodeReader in Frameworks */,
4C520A332633FFBF004C4424 /* TIUIElements in Frameworks */,
4C520A2F2633FFBF004C4424 /* TIUIKitCore in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -103,6 +121,8 @@
78341F7625BEA2BE0045D4D3 /* AppStore.entitlements */, 78341F7625BEA2BE0045D4D3 /* AppStore.entitlements */,
78341F7725BEA2BE0045D4D3 /* Enterprise.entitlements */, 78341F7725BEA2BE0045D4D3 /* Enterprise.entitlements */,
78341F7825BEA2BE0045D4D3 /* Standard.entitlements */, 78341F7825BEA2BE0045D4D3 /* Standard.entitlements */,
4C520A352633FFE1004C4424 /* CardScanner.swift */,
4C520A3D263401A9004C4424 /* Images.swift */,
); );
path = testapp; path = testapp;
sourceTree = "<group>"; sourceTree = "<group>";
@ -110,7 +130,7 @@
4CEDA82F24311BC0009937F6 /* Resources */ = { 4CEDA82F24311BC0009937F6 /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4CEDA82D24311BB7009937F6 /* GoogleService-Info.plist */, 4C520A232633FE7D004C4424 /* GoogleService-Info.plist */,
); );
path = Resources; path = Resources;
sourceTree = "<group>"; sourceTree = "<group>";
@ -177,6 +197,15 @@
dependencies = ( dependencies = (
); );
name = testapp; name = testapp;
packageProductDependencies = (
4C520A282633FF33004C4424 /* QRCodeReader */,
4C520A2C2633FFBF004C4424 /* TISwiftUtils */,
4C520A2E2633FFBF004C4424 /* TIUIKitCore */,
4C520A302633FFBF004C4424 /* TIFoundationUtils */,
4C520A322633FFBF004C4424 /* TIUIElements */,
4C520A3A2634007D004C4424 /* SnapKit */,
4C520A4626340555004C4424 /* Reg */,
);
productName = testapp; productName = testapp;
productReference = 4CEDA816243116E2009937F6 /* testapp.app */; productReference = 4CEDA816243116E2009937F6 /* testapp.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
@ -205,6 +234,12 @@
Base, Base,
); );
mainGroup = 4CEDA80D243116E1009937F6; mainGroup = 4CEDA80D243116E1009937F6;
packageReferences = (
4C520A272633FF33004C4424 /* XCRemoteSwiftPackageReference "QRCodeReader-ios" */,
4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */,
4C520A392634007D004C4424 /* XCRemoteSwiftPackageReference "SnapKit" */,
4C520A4526340555004C4424 /* XCRemoteSwiftPackageReference "Reg" */,
);
productRefGroup = 4CEDA817243116E2009937F6 /* Products */; productRefGroup = 4CEDA817243116E2009937F6 /* Products */;
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
@ -220,9 +255,9 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */, 4CEDA826243116E4009937F6 /* LaunchScreen.storyboard in Resources */,
4CEDA82E24311BB7009937F6 /* GoogleService-Info.plist in Resources */,
4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */, 4CEDA823243116E4009937F6 /* Assets.xcassets in Resources */,
4CEDA821243116E2009937F6 /* Main.storyboard in Resources */, 4CEDA821243116E2009937F6 /* Main.storyboard in Resources */,
4C520A242633FE7D004C4424 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -276,9 +311,11 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */, 4CEDA81E243116E2009937F6 /* ViewController.swift in Sources */,
4C520A3E263401A9004C4424 /* Images.swift in Sources */,
4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */, 4CEDA83224311D39009937F6 /* FirebaseConfigurator.swift in Sources */,
4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */, 4CEDA81A243116E2009937F6 /* AppDelegate.swift in Sources */,
4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */, 4CEDA81C243116E2009937F6 /* SceneDelegate.swift in Sources */,
4C520A362633FFE1004C4424 /* CardScanner.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -426,6 +463,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = testapp/Info.plist; INFOPLIST_FILE = testapp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -442,6 +480,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = testapp/Info.plist; INFOPLIST_FILE = testapp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -513,6 +552,7 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = testapp/Info.plist; INFOPLIST_FILE = testapp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -547,6 +587,79 @@
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
/* End XCConfigurationList section */ /* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
4C520A272633FF33004C4424 /* XCRemoteSwiftPackageReference "QRCodeReader-ios" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/TouchInstinct/QRCodeReader-ios";
requirement = {
branch = feature/card_scan;
kind = branch;
};
};
4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/TouchInstinct/LeadKit";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.1.1;
};
};
4C520A392634007D004C4424 /* XCRemoteSwiftPackageReference "SnapKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/SnapKit/SnapKit";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.0.1;
};
};
4C520A4526340555004C4424 /* XCRemoteSwiftPackageReference "Reg" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/yhkaplan/Reg.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.3.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
4C520A282633FF33004C4424 /* QRCodeReader */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A272633FF33004C4424 /* XCRemoteSwiftPackageReference "QRCodeReader-ios" */;
productName = QRCodeReader;
};
4C520A2C2633FFBF004C4424 /* TISwiftUtils */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */;
productName = TISwiftUtils;
};
4C520A2E2633FFBF004C4424 /* TIUIKitCore */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */;
productName = TIUIKitCore;
};
4C520A302633FFBF004C4424 /* TIFoundationUtils */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */;
productName = TIFoundationUtils;
};
4C520A322633FFBF004C4424 /* TIUIElements */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A2B2633FFBF004C4424 /* XCRemoteSwiftPackageReference "LeadKit" */;
productName = TIUIElements;
};
4C520A3A2634007D004C4424 /* SnapKit */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A392634007D004C4424 /* XCRemoteSwiftPackageReference "SnapKit" */;
productName = SnapKit;
};
4C520A4626340555004C4424 /* Reg */ = {
isa = XCSwiftPackageProductDependency;
package = 4C520A4526340555004C4424 /* XCRemoteSwiftPackageReference "Reg" */;
productName = Reg;
};
/* End XCSwiftPackageProductDependency section */
}; };
rootObject = 4CEDA80E243116E1009937F6 /* Project object */; rootObject = 4CEDA80E243116E1009937F6 /* Project object */;
} }

View File

@ -0,0 +1,52 @@
{
"object": {
"pins": [
{
"package": "LeadKit",
"repositoryURL": "https://github.com/TouchInstinct/LeadKit",
"state": {
"branch": null,
"revision": "e86dcc81f9d5cf802ea7e1941326f8c24fcb2a15",
"version": "1.1.1"
}
},
{
"package": "QRCodeReader",
"repositoryURL": "https://github.com/TouchInstinct/QRCodeReader-ios",
"state": {
"branch": "feature/card_scan",
"revision": "ba9d3501198aa0a1d6d369d79ca41c8d4057ab0d",
"version": null
}
},
{
"package": "Reg",
"repositoryURL": "https://github.com/yhkaplan/Reg.git",
"state": {
"branch": null,
"revision": "c8f1f51bc088708b3b3ecf04523b5bedd6914222",
"version": "0.3.0"
}
},
{
"package": "SnapKit",
"repositoryURL": "https://github.com/SnapKit/SnapKit",
"state": {
"branch": null,
"revision": "d458564516e5676af9c70b4f4b2a9178294f1bc6",
"version": "5.0.1"
}
},
{
"package": "TableKit",
"repositoryURL": "https://github.com/maxsokolov/TableKit.git",
"state": {
"branch": null,
"revision": "8bf4840d9d0475a92352f02f368f88b74eced447",
"version": "2.11.0"
}
}
]
},
"version": 1
}

View File

@ -1,6 +1,6 @@
{ {
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "corners.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,155 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 300.000000 176.000000 cm
0.917647 0.254902 0.498039 scn
40.000000 43.000000 m
43.000000 43.000000 l
43.000000 46.000000 l
40.000000 46.000000 l
40.000000 43.000000 l
h
0.000000 40.000000 m
40.000000 40.000000 l
40.000000 46.000000 l
0.000000 46.000000 l
0.000000 40.000000 l
h
37.000000 43.000000 m
37.000000 3.000000 l
43.000000 3.000000 l
43.000000 43.000000 l
37.000000 43.000000 l
h
f
n
Q
q
-1.000000 -0.000000 -0.000000 1.000000 43.000000 176.000000 cm
0.917647 0.254902 0.498039 scn
40.000000 43.000000 m
43.000000 43.000000 l
43.000000 46.000000 l
40.000000 46.000000 l
40.000000 43.000000 l
h
0.000000 40.000000 m
40.000000 40.000000 l
40.000000 46.000000 l
0.000000 46.000000 l
0.000000 40.000000 l
h
37.000000 43.000000 m
37.000000 3.000000 l
43.000000 3.000000 l
43.000000 43.000000 l
37.000000 43.000000 l
h
f
n
Q
q
1.000000 0.000000 -0.000000 -1.000000 300.000000 46.000000 cm
0.917647 0.254902 0.498039 scn
40.000000 43.000000 m
43.000000 43.000000 l
43.000000 46.000000 l
40.000000 46.000000 l
40.000000 43.000000 l
h
0.000000 40.000000 m
40.000000 40.000000 l
40.000000 46.000000 l
0.000000 46.000000 l
0.000000 40.000000 l
h
37.000000 43.000000 m
37.000000 3.000000 l
43.000000 3.000000 l
43.000000 43.000000 l
37.000000 43.000000 l
h
f
n
Q
q
-1.000000 -0.000000 -0.000000 -1.000000 43.000000 46.000000 cm
0.917647 0.254902 0.498039 scn
40.000000 43.000000 m
43.000000 43.000000 l
43.000000 46.000000 l
40.000000 46.000000 l
40.000000 43.000000 l
h
0.000000 40.000000 m
40.000000 40.000000 l
40.000000 46.000000 l
0.000000 46.000000 l
0.000000 40.000000 l
h
37.000000 43.000000 m
37.000000 3.000000 l
43.000000 3.000000 l
43.000000 43.000000 l
37.000000 43.000000 l
h
f
n
Q
endstream
endobj
3 0 obj
1758
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 343.000000 222.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001848 00000 n
0000001871 00000 n
0000002046 00000 n
0000002120 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
2179
%%EOF

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "light-disable.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,107 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 5.511230 1.697998 cm
1.000000 1.000000 1.000000 scn
8.937988 15.096902 m
10.285645 13.739480 l
14.191895 13.739480 l
14.191895 13.680886 l
12.385254 11.346902 l
13.801270 9.930886 l
16.408691 13.280496 l
17.404785 14.550027 16.994629 15.702371 15.598145 15.702371 c
11.164551 15.702371 l
12.199707 22.352762 l
12.404785 23.807840 10.773926 24.325418 9.924316 23.270731 c
5.715332 17.967995 l
7.092285 16.591042 l
9.885254 20.155497 l
9.992676 20.135965 l
8.937988 15.096902 l
h
0.227051 19.452370 m
15.598145 4.091043 l
15.910645 3.788309 16.428223 3.778543 16.730957 4.091043 c
17.043457 4.393778 17.043457 4.911356 16.730957 5.223856 c
1.369629 20.575418 l
1.057129 20.887918 0.529785 20.887918 0.227051 20.575418 c
-0.075684 20.272684 -0.075684 19.755104 0.227051 19.452370 c
h
11.232910 6.688700 m
9.865723 8.065652 l
7.170410 4.667215 l
7.053223 4.686747 l
8.117676 9.735574 l
6.779785 11.083230 l
2.863770 11.083230 l
2.863770 11.141824 l
4.572754 13.348855 l
3.156738 14.774636 l
0.627441 11.542214 l
-0.378418 10.262918 0.041504 9.120339 1.437988 9.120339 c
5.871582 9.120339 l
4.836426 2.469950 l
4.621582 1.014872 6.252441 0.497293 7.111816 1.561747 c
11.232910 6.688700 l
h
f
n
Q
endstream
endobj
3 0 obj
1258
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 28.000000 28.000000 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000001348 00000 n
0000001371 00000 n
0000001544 00000 n
0000001618 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1677
%%EOF

View File

@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "lightning.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,91 @@
%PDF-1.7
1 0 obj
<< >>
endobj
2 0 obj
<< /Length 3 0 R >>
stream
/DeviceRGB CS
/DeviceRGB cs
q
1.000000 0.000000 -0.000000 1.000000 0.000000 -1.143311 cm
1.000000 1.000000 1.000000 scn
7.081509 1.780159 m
16.349087 13.459846 l
17.354946 14.719612 16.925259 15.881721 15.538541 15.881721 c
11.095181 15.881721 l
12.130338 22.532112 l
12.335416 23.987190 10.821744 24.651253 9.854947 23.450081 c
0.558072 11.721565 l
-0.457553 10.452034 -0.027866 9.299690 1.368619 9.299690 c
5.811978 9.299690 l
4.776822 2.649300 l
4.571743 1.194221 6.114712 0.578987 7.081509 1.780159 c
h
6.983853 4.856331 m
8.145963 10.647346 l
8.233853 11.008675 8.126431 11.262581 7.716275 11.262581 c
2.784634 11.262581 l
2.784634 11.311409 l
9.815885 20.334846 l
9.933072 20.334846 l
8.761197 14.534065 l
8.673306 14.172737 8.780728 13.918831 9.181119 13.918831 c
14.112760 13.918831 l
14.112760 13.870003 l
7.101040 4.856331 l
6.983853 4.856331 l
h
f
n
Q
endstream
endobj
3 0 obj
863
endobj
4 0 obj
<< /Annots []
/Type /Page
/MediaBox [ 0.000000 0.000000 16.900391 22.928955 ]
/Resources 1 0 R
/Contents 2 0 R
/Parent 5 0 R
>>
endobj
5 0 obj
<< /Kids [ 4 0 R ]
/Count 1
/Type /Pages
>>
endobj
6 0 obj
<< /Type /Catalog
/Pages 5 0 R
>>
endobj
xref
0 7
0000000000 65535 f
0000000010 00000 n
0000000034 00000 n
0000000953 00000 n
0000000975 00000 n
0000001148 00000 n
0000001222 00000 n
trailer
<< /ID [ (some) (id) ]
/Root 6 0 R
/Size 7
>>
startxref
1281
%%EOF

107
testapp/CardScanner.swift Normal file
View File

@ -0,0 +1,107 @@
//
// CardScanner.swift
// testapp
//
// Created by Vlad Suhomlinov on 24.04.2021.
// Copyright © 2021 touchin. All rights reserved.
//
import TIUIElements
import QRCodeReader
import UIKit
import SnapKit
final class CardScanner: BaseInitializableView {
private let titleLabel = UILabel()
private let qrEdgeIconView = UIImageView(image: .corners)
private let focusView: FocusView = .init(cornerColor: .init(red: 234 / 255,
green: 65 / 255,
blue: 127 / 255,
alpha: 1),
cornerLength: 40,
cornerThickness: 6)
let scannerView = CardReaderView()
let flashlightButton = UIButton()
// MARK: - Configurable View
override func configureAppearance() {
super.configureAppearance()
backgroundColor = .black
titleLabel.textColor = .white
titleLabel.textAlignment = .center
titleLabel.numberOfLines = 0
updateFlashlightButtonAppearance(isTorchEnabled: false)
qrEdgeIconView.isHidden = true
}
override func addViews() {
super.addViews()
addSubviews(scannerView, titleLabel, flashlightButton)
qrEdgeIconView.addSubview(focusView)
scannerView.overlay.addSubview(qrEdgeIconView)
scannerView.overlay.focusView = focusView
}
override func configureLayout() {
super.configureLayout()
scannerView.snp.makeConstraints {
$0.edges.equalToSuperview()
}
qrEdgeIconView.snp.makeConstraints {
$0.center.equalToSuperview()
$0.left.right.equalToSuperview().inset(16)
$0.height.equalTo(qrEdgeIconView.snp.width).multipliedBy(0.64)
}
focusView.snp.makeConstraints {
$0.edges.equalToSuperview()
}
titleLabel.snp.makeConstraints {
$0.top.equalTo(qrEdgeIconView.snp.bottom).offset(28)
$0.centerX.equalToSuperview()
$0.left.right.equalToSuperview().inset(32)
}
flashlightButton.snp.makeConstraints {
$0.top.trailing.equalTo(safeAreaLayoutGuide).inset(16)
$0.size.equalTo(CGFloat.topButtonSize)
}
}
func updateFlashlightButtonAppearance(isTorchEnabled: Bool) {
flashlightButton.setImage(isTorchEnabled ? .lightOff : .lightOn, for: .normal)
}
override func localize() {
super.localize()
titleLabel.text = "Обязательно проверяйте номер карты после распознавания"
}
}
// MARK: - Constants
private extension CGFloat {
static let topButtonSize: CGFloat = 28
}
extension FocusView {
static let empty = FocusView(cornerColor: .clear,
cornerLength: 0,
cornerThickness: 0)
}

24
testapp/Images.swift Normal file
View File

@ -0,0 +1,24 @@
//
// Images.swift
// testapp
//
// Created by Vlad Suhomlinov on 24.04.2021.
// Copyright © 2021 touchin. All rights reserved.
//
import UIKit
extension UIImage {
static var lightOn: UIImage {
#imageLiteral(resourceName: "lightning.pdf")
}
static var lightOff: UIImage {
#imageLiteral(resourceName: "light-disable")
}
static var corners: UIImage {
#imageLiteral(resourceName: "corners")
}
}

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>NSCameraUsageDescription</key>
<string>Ну пожалуйста</string>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>

View File

@ -3,21 +3,21 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CLIENT_ID</key> <key>CLIENT_ID</key>
<string>1009875821676-2s1d4tjn9dojsp3ao31cicm174mjehc5.apps.googleusercontent.com</string> <string>1084813714260-7qto2ituvflo73h8r2fttf0u6s0nc27h.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key> <key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.1009875821676-2s1d4tjn9dojsp3ao31cicm174mjehc5</string> <string>com.googleusercontent.apps.1084813714260-7qto2ituvflo73h8r2fttf0u6s0nc27h</string>
<key>API_KEY</key> <key>API_KEY</key>
<string>AIzaSyDSUnGsmBO5kvfTeVDJywsyigcqqWSmuzY</string> <string>AIzaSyBoYUwnZcWY_mxIAO1cxyrKlbW2ta67cQ8</string>
<key>GCM_SENDER_ID</key> <key>GCM_SENDER_ID</key>
<string>1009875821676</string> <string>1084813714260</string>
<key>PLIST_VERSION</key> <key>PLIST_VERSION</key>
<string>1</string> <string>1</string>
<key>BUNDLE_ID</key> <key>BUNDLE_ID</key>
<string>ru.touchin.testapp</string> <string>ru.touchin.testapp</string>
<key>PROJECT_ID</key> <key>PROJECT_ID</key>
<string>ti-testapp</string> <string>testproject-ac7fe</string>
<key>STORAGE_BUCKET</key> <key>STORAGE_BUCKET</key>
<string>ti-testapp.appspot.com</string> <string>testproject-ac7fe.appspot.com</string>
<key>IS_ADS_ENABLED</key> <key>IS_ADS_ENABLED</key>
<false></false> <false></false>
<key>IS_ANALYTICS_ENABLED</key> <key>IS_ANALYTICS_ENABLED</key>
@ -29,8 +29,8 @@
<key>IS_SIGNIN_ENABLED</key> <key>IS_SIGNIN_ENABLED</key>
<true></true> <true></true>
<key>GOOGLE_APP_ID</key> <key>GOOGLE_APP_ID</key>
<string>1:1009875821676:ios:3b95cafada68fd3a07a449</string> <string>1:1084813714260:ios:096f9bb10bb971c6255ec1</string>
<key>DATABASE_URL</key> <key>DATABASE_URL</key>
<string>https://ti-testapp.firebaseio.com</string> <string>https://testproject-ac7fe.firebaseio.com</string>
</dict> </dict>
</plist> </plist>

View File

@ -7,15 +7,127 @@
// //
import UIKit import UIKit
import QRCodeReader
import Reg
import SnapKit
class ViewController: UIViewController { class ViewController: UIViewController {
let cardScanner = CardReader(factory: CardFactoryImpl(), onUpdateRectOfInterest: nil)
let cardScannerView = CardScanner()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(cardScannerView)
cardScanner.stopScanningWhenCodeIsFound = true
cardScannerView.scannerView.setReader(cardScanner)
cardScannerView.snp.makeConstraints {
$0.edges.equalToSuperview()
}
cardScanner.didFind = { [weak self] in
self?.handleResult(card: $0)
}
cardScannerView.flashlightButton.addTarget(self, action: #selector(toggleFlashlightAction), for: .touchUpInside)
} }
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
cardScanner.startScanning()
cardScannerView.layoutSubviews()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
cardScanner.stopScanning()
}
@objc private func toggleFlashlightAction() {
cardScanner.isTorchEnabled.toggle()
cardScannerView.updateFlashlightButtonAppearance(isTorchEnabled: cardScanner.isTorchEnabled)
}
private func handleResult(card: Card) {
let alert = UIAlertController(title: "Номер карты", message: card.number, preferredStyle: .alert)
let actionTrue = UIAlertAction(title: "Верно", style: .default, handler: { [weak self] _ in
self?.cardScanner.startScanning()
})
let actionErrors = UIAlertAction(title: "С ошибками", style: .default, handler: { [weak self] _ in
self?.cardScanner.startScanning()
})
let actionRetake = UIAlertAction(title: "Переделать", style: .default, handler: { [weak self] _ in
self?.cardScanner.startScanning()
})
alert.addAction(actionTrue)
alert.addAction(actionErrors)
alert.addAction(actionRetake)
present(alert, animated: true, completion: nil)
}
} }
final class CardFactoryImpl: CardFactory {
let creditCardNumber: Regex = #"(?:\d[ -]*?){13,16}"#
func create(_ values: [String]) -> Card? {
values.map {
$0.replacingOccurrences(of: " ", with: "")
.replacingOccurrences(of: "-", with: "")
}
.first {
$0.count >= 15 && $0.count <= 19 && $0.isOnlyNumbers
}
.map { $0.inserting(separator: " ", every: 4) }
.map { Card(number: $0) }
}
}
private extension String {
var isOnlyNumbers: Bool {
return !isEmpty && range(of: "[^0-9]", options: .regularExpression) == nil
}
}
extension Collection {
func unfoldSubSequences(limitedTo maxLength: Int) -> UnfoldSequence<SubSequence,Index> {
sequence(state: startIndex) { start in
guard start < self.endIndex else { return nil }
let end = self.index(start, offsetBy: maxLength, limitedBy: self.endIndex) ?? self.endIndex
defer { start = end }
return self[start..<end]
}
}
func every(n: Int) -> UnfoldSequence<Element,Index> {
sequence(state: startIndex) { index in
guard index < endIndex else { return nil }
defer { index = self.index(index, offsetBy: n, limitedBy: endIndex) ?? endIndex }
return self[index]
}
}
var pairs: [SubSequence] { .init(unfoldSubSequences(limitedTo: 2)) }
}
extension StringProtocol where Self: RangeReplaceableCollection {
mutating func insert<S: StringProtocol>(separator: S, every n: Int) {
for index in indices.every(n: n).dropFirst().reversed() {
insert(contentsOf: separator, at: index)
}
}
func inserting<S: StringProtocol>(separator: S, every n: Int) -> Self {
.init(unfoldSubSequences(limitedTo: n).joined(separator: separator))
}
}