├── .bowerrc ├── .circleci └── config.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── appconfig.default.json ├── appconfig.example.json ├── bower.json ├── docker ├── Dockerfile ├── nginx.conf └── nginx.site.conf ├── docs └── anti-clickjacking │ └── clickjacking.html ├── gulp ├── buildappconfig.js ├── readappconfig.js ├── sri.js └── streamaspromise.js ├── gulpfile.js ├── karma.config.js ├── package.json ├── scripts ├── OSS │ ├── .gitignore │ ├── oss │ │ ├── __init__.py │ │ ├── oss_api.py │ │ ├── oss_sample.py │ │ ├── oss_util.py │ │ ├── oss_xml_handler.py │ │ └── pkg_info.py │ ├── osscmd │ └── setup.py ├── delete_version_from_oss.sh └── upload_to_oss.sh ├── src ├── config.js.template ├── demo.html ├── favicon.ico ├── font │ ├── LICENSE-Lato │ ├── Lato-Bold.woff │ ├── Lato-Bold.woff2 │ ├── Lato-Light.woff │ ├── Lato-Light.woff2 │ ├── Lato-Regular.woff │ ├── Lato-Regular.woff2 │ ├── Neo-Sans-Pro-Bold.ttf │ ├── Neo-Sans-Pro-Medium.ttf │ ├── Neo-Sans-Pro.ttf │ ├── Open-Sans-300.woff │ ├── Open-Sans-400.woff │ ├── Open-Sans-600.woff │ ├── Open-Sans-700.woff │ ├── Roboto-400.woff2 │ └── Roboto-700.woff2 ├── fontello │ ├── config.json │ ├── css │ │ └── _fontello.scss │ └── font │ │ ├── fontello.eot │ │ ├── fontello.svg │ │ ├── fontello.ttf │ │ ├── fontello.woff │ │ └── fontello.woff2 ├── img │ ├── android.png │ ├── appscreen.jpg │ ├── banner-bg.jpg │ ├── bitonic-logo.png │ ├── blank_profile.png │ ├── btc-home-banner.png │ ├── btc-perspective-screen-transparent.png │ ├── btc-showcase-devices.png │ ├── glidera-bright.png │ ├── home-bitcoin-icon.png │ ├── home-key-icon.png │ ├── home-qr-icon.png │ ├── homepage_img.jpg │ ├── ios.png │ ├── logo-btc-reverse.png │ ├── logo-btc.png │ ├── logo-btc2.png │ ├── multidevice.png │ ├── qr-code@2x.png │ ├── simplex-logo.png │ └── wallet3d.png ├── index.html ├── js │ ├── app.js │ ├── modules │ │ ├── core │ │ │ ├── configs │ │ │ │ └── localisation │ │ │ │ │ └── localisation.config.js │ │ │ ├── constants │ │ │ │ └── third-party-libraries │ │ │ │ │ └── third-party-libraries.constant.js │ │ │ ├── controllers │ │ │ │ ├── dialog-alert-modal │ │ │ │ │ ├── dialog-alert-modal.ctrl.js │ │ │ │ │ └── dialog-alert-modal.tpl.html │ │ │ │ ├── dialog-prompt-modal │ │ │ │ │ ├── dialog-prompt-modal.ctrl.js │ │ │ │ │ └── dialog-prompt-modal.tpl.html │ │ │ │ ├── dialog-spinner-modal │ │ │ │ │ ├── dialog-spinner-modal.ctrl.js │ │ │ │ │ └── dialog-spinner-modal.tpl.html │ │ │ │ └── verify-email │ │ │ │ │ └── verify-email.ctrl.js │ │ │ ├── directives │ │ │ │ ├── app-wrapper │ │ │ │ │ ├── app-wrapper.directive.js │ │ │ │ │ └── app-wrapper.tpl.html │ │ │ │ ├── btn-file-data │ │ │ │ │ ├── btn-file-data.directive.js │ │ │ │ │ └── btn-file-data.tpl.html │ │ │ │ ├── caps-on │ │ │ │ │ └── caps-on.directive.js │ │ │ │ ├── click-anywhere-but-here │ │ │ │ │ └── click-anywhere-but-here.directive.js │ │ │ │ ├── loading-spinner │ │ │ │ │ └── loading-spinner.directive.js │ │ │ │ ├── navbar │ │ │ │ │ └── navbar.tpl.html │ │ │ │ ├── network-custom-select │ │ │ │ │ ├── network-custom-select.js │ │ │ │ │ └── network-custom-select.tpl.html │ │ │ │ ├── top-header │ │ │ │ │ ├── top-header.directive.js │ │ │ │ │ └── top-header.tpl.html │ │ │ │ └── wallet-email-verified │ │ │ │ │ ├── wallet-email-verified.directive.js │ │ │ │ │ └── wallet-email-verified.tpl.html │ │ │ ├── filters │ │ │ │ ├── bip39en │ │ │ │ │ └── bip39en.filter.js │ │ │ │ ├── characters │ │ │ │ │ └── characters.filter.js │ │ │ │ ├── confirmations │ │ │ │ │ └── confirmations.filter.js │ │ │ │ ├── contact-initials │ │ │ │ │ └── contact-initials.filter.js │ │ │ │ ├── displayaddr │ │ │ │ │ └── displayaddr.filter.js │ │ │ │ ├── duration │ │ │ │ │ └── duration.filter.js │ │ │ │ ├── language-name │ │ │ │ │ └── language-name.filter.js │ │ │ │ ├── math-abs │ │ │ │ │ └── math-abs.filter.js │ │ │ │ ├── nl2br │ │ │ │ │ └── nl2br.filter.js │ │ │ │ ├── satoshi-to-coin │ │ │ │ │ └── satoshi-to-coin.filter.js │ │ │ │ ├── satoshi-to-currency │ │ │ │ │ └── satoshi-to-currency.filter.js │ │ │ │ ├── to-currency-symbol │ │ │ │ │ └── to-currency-symbol.filter.js │ │ │ │ └── to-currency-ticker │ │ │ │ │ └── to-currency-ticker.filter.js │ │ │ ├── module.js │ │ │ └── services │ │ │ │ ├── account-security-service │ │ │ │ └── account-security.service.js │ │ │ │ ├── bitcoin-link │ │ │ │ └── bitcoin-link.service.js │ │ │ │ ├── dialog │ │ │ │ └── dialog.service.js │ │ │ │ ├── global-lock │ │ │ │ └── global-lock.service.js │ │ │ │ ├── localisation │ │ │ │ └── localisation.provider.js │ │ │ │ ├── notifications │ │ │ │ └── notifications.service.js │ │ │ │ ├── password-recovery │ │ │ │ └── password-recovery.service.js │ │ │ │ ├── password-strength │ │ │ │ └── password-strength.service.js │ │ │ │ ├── powtcha │ │ │ │ └── powtcha.service.js │ │ │ │ ├── sdk │ │ │ │ └── sdk.service.js │ │ │ │ ├── settings │ │ │ │ └── settings.service.js │ │ │ │ ├── sweeper │ │ │ │ └── sweeper.service.js │ │ │ │ ├── wallet │ │ │ │ ├── wallet.service.js │ │ │ │ └── wallet.service.spec.js │ │ │ │ └── wallets-manager │ │ │ │ ├── wallets-manager.service.js │ │ │ │ └── wallets-manager.service.spec.js │ │ ├── setup │ │ │ ├── configs │ │ │ │ └── setup-sate │ │ │ │ │ └── setup-state.config.js │ │ │ ├── controllers │ │ │ │ ├── announcement │ │ │ │ │ └── announcement.tpl.html │ │ │ │ ├── banned-ip │ │ │ │ │ ├── banned-ip.ctrl.js │ │ │ │ │ └── banned-ip.tpl.html │ │ │ │ ├── change-password │ │ │ │ │ ├── change-password.ctrl.js │ │ │ │ │ └── change-password.tpl.html │ │ │ │ ├── forgot-password │ │ │ │ │ ├── forgot-password.ctrl.js │ │ │ │ │ └── forgot-password.tpl.html │ │ │ │ ├── loggedout │ │ │ │ │ ├── loggedout.ctrl.js │ │ │ │ │ └── loggedout.tpl.html │ │ │ │ ├── login │ │ │ │ │ ├── login.ctrl.js │ │ │ │ │ └── login.tpl.html │ │ │ │ ├── logout │ │ │ │ │ └── logout.ctrl.js │ │ │ │ ├── lost-lock │ │ │ │ │ ├── lost-lock.ctrl.js │ │ │ │ │ └── lost-lock.tpl.html │ │ │ │ ├── new-account │ │ │ │ │ ├── new-account.ctrl.js │ │ │ │ │ └── new-account.tpl.html │ │ │ │ ├── rebrand │ │ │ │ │ ├── rebrand.ctrl.js │ │ │ │ │ └── rebrand.tpl.html │ │ │ │ ├── verify-email │ │ │ │ │ └── verify-email.tpl.html │ │ │ │ ├── wallet-backup │ │ │ │ │ ├── wallet-backup.ctrl.js │ │ │ │ │ └── wallet-backup.tpl.html │ │ │ │ ├── wallet-init │ │ │ │ │ ├── wallet-init.ctrl.js │ │ │ │ │ └── wallet-init.tpl.html │ │ │ │ └── wrapper │ │ │ │ │ ├── wrapper.ctrl.js │ │ │ │ │ └── wrapper.tpl.html │ │ │ ├── directives │ │ │ │ └── landing-page │ │ │ │ │ ├── landing-page.directive.js │ │ │ │ │ └── landing-page.tpl.html │ │ │ ├── module.js │ │ │ └── services │ │ │ │ ├── login │ │ │ │ └── login.service.js │ │ │ │ └── new-account │ │ │ │ └── new-account.service.js │ │ └── wallet │ │ │ ├── configs │ │ │ └── wallet-states │ │ │ │ └── wallet-states.config.js │ │ │ ├── controllers │ │ │ ├── address-lookup │ │ │ │ ├── address-lookup.ctrl.js │ │ │ │ └── address-lookup.tpl.html │ │ │ ├── bcha-send-replay-protect-modal │ │ │ │ ├── bcha-send-replay-protect-modal.js │ │ │ │ └── bcha-send-replay-protect-modal.tpl.html │ │ │ ├── buy-btc-broker │ │ │ │ ├── buy-btc-broker.ctrl.js │ │ │ │ └── buy-btc-broker.tpl.html │ │ │ ├── buy-btc-choose │ │ │ │ ├── buy-btc-choose.ctrl.js │ │ │ │ └── buy-btc-choose.tpl.html │ │ │ ├── buy-btc-glidera-oauth-callback │ │ │ │ ├── buy-btc-glidera-oauth-callback.ctrl.js │ │ │ │ └── buy-btc-glidera-oauth-callback.tpl.html │ │ │ ├── modal-crop-image │ │ │ │ ├── modal-crop-image.ctrl.js │ │ │ │ └── modal-crop-image.tpl.html │ │ │ ├── payment-uri │ │ │ │ ├── payment-uri.ctrl.js │ │ │ │ └── payment-uri.tpl.html │ │ │ ├── receive │ │ │ │ ├── receive.ctrl.js │ │ │ │ └── receive.tpl.html │ │ │ ├── send-confirm-modal │ │ │ │ ├── send-confirm-modal.ctrl.js │ │ │ │ └── send-confirm-modal.tpl.html │ │ │ ├── send-replay-protect-modal │ │ │ │ ├── send-replay-protect-modal.js │ │ │ │ └── send-replay-protect-modal.tpl.html │ │ │ ├── send │ │ │ │ ├── send.ctrl.js │ │ │ │ └── send.tpl.html │ │ │ ├── settings-profile │ │ │ │ ├── settings.profile.ctrl.js │ │ │ │ └── settings.profile.tpl.html │ │ │ ├── settings-security │ │ │ │ ├── settings.security.ctrl.js │ │ │ │ └── settings.security.tpl.html │ │ │ ├── settings-tools │ │ │ │ ├── settings.tools.ctrl.js │ │ │ │ └── settings.tools.tpl.html │ │ │ ├── settings │ │ │ │ ├── settings.ctrl.js │ │ │ │ └── settings.tpl.html │ │ │ ├── sweep-coins-modal │ │ │ │ ├── sweep-coins-modal.ctrl.js │ │ │ │ └── sweep-coins-modal.tpl.html │ │ │ ├── verify-email │ │ │ │ └── verify-email.tpl.html │ │ │ ├── wallet-summary │ │ │ │ ├── wallet-summary.ctrl.js │ │ │ │ └── wallet-summary.tpl.html │ │ │ ├── wallet-transaction-info-modal │ │ │ │ ├── wallet-transaction-info-modal.ctrl.js │ │ │ │ └── wallet-transaction-info-modal.tpl.html │ │ │ └── wallet │ │ │ │ ├── wallet.ctrl.js │ │ │ │ └── wallet.tpl.html │ │ │ ├── directives │ │ │ ├── app-bcc-fork-warning │ │ │ │ ├── app-bcc-fork-warning.directive.js │ │ │ │ └── app-bcc-fork-warning.tpl.html │ │ │ ├── app-bcc-sweep-warning │ │ │ │ ├── app-bcc-sweep-warning.directive.js │ │ │ │ └── app-bcc-sweep-warning.tpl.html │ │ │ ├── app-bcha-recovery-warning │ │ │ │ ├── app-bcha-recovery-warning.directive.js │ │ │ │ └── app-bcha-recovery-warning.tpl.html │ │ │ ├── app-bsv-recovery-warning │ │ │ │ ├── app-bsv-recovery-warning.directive.js │ │ │ │ └── app-bsv-recovery-warning.tpl.html │ │ │ ├── app-header │ │ │ │ ├── app-header.directive.js │ │ │ │ └── app-header.tpl.html │ │ │ ├── app-two-factor-warning │ │ │ │ ├── app-two-factor-warning.directive.js │ │ │ │ └── app-two-factor-warning.tpl.html │ │ │ ├── social-media-buttons │ │ │ │ ├── social-media-buttons.directive.js │ │ │ │ └── social-media-buttons.tpl.html │ │ │ ├── wallet-app-store-buttons │ │ │ │ ├── wallet-app-store-buttons.directive.js │ │ │ │ └── wallet-app-store-buttons.tpl.html │ │ │ ├── wallet-no-more-transactions │ │ │ │ ├── wallet-no-more-transactions.directive.js │ │ │ │ └── wallet-no-more-transactions.tpl.html │ │ │ ├── wallet-no-transactions │ │ │ │ ├── wallet-no-transactions.directive.js │ │ │ │ └── wallet-no-transactions.tpl.html │ │ │ ├── wallet-security-progress-bar │ │ │ │ ├── wallet-security-progress-bar.directive.js │ │ │ │ └── wallet-security-progress-bar.tpl.html │ │ │ ├── wallet-side-nav │ │ │ │ ├── wallet-side-nav.directive.js │ │ │ │ └── wallet-side-nav.tpl.html │ │ │ ├── wallet-transaction-avatar │ │ │ │ ├── wallet-transaction-avatar.directive.js │ │ │ │ └── wallet-transaction-avatar.tpl.html │ │ │ ├── wallet-transaction-description │ │ │ │ ├── wallet-transaction-description.directive.js │ │ │ │ └── wallet-transaction-description.tpl.html │ │ │ └── wallet-transaction │ │ │ │ ├── wallet-transaction.directive.js │ │ │ │ └── wallet-transaction.tpl.html │ │ │ └── services │ │ │ └── form-settings.service.js │ │ │ └── form-settings.service.js │ └── services │ │ ├── AppVersionService.js │ │ ├── BuyBTCService.js │ │ ├── ContactsService.js │ │ ├── CurrencyServices.js │ │ ├── FormHelper.js │ │ ├── GlideraService.js │ │ ├── LaunchService.js │ │ ├── QRService.js │ │ ├── SetupService.js │ │ ├── SimplexService.js │ │ ├── StorageService.js │ │ └── TrackingService.js ├── lib │ ├── SHA-1 │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── package.json │ │ └── sha1.js │ ├── angular-bootstrap │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── bower.json │ │ ├── index.js │ │ ├── package.json │ │ ├── ui-bootstrap-csp.css │ │ ├── ui-bootstrap-tpls.js │ │ ├── ui-bootstrap-tpls.min.js │ │ ├── ui-bootstrap.js │ │ └── ui-bootstrap.min.js │ ├── angular-moment │ │ ├── .bower.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── angular-moment.js │ │ ├── angular-moment.min.js │ │ ├── angular-moment.min.js.map │ │ ├── angular-moment.nuspec │ │ ├── bower.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ └── tests.js │ ├── angular-qr │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── angular-qr.min.js │ │ ├── bower.json │ │ ├── gulpfile.js │ │ ├── karma.conf.js │ │ ├── lib │ │ │ └── qrcode.js │ │ └── src │ │ │ └── angular-qr.js │ ├── angular-sanitize │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── angular-sanitize.js │ │ ├── angular-sanitize.min.js │ │ ├── angular-sanitize.min.js.map │ │ ├── bower.json │ │ ├── index.js │ │ └── package.json │ ├── angular-toggle-switch │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── angular-toggle-switch-bootstrap.css │ │ ├── angular-toggle-switch-bootstrap.sass │ │ ├── angular-toggle-switch-bootstrap.scss │ │ ├── angular-toggle-switch.css │ │ ├── angular-toggle-switch.js │ │ ├── angular-toggle-switch.min.js │ │ ├── angular-toggle-switch.sass │ │ ├── angular-toggle-switch.scss │ │ ├── bower.json │ │ └── test │ │ │ └── angular-toggle-switch.spec.js │ ├── angular-translate │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-translate.js │ │ ├── angular-translate.min.js │ │ └── bower.json │ ├── angular-ui-router │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── api │ │ │ └── angular-ui-router.d.ts │ │ ├── bower.json │ │ ├── release │ │ │ ├── angular-ui-router.js │ │ │ └── angular-ui-router.min.js │ │ └── src │ │ │ ├── common.js │ │ │ ├── resolve.js │ │ │ ├── state.js │ │ │ ├── stateDirectives.js │ │ │ ├── stateFilters.js │ │ │ ├── templateFactory.js │ │ │ ├── urlMatcherFactory.js │ │ │ ├── urlRouter.js │ │ │ ├── view.js │ │ │ ├── viewDirective.js │ │ │ └── viewScroll.js │ ├── angular │ │ ├── .bower.json │ │ ├── README.md │ │ ├── angular-csp.css │ │ ├── angular.js │ │ ├── angular.min.js │ │ ├── angular.min.js.gzip │ │ ├── angular.min.js.map │ │ ├── bower.json │ │ ├── index.js │ │ └── package.json │ ├── angulartics-google-analytics │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── angulartics-ga.min.js │ │ │ └── angulartics-ga.min.js.map │ │ └── lib │ │ │ └── angulartics-ga.js │ ├── angulartics │ │ ├── .bower.json │ │ ├── .bowerrc │ │ ├── bower.json │ │ ├── dist │ │ │ ├── angulartics-baidu.min.js │ │ │ ├── angulartics-cnzz.min.js │ │ │ ├── angulartics-debug.min.js │ │ │ ├── angulartics-ga-cordova-google-analytics-plugin.min.js │ │ │ ├── angulartics-ga-cordova.min.js │ │ │ ├── angulartics-gosquared.min.js │ │ │ ├── angulartics-gtm-cordova.min.js │ │ │ ├── angulartics-gtm.min.js │ │ │ ├── angulartics-heap.min.js │ │ │ ├── angulartics-hubspot.min.js │ │ │ ├── angulartics-inspectlet.min.js │ │ │ ├── angulartics-intercom.min.js │ │ │ ├── angulartics-loggly.min.js │ │ │ ├── angulartics-marketo.min.js │ │ │ ├── angulartics-newrelic-insights.min.js │ │ │ ├── angulartics-sitespect.min.js │ │ │ ├── angulartics-splunk.min.js │ │ │ ├── angulartics-woopra.min.js │ │ │ ├── angulartics.min.js │ │ │ └── index.min.js │ │ ├── nuget │ │ │ ├── angular.analytics.adobe.nuspec │ │ │ ├── angular.analytics.baidu.nuspec │ │ │ ├── angular.analytics.chartbeat.nuspec │ │ │ ├── angular.analytics.clicky.nuspec │ │ │ ├── angular.analytics.cnzz.nuspec │ │ │ ├── angular.analytics.core.nuspec │ │ │ ├── angular.analytics.debug.nuspec │ │ │ ├── angular.analytics.flurry.nuspec │ │ │ ├── angular.analytics.ga.cordova-google-analytics-plugin.nuspec │ │ │ ├── angular.analytics.ga.cordova.nuspec │ │ │ ├── angular.analytics.ga.nuspec │ │ │ ├── angular.analytics.gtm.nuspec │ │ │ ├── angular.analytics.hubspot.nuspec │ │ │ ├── angular.analytics.intercom.nuspec │ │ │ ├── angular.analytics.kissmetrics.nuspec │ │ │ ├── angular.analytics.localytics.nuspec │ │ │ ├── angular.analytics.loggly.nuspec │ │ │ ├── angular.analytics.marketo.nuspec │ │ │ ├── angular.analytics.mixpanel.nuspec │ │ │ ├── angular.analytics.piwik.nuspec │ │ │ ├── angular.analytics.scroll.nuspec │ │ │ ├── angular.analytics.segmentio.nuspec │ │ │ ├── angular.analytics.splunk.nuspec │ │ │ └── angular.analytics.woopra.nuspec │ │ └── src │ │ │ ├── angulartics-baidu.js │ │ │ ├── angulartics-cnzz.js │ │ │ ├── angulartics-debug.js │ │ │ ├── angulartics-ga-cordova-google-analytics-plugin.js │ │ │ ├── angulartics-ga-cordova.js │ │ │ ├── angulartics-gosquared.js │ │ │ ├── angulartics-gtm-cordova.js │ │ │ ├── angulartics-gtm.js │ │ │ ├── angulartics-heap.js │ │ │ ├── angulartics-hubspot.js │ │ │ ├── angulartics-inspectlet.js │ │ │ ├── angulartics-intercom.js │ │ │ ├── angulartics-loggly.js │ │ │ ├── angulartics-marketo.js │ │ │ ├── angulartics-newrelic-insights.js │ │ │ ├── angulartics-sitespect.js │ │ │ ├── angulartics-splunk.js │ │ │ ├── angulartics-woopra.js │ │ │ ├── angulartics.js │ │ │ └── index.js │ ├── bip70-js │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── README.md │ │ ├── bin │ │ │ ├── fetch.js │ │ │ └── gentruststore.js │ │ ├── bower.json │ │ ├── build │ │ │ ├── bip70.js │ │ │ ├── bip70.min.js │ │ │ ├── test.js │ │ │ └── test.min.js │ │ ├── lib │ │ │ ├── bip70.js │ │ │ ├── client.js │ │ │ ├── config.js │ │ │ ├── protobuf.js │ │ │ ├── protofile.json │ │ │ ├── request_builder.js │ │ │ └── x509 │ │ │ │ ├── ca-certificates.json │ │ │ │ ├── index.js │ │ │ │ ├── pkitype.js │ │ │ │ ├── truststore.js │ │ │ │ └── validation.jsrsasign.js │ │ ├── main.js │ │ ├── package.json │ │ ├── proto │ │ │ └── bip70.proto │ │ └── test.js │ ├── blocktrail-sdk │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── asmcrypto.js │ │ │ ├── asmcrypto.min.js │ │ │ ├── blocktrail-sdk-full.js │ │ │ ├── blocktrail-sdk-full.min.js │ │ │ ├── blocktrail-sdk-with-backup-generator.js │ │ │ ├── blocktrail-sdk-with-backup-generator.min.js │ │ │ ├── blocktrail-sdk.js │ │ │ ├── blocktrail-sdk.min.js │ │ │ ├── jsPDF.js │ │ │ └── jsPDF.min.js │ │ ├── docs │ │ │ ├── CHANGELOG.md │ │ │ ├── DEV.md │ │ │ ├── KEYS.md │ │ │ ├── RELEASE.md │ │ │ └── keys-pseudocode │ │ │ │ ├── login.js │ │ │ │ ├── recovery.js │ │ │ │ └── register.js │ │ ├── examples │ │ │ ├── backup_info_example.html │ │ │ ├── backup_info_example.js │ │ │ ├── not_so_simple_payment_api_usage.js │ │ │ ├── opreturn_payment_api_usage.js │ │ │ ├── simple_data_api_usage.js │ │ │ ├── simple_payment_api_usage-maxspendable.js │ │ │ ├── simple_payment_api_usage-spenditall.js │ │ │ ├── simple_payment_api_usage.html │ │ │ ├── simple_payment_api_usage.js │ │ │ ├── simple_read_only_wallet_api_usage.js │ │ │ ├── simple_upgrade_example.js │ │ │ ├── wallet_force_fee.js │ │ │ ├── wallet_password_change_example.js │ │ │ ├── wallet_recovery_example.js │ │ │ ├── wallet_recovery_example_v3.js │ │ │ ├── wallet_v1_recovery_example.js │ │ │ ├── wallet_v2_recovery_example.js │ │ │ └── wallet_v3_recovery_example.js │ │ ├── lib │ │ │ ├── api_client.js │ │ │ ├── blocktrail.convert.js │ │ │ ├── blocktrail.js │ │ │ ├── btccom.convert.js │ │ │ ├── encryption.js │ │ │ ├── encryption_mnemonic.js │ │ │ ├── keyderivation.js │ │ │ ├── pbkdf2_sha512-browser.js │ │ │ ├── pbkdf2_sha512-sjcl.js │ │ │ ├── pbkdf2_sha512.js │ │ │ ├── pkginfo-browser.js │ │ │ ├── pkginfo.js │ │ │ ├── request.js │ │ │ ├── rest_client.js │ │ │ ├── services │ │ │ │ ├── blocktrail_bitcoin_service.js │ │ │ │ └── insight_bitcoin_service.js │ │ │ ├── size_estimation.js │ │ │ ├── unspent_output_finder.js │ │ │ ├── use-webworker.js │ │ │ ├── wallet.js │ │ │ ├── wallet_sweeper.js │ │ │ ├── webworker.js │ │ │ └── webworkifier.js │ │ ├── main-with-backup-generator.js │ │ ├── main.js │ │ ├── package.json │ │ ├── test.js │ │ └── tools │ │ │ ├── browserify-debug-size.js │ │ │ ├── clean-test-wallet.js │ │ │ └── release.sh │ ├── bootstrap-sass │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── assets │ │ │ ├── fonts │ │ │ │ └── bootstrap │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── javascripts │ │ │ │ ├── bootstrap-sprockets.js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── bootstrap │ │ │ │ │ ├── affix.js │ │ │ │ │ ├── alert.js │ │ │ │ │ ├── button.js │ │ │ │ │ ├── carousel.js │ │ │ │ │ ├── collapse.js │ │ │ │ │ ├── dropdown.js │ │ │ │ │ ├── modal.js │ │ │ │ │ ├── popover.js │ │ │ │ │ ├── scrollspy.js │ │ │ │ │ ├── tab.js │ │ │ │ │ ├── tooltip.js │ │ │ │ │ └── transition.js │ │ │ └── stylesheets │ │ │ │ ├── _bootstrap-compass.scss │ │ │ │ ├── _bootstrap-mincer.scss │ │ │ │ ├── _bootstrap-sprockets.scss │ │ │ │ ├── _bootstrap.scss │ │ │ │ └── bootstrap │ │ │ │ ├── _alerts.scss │ │ │ │ ├── _badges.scss │ │ │ │ ├── _breadcrumbs.scss │ │ │ │ ├── _button-groups.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── _code.scss │ │ │ │ ├── _component-animations.scss │ │ │ │ ├── _dropdowns.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _glyphicons.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _input-groups.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _labels.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _modals.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _navs.scss │ │ │ │ ├── _normalize.scss │ │ │ │ ├── _pager.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _panels.scss │ │ │ │ ├── _popovers.scss │ │ │ │ ├── _print.scss │ │ │ │ ├── _progress-bars.scss │ │ │ │ ├── _responsive-embed.scss │ │ │ │ ├── _responsive-utilities.scss │ │ │ │ ├── _scaffolding.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _theme.scss │ │ │ │ ├── _thumbnails.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _type.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── _wells.scss │ │ │ │ └── mixins │ │ │ │ ├── _alerts.scss │ │ │ │ ├── _background-variant.scss │ │ │ │ ├── _border-radius.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _center-block.scss │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _gradients.scss │ │ │ │ ├── _grid-framework.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _hide-text.scss │ │ │ │ ├── _image.scss │ │ │ │ ├── _labels.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _nav-divider.scss │ │ │ │ ├── _nav-vertical-align.scss │ │ │ │ ├── _opacity.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _panels.scss │ │ │ │ ├── _progress-bar.scss │ │ │ │ ├── _reset-filter.scss │ │ │ │ ├── _reset-text.scss │ │ │ │ ├── _resize.scss │ │ │ │ ├── _responsive-visibility.scss │ │ │ │ ├── _size.scss │ │ │ │ ├── _tab-focus.scss │ │ │ │ ├── _table-row.scss │ │ │ │ ├── _text-emphasis.scss │ │ │ │ ├── _text-overflow.scss │ │ │ │ └── _vendor-prefixes.scss │ │ ├── bower.json │ │ ├── composer.json │ │ ├── package.json │ │ └── sache.json │ ├── bowser │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── ISSUE_TEMPLATE.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── package.json │ │ ├── src │ │ │ ├── bowser.js │ │ │ └── useragents.js │ │ └── typings.d.ts │ ├── browserify-cryptojs │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── components │ │ │ ├── aes-min.js │ │ │ ├── aes.js │ │ │ ├── cipher-core-min.js │ │ │ ├── cipher-core.js │ │ │ ├── core-min.js │ │ │ ├── core.js │ │ │ ├── enc-base64-min.js │ │ │ ├── enc-base64.js │ │ │ ├── enc-utf16-min.js │ │ │ ├── enc-utf16.js │ │ │ ├── evpkdf-min.js │ │ │ ├── evpkdf.js │ │ │ ├── format-hex-min.js │ │ │ ├── format-hex.js │ │ │ ├── hmac-min.js │ │ │ ├── hmac.js │ │ │ ├── lib-typedarrays-min.js │ │ │ ├── lib-typedarrays.js │ │ │ ├── md5-min.js │ │ │ ├── md5.js │ │ │ ├── mode-cfb-min.js │ │ │ ├── mode-cfb.js │ │ │ ├── mode-ctr-gladman-min.js │ │ │ ├── mode-ctr-gladman.js │ │ │ ├── mode-ctr-min.js │ │ │ ├── mode-ctr.js │ │ │ ├── mode-ecb-min.js │ │ │ ├── mode-ecb.js │ │ │ ├── mode-ofb-min.js │ │ │ ├── mode-ofb.js │ │ │ ├── pad-ansix923-min.js │ │ │ ├── pad-ansix923.js │ │ │ ├── pad-iso10126-min.js │ │ │ ├── pad-iso10126.js │ │ │ ├── pad-iso97971-min.js │ │ │ ├── pad-iso97971.js │ │ │ ├── pad-nopadding-min.js │ │ │ ├── pad-nopadding.js │ │ │ ├── pad-zeropadding-min.js │ │ │ ├── pad-zeropadding.js │ │ │ ├── pbkdf2-min.js │ │ │ ├── pbkdf2.js │ │ │ ├── rabbit-legacy-min.js │ │ │ ├── rabbit-legacy.js │ │ │ ├── rabbit-min.js │ │ │ ├── rabbit.js │ │ │ ├── rc4-min.js │ │ │ ├── rc4.js │ │ │ ├── ripemd160-min.js │ │ │ ├── ripemd160.js │ │ │ ├── sha1-min.js │ │ │ ├── sha1.js │ │ │ ├── sha224-min.js │ │ │ ├── sha224.js │ │ │ ├── sha256-min.js │ │ │ ├── sha256.js │ │ │ ├── sha3-min.js │ │ │ ├── sha3.js │ │ │ ├── sha384-min.js │ │ │ ├── sha384.js │ │ │ ├── sha512-min.js │ │ │ ├── sha512.js │ │ │ ├── tripledes-min.js │ │ │ ├── tripledes.js │ │ │ ├── x64-core-min.js │ │ │ └── x64-core.js │ │ ├── gulpfile.js │ │ ├── index.js │ │ ├── package.json │ │ ├── rollups │ │ │ ├── aes.js │ │ │ ├── hmac-md5.js │ │ │ ├── hmac-ripemd160.js │ │ │ ├── hmac-sha1.js │ │ │ ├── hmac-sha224.js │ │ │ ├── hmac-sha256.js │ │ │ ├── hmac-sha3.js │ │ │ ├── hmac-sha384.js │ │ │ ├── hmac-sha512.js │ │ │ ├── md5.js │ │ │ ├── pbkdf2.js │ │ │ ├── rabbit-legacy.js │ │ │ ├── rabbit.js │ │ │ ├── rc4.js │ │ │ ├── ripemd160.js │ │ │ ├── sha1.js │ │ │ ├── sha224.js │ │ │ ├── sha256.js │ │ │ ├── sha3.js │ │ │ ├── sha384.js │ │ │ ├── sha512.js │ │ │ └── tripledes.js │ │ └── src │ │ │ └── core.js │ ├── fingerprintjs2 │ │ ├── .bower.json │ │ ├── CONTRIBUTING.md │ │ ├── FAQ.md │ │ ├── ISSUE_TEMPLATE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ └── fingerprint2.min.js │ │ ├── fingerprint2.js │ │ ├── flash │ │ │ ├── FontList.as │ │ │ ├── Makefile │ │ │ └── compiled │ │ │ │ └── FontList.swf │ │ ├── gulpfile.js │ │ ├── index.html │ │ ├── package.json │ │ ├── specs │ │ │ ├── lib │ │ │ │ └── jasmine-2.3.4 │ │ │ │ │ ├── boot.js │ │ │ │ │ ├── jasmine-html.js │ │ │ │ │ ├── jasmine-matchers.js │ │ │ │ │ ├── jasmine.css │ │ │ │ │ ├── jasmine.js │ │ │ │ │ ├── jasmine_favicon.png │ │ │ │ │ └── terminal.js │ │ │ ├── phantomjs-testrunner.js │ │ │ ├── phantomjs.runner.sh │ │ │ ├── spec_runner.html │ │ │ └── specs.js │ │ └── yarn.lock │ ├── intl-tel-input │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── .travis.yml │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── intlTelInput.css │ │ │ ├── img │ │ │ │ ├── flags.png │ │ │ │ └── flags@2x.png │ │ │ └── js │ │ │ │ ├── intlTelInput.js │ │ │ │ └── intlTelInput.min.js │ │ ├── component.json │ │ ├── demo.html │ │ ├── examples │ │ │ ├── css │ │ │ │ ├── countrySync.css │ │ │ │ ├── isValidNumber.css │ │ │ │ └── prism.css │ │ │ ├── gen │ │ │ │ ├── country-sync.html │ │ │ │ ├── default-country-ip.html │ │ │ │ ├── hidden-input.html │ │ │ │ ├── is-valid-number.html │ │ │ │ ├── modify-country-data.html │ │ │ │ ├── national-mode.html │ │ │ │ └── only-countries-europe.html │ │ │ ├── js │ │ │ │ ├── countrySync.js │ │ │ │ ├── defaultCountryIp.js │ │ │ │ ├── hiddenInput.js │ │ │ │ ├── isValidNumber.js │ │ │ │ ├── modifyCountryData.js │ │ │ │ ├── nationalMode.js │ │ │ │ ├── onlyCountriesEurope.js │ │ │ │ └── prism.js │ │ │ ├── partials │ │ │ │ ├── countrySync.html │ │ │ │ ├── hiddenInput.html │ │ │ │ ├── isValidNumber.html │ │ │ │ ├── nationalMode.html │ │ │ │ └── simpleInput.html │ │ │ └── template.html.ejs │ │ ├── grunt │ │ │ ├── bower.js │ │ │ ├── bump.js │ │ │ ├── exec.js │ │ │ ├── jasmine.js │ │ │ ├── jshint.js │ │ │ ├── replace.js │ │ │ ├── responsive_images.js │ │ │ ├── retinafy.js │ │ │ ├── sass.js │ │ │ ├── shell.js │ │ │ ├── sprite.js │ │ │ ├── template.js │ │ │ ├── tmpl │ │ │ │ └── sprite-retina-mustache.scss │ │ │ ├── uglify.js │ │ │ └── watch.js │ │ ├── index.js │ │ ├── intl-tel-input.jquery.json │ │ ├── lib │ │ │ └── libphonenumber │ │ │ │ ├── build │ │ │ │ └── utils.js │ │ │ │ └── src │ │ │ │ └── utils.js │ │ ├── package.json │ │ ├── screenshot.png │ │ ├── spec.html │ │ └── src │ │ │ ├── css │ │ │ ├── demo.scss │ │ │ ├── intlTelInput.scss │ │ │ ├── sprite.scss │ │ │ └── sprite@2x.scss │ │ │ ├── js │ │ │ ├── data.js │ │ │ ├── intlTelInput.js.ejs │ │ │ └── wrapper.js.ejs │ │ │ └── spec │ │ │ ├── helpers │ │ │ └── helpers.js │ │ │ └── tests │ │ │ ├── methods │ │ │ ├── destroy.js │ │ │ ├── getCountryData.js │ │ │ ├── getSelectedCountryData.js │ │ │ ├── isValidNumber.js │ │ │ ├── selectCountry.js │ │ │ └── setNumber.js │ │ │ ├── options │ │ │ ├── autoFormat.js │ │ │ ├── autoHideDialCode.js │ │ │ ├── defaultCountry.js │ │ │ ├── nationalMode.js │ │ │ ├── onlyCountries.js │ │ │ ├── preferredCountries.js │ │ │ └── utilsScript.js │ │ │ └── vanilla │ │ │ ├── core.js │ │ │ ├── keyboardShortcuts.js │ │ │ └── multipleInstances.js │ ├── jquery │ │ ├── .bower.json │ │ ├── MIT-LICENSE.txt │ │ ├── bower.json │ │ ├── dist │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ │ └── src │ │ │ ├── ajax.js │ │ │ ├── ajax │ │ │ ├── jsonp.js │ │ │ ├── load.js │ │ │ ├── parseJSON.js │ │ │ ├── parseXML.js │ │ │ ├── script.js │ │ │ ├── var │ │ │ │ ├── nonce.js │ │ │ │ └── rquery.js │ │ │ └── xhr.js │ │ │ ├── attributes.js │ │ │ ├── attributes │ │ │ ├── attr.js │ │ │ ├── classes.js │ │ │ ├── prop.js │ │ │ ├── support.js │ │ │ └── val.js │ │ │ ├── callbacks.js │ │ │ ├── core.js │ │ │ ├── core │ │ │ ├── access.js │ │ │ ├── init.js │ │ │ ├── parseHTML.js │ │ │ ├── ready.js │ │ │ └── var │ │ │ │ └── rsingleTag.js │ │ │ ├── css.js │ │ │ ├── css │ │ │ ├── addGetHookIf.js │ │ │ ├── curCSS.js │ │ │ ├── defaultDisplay.js │ │ │ ├── hiddenVisibleSelectors.js │ │ │ ├── support.js │ │ │ ├── swap.js │ │ │ └── var │ │ │ │ ├── cssExpand.js │ │ │ │ ├── getStyles.js │ │ │ │ ├── isHidden.js │ │ │ │ ├── rmargin.js │ │ │ │ └── rnumnonpx.js │ │ │ ├── data.js │ │ │ ├── data │ │ │ ├── Data.js │ │ │ ├── accepts.js │ │ │ └── var │ │ │ │ ├── data_priv.js │ │ │ │ └── data_user.js │ │ │ ├── deferred.js │ │ │ ├── deprecated.js │ │ │ ├── dimensions.js │ │ │ ├── effects.js │ │ │ ├── effects │ │ │ ├── Tween.js │ │ │ └── animatedSelector.js │ │ │ ├── event.js │ │ │ ├── event │ │ │ ├── ajax.js │ │ │ ├── alias.js │ │ │ └── support.js │ │ │ ├── exports │ │ │ ├── amd.js │ │ │ └── global.js │ │ │ ├── intro.js │ │ │ ├── jquery.js │ │ │ ├── manipulation.js │ │ │ ├── manipulation │ │ │ ├── _evalUrl.js │ │ │ ├── support.js │ │ │ └── var │ │ │ │ └── rcheckableType.js │ │ │ ├── offset.js │ │ │ ├── outro.js │ │ │ ├── queue.js │ │ │ ├── queue │ │ │ └── delay.js │ │ │ ├── selector-native.js │ │ │ ├── selector-sizzle.js │ │ │ ├── selector.js │ │ │ ├── serialize.js │ │ │ ├── sizzle │ │ │ └── dist │ │ │ │ ├── sizzle.js │ │ │ │ ├── sizzle.min.js │ │ │ │ └── sizzle.min.map │ │ │ ├── traversing.js │ │ │ ├── traversing │ │ │ ├── findFilter.js │ │ │ └── var │ │ │ │ └── rneedsContext.js │ │ │ ├── var │ │ │ ├── arr.js │ │ │ ├── class2type.js │ │ │ ├── concat.js │ │ │ ├── hasOwn.js │ │ │ ├── indexOf.js │ │ │ ├── pnum.js │ │ │ ├── push.js │ │ │ ├── rnotwhite.js │ │ │ ├── slice.js │ │ │ ├── strundefined.js │ │ │ ├── support.js │ │ │ └── toString.js │ │ │ └── wrap.js │ ├── libphonenumber │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── build.sh │ │ ├── build.xml │ │ ├── dist │ │ │ ├── .gitkeep │ │ │ └── libphonenumber.js │ │ └── libphonenumber.js │ ├── moment │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── locale │ │ │ ├── af.js │ │ │ ├── ar-ma.js │ │ │ ├── ar-sa.js │ │ │ ├── ar-tn.js │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── be.js │ │ │ ├── bg.js │ │ │ ├── bn.js │ │ │ ├── bo.js │ │ │ ├── br.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cv.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de-at.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en-au.js │ │ │ ├── en-ca.js │ │ │ ├── en-gb.js │ │ │ ├── eo.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fo.js │ │ │ ├── fr-ca.js │ │ │ ├── fr.js │ │ │ ├── fy.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── hy-am.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── jv.js │ │ │ ├── ka.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── lb.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── me.js │ │ │ ├── mk.js │ │ │ ├── ml.js │ │ │ ├── mr.js │ │ │ ├── ms-my.js │ │ │ ├── ms.js │ │ │ ├── my.js │ │ │ ├── nb.js │ │ │ ├── ne.js │ │ │ ├── nl.js │ │ │ ├── nn.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── si.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-cyrl.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── ta.js │ │ │ ├── th.js │ │ │ ├── tl-ph.js │ │ │ ├── tr.js │ │ │ ├── tzl.js │ │ │ ├── tzm-latn.js │ │ │ ├── tzm.js │ │ │ ├── uk.js │ │ │ ├── uz.js │ │ │ ├── vi.js │ │ │ ├── zh-cn.js │ │ │ └── zh-tw.js │ │ ├── min │ │ │ ├── locales.js │ │ │ ├── locales.min.js │ │ │ ├── moment-with-locales.js │ │ │ ├── moment-with-locales.min.js │ │ │ ├── moment.min.js │ │ │ └── tests.js │ │ ├── moment.js │ │ ├── src │ │ │ ├── lib │ │ │ │ ├── create │ │ │ │ │ ├── check-overflow.js │ │ │ │ │ ├── date-from-array.js │ │ │ │ │ ├── from-anything.js │ │ │ │ │ ├── from-array.js │ │ │ │ │ ├── from-object.js │ │ │ │ │ ├── from-string-and-array.js │ │ │ │ │ ├── from-string-and-format.js │ │ │ │ │ ├── from-string.js │ │ │ │ │ ├── local.js │ │ │ │ │ ├── parsing-flags.js │ │ │ │ │ ├── utc.js │ │ │ │ │ └── valid.js │ │ │ │ ├── duration │ │ │ │ │ ├── abs.js │ │ │ │ │ ├── add-subtract.js │ │ │ │ │ ├── as.js │ │ │ │ │ ├── bubble.js │ │ │ │ │ ├── constructor.js │ │ │ │ │ ├── create.js │ │ │ │ │ ├── duration.js │ │ │ │ │ ├── get.js │ │ │ │ │ ├── humanize.js │ │ │ │ │ ├── iso-string.js │ │ │ │ │ └── prototype.js │ │ │ │ ├── format │ │ │ │ │ └── format.js │ │ │ │ ├── locale │ │ │ │ │ ├── calendar.js │ │ │ │ │ ├── constructor.js │ │ │ │ │ ├── en.js │ │ │ │ │ ├── formats.js │ │ │ │ │ ├── invalid.js │ │ │ │ │ ├── lists.js │ │ │ │ │ ├── locale.js │ │ │ │ │ ├── locales.js │ │ │ │ │ ├── ordinal.js │ │ │ │ │ ├── pre-post-format.js │ │ │ │ │ ├── prototype.js │ │ │ │ │ ├── relative.js │ │ │ │ │ └── set.js │ │ │ │ ├── moment │ │ │ │ │ ├── add-subtract.js │ │ │ │ │ ├── calendar.js │ │ │ │ │ ├── clone.js │ │ │ │ │ ├── compare.js │ │ │ │ │ ├── constructor.js │ │ │ │ │ ├── diff.js │ │ │ │ │ ├── format.js │ │ │ │ │ ├── from.js │ │ │ │ │ ├── get-set.js │ │ │ │ │ ├── locale.js │ │ │ │ │ ├── min-max.js │ │ │ │ │ ├── moment.js │ │ │ │ │ ├── prototype.js │ │ │ │ │ ├── start-end-of.js │ │ │ │ │ ├── to-type.js │ │ │ │ │ ├── to.js │ │ │ │ │ └── valid.js │ │ │ │ ├── parse │ │ │ │ │ ├── regex.js │ │ │ │ │ └── token.js │ │ │ │ ├── units │ │ │ │ │ ├── aliases.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── day-of-month.js │ │ │ │ │ ├── day-of-week.js │ │ │ │ │ ├── day-of-year.js │ │ │ │ │ ├── hour.js │ │ │ │ │ ├── millisecond.js │ │ │ │ │ ├── minute.js │ │ │ │ │ ├── month.js │ │ │ │ │ ├── offset.js │ │ │ │ │ ├── quarter.js │ │ │ │ │ ├── second.js │ │ │ │ │ ├── timestamp.js │ │ │ │ │ ├── timezone.js │ │ │ │ │ ├── units.js │ │ │ │ │ ├── week-year.js │ │ │ │ │ ├── week.js │ │ │ │ │ └── year.js │ │ │ │ └── utils │ │ │ │ │ ├── abs-ceil.js │ │ │ │ │ ├── abs-floor.js │ │ │ │ │ ├── compare-arrays.js │ │ │ │ │ ├── defaults.js │ │ │ │ │ ├── deprecate.js │ │ │ │ │ ├── extend.js │ │ │ │ │ ├── has-own-prop.js │ │ │ │ │ ├── hooks.js │ │ │ │ │ ├── is-array.js │ │ │ │ │ ├── is-date.js │ │ │ │ │ ├── map.js │ │ │ │ │ ├── to-int.js │ │ │ │ │ └── zero-fill.js │ │ │ ├── locale │ │ │ │ ├── af.js │ │ │ │ ├── ar-ma.js │ │ │ │ ├── ar-sa.js │ │ │ │ ├── ar-tn.js │ │ │ │ ├── ar.js │ │ │ │ ├── az.js │ │ │ │ ├── be.js │ │ │ │ ├── bg.js │ │ │ │ ├── bn.js │ │ │ │ ├── bo.js │ │ │ │ ├── br.js │ │ │ │ ├── bs.js │ │ │ │ ├── ca.js │ │ │ │ ├── cs.js │ │ │ │ ├── cv.js │ │ │ │ ├── cy.js │ │ │ │ ├── da.js │ │ │ │ ├── de-at.js │ │ │ │ ├── de.js │ │ │ │ ├── el.js │ │ │ │ ├── en-au.js │ │ │ │ ├── en-ca.js │ │ │ │ ├── en-gb.js │ │ │ │ ├── eo.js │ │ │ │ ├── es.js │ │ │ │ ├── et.js │ │ │ │ ├── eu.js │ │ │ │ ├── fa.js │ │ │ │ ├── fi.js │ │ │ │ ├── fo.js │ │ │ │ ├── fr-ca.js │ │ │ │ ├── fr.js │ │ │ │ ├── fy.js │ │ │ │ ├── gl.js │ │ │ │ ├── he.js │ │ │ │ ├── hi.js │ │ │ │ ├── hr.js │ │ │ │ ├── hu.js │ │ │ │ ├── hy-am.js │ │ │ │ ├── id.js │ │ │ │ ├── is.js │ │ │ │ ├── it.js │ │ │ │ ├── ja.js │ │ │ │ ├── jv.js │ │ │ │ ├── ka.js │ │ │ │ ├── km.js │ │ │ │ ├── ko.js │ │ │ │ ├── lb.js │ │ │ │ ├── lt.js │ │ │ │ ├── lv.js │ │ │ │ ├── me.js │ │ │ │ ├── mk.js │ │ │ │ ├── ml.js │ │ │ │ ├── mr.js │ │ │ │ ├── ms-my.js │ │ │ │ ├── ms.js │ │ │ │ ├── my.js │ │ │ │ ├── nb.js │ │ │ │ ├── ne.js │ │ │ │ ├── nl.js │ │ │ │ ├── nn.js │ │ │ │ ├── pl.js │ │ │ │ ├── pt-br.js │ │ │ │ ├── pt.js │ │ │ │ ├── ro.js │ │ │ │ ├── ru.js │ │ │ │ ├── si.js │ │ │ │ ├── sk.js │ │ │ │ ├── sl.js │ │ │ │ ├── sq.js │ │ │ │ ├── sr-cyrl.js │ │ │ │ ├── sr.js │ │ │ │ ├── sv.js │ │ │ │ ├── ta.js │ │ │ │ ├── th.js │ │ │ │ ├── tl-ph.js │ │ │ │ ├── tr.js │ │ │ │ ├── tzl.js │ │ │ │ ├── tzm-latn.js │ │ │ │ ├── tzm.js │ │ │ │ ├── uk.js │ │ │ │ ├── uz.js │ │ │ │ ├── vi.js │ │ │ │ ├── zh-cn.js │ │ │ │ └── zh-tw.js │ │ │ └── moment.js │ │ └── templates │ │ │ ├── amd-named.js │ │ │ ├── amd.js │ │ │ ├── globals.js │ │ │ ├── locale-header.js │ │ │ └── test-header.js │ ├── ng-file-upload │ │ ├── .bower.json │ │ ├── 161a70d3.favicon.ico │ │ ├── FileAPI.flash.swf │ │ ├── FileAPI.js │ │ ├── FileAPI.min.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── ng-file-upload-all.js │ │ ├── ng-file-upload-all.min.js │ │ ├── ng-file-upload-shim.js │ │ ├── ng-file-upload-shim.min.js │ │ ├── ng-file-upload.js │ │ ├── ng-file-upload.min.js │ │ └── robots.txt │ ├── ng-infinite-scroller-origin │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── ng-infinite-scroll.js │ │ │ └── ng-infinite-scroll.min.js │ │ ├── package.json │ │ └── src │ │ │ └── infinite-scroll.coffee │ ├── ngImgCrop │ │ ├── .bower.json │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ ├── compile │ │ │ ├── minified │ │ │ │ ├── ng-img-crop.css │ │ │ │ └── ng-img-crop.js │ │ │ └── unminified │ │ │ │ ├── ng-img-crop.css │ │ │ │ └── ng-img-crop.js │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── screenshots │ │ │ ├── circle_1.jpg │ │ │ └── square_1.jpg │ │ └── source │ │ │ ├── js │ │ │ ├── classes │ │ │ │ ├── crop-area-circle.js │ │ │ │ ├── crop-area-square.js │ │ │ │ ├── crop-area.js │ │ │ │ ├── crop-canvas.js │ │ │ │ ├── crop-exif.js │ │ │ │ ├── crop-host.js │ │ │ │ └── crop-pubsub.js │ │ │ ├── init.js │ │ │ └── ng-img-crop.js │ │ │ └── scss │ │ │ └── ng-img-crop.scss │ ├── pouchdb │ │ ├── .bower.json │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── TESTING.md │ │ ├── bin │ │ │ ├── add-license.js │ │ │ ├── build-all-plugins.sh │ │ │ ├── build-site.js │ │ │ ├── dev-server.js │ │ │ ├── es3ify.js │ │ │ ├── get-version.js │ │ │ ├── publish-site.sh │ │ │ ├── release.sh │ │ │ ├── repl.js │ │ │ ├── run-cordova.sh │ │ │ ├── run-couch-master-on-travis.sh │ │ │ ├── run-coverage.js │ │ │ ├── run-csg-on-travis.sh │ │ │ ├── run-test.sh │ │ │ ├── test-browser.js │ │ │ └── test-node.sh │ │ ├── bower.json │ │ ├── component.json │ │ ├── dist │ │ │ ├── pouchdb.idb-alt.js │ │ │ ├── pouchdb.idb-alt.min.js │ │ │ ├── pouchdb.js │ │ │ ├── pouchdb.localstorage.js │ │ │ ├── pouchdb.localstorage.min.js │ │ │ ├── pouchdb.memory.js │ │ │ ├── pouchdb.memory.min.js │ │ │ └── pouchdb.min.js │ │ ├── docs │ │ │ ├── _config.yml │ │ │ ├── _data │ │ │ │ └── authors.yml │ │ │ ├── _guides │ │ │ │ ├── async-code.md │ │ │ │ ├── attachments.md │ │ │ │ ├── bulk-operations.md │ │ │ │ ├── changes.md │ │ │ │ ├── compact-and-destroy.md │ │ │ │ ├── conflicts.md │ │ │ │ ├── databases.md │ │ │ │ ├── documents.md │ │ │ │ ├── index.md │ │ │ │ ├── local-documents.md │ │ │ │ ├── queries.md │ │ │ │ ├── replication.md │ │ │ │ ├── setup-couchdb.md │ │ │ │ ├── setup-pouchdb.md │ │ │ │ └── updating-deleting.md │ │ │ ├── _includes │ │ │ │ ├── alert │ │ │ │ │ ├── end.html │ │ │ │ │ └── start.html │ │ │ │ ├── anchor.html │ │ │ │ ├── api.html │ │ │ │ ├── api │ │ │ │ │ ├── api_overview.html │ │ │ │ │ ├── batch_create.html │ │ │ │ │ ├── batch_fetch.html │ │ │ │ │ ├── changes.html │ │ │ │ │ ├── compaction.html │ │ │ │ │ ├── create_database.html │ │ │ │ │ ├── create_document.html │ │ │ │ │ ├── database_information.html │ │ │ │ │ ├── debug_mode.html │ │ │ │ │ ├── defaults.html │ │ │ │ │ ├── delete_attachment.html │ │ │ │ │ ├── delete_database.html │ │ │ │ │ ├── delete_document.html │ │ │ │ │ ├── events.html │ │ │ │ │ ├── extras.html │ │ │ │ │ ├── fetch_document.html │ │ │ │ │ ├── get_attachment.html │ │ │ │ │ ├── plugins.html │ │ │ │ │ ├── query_database.html │ │ │ │ │ ├── replication.html │ │ │ │ │ ├── revisions_diff.html │ │ │ │ │ ├── save_attachment.html │ │ │ │ │ ├── sync.html │ │ │ │ │ └── view_cleanup.html │ │ │ │ ├── code │ │ │ │ │ ├── end.html │ │ │ │ │ └── start.html │ │ │ │ ├── guides_nav.html │ │ │ │ ├── iframe.html │ │ │ │ ├── img.html │ │ │ │ ├── nav.html │ │ │ │ ├── nav_item.html │ │ │ │ ├── post_details.html │ │ │ │ └── social.html │ │ │ ├── _layouts │ │ │ │ ├── 2ColLeft.html │ │ │ │ ├── default.html │ │ │ │ ├── guide.html │ │ │ │ └── post.html │ │ │ ├── _plugins │ │ │ │ └── markdown.rb │ │ │ ├── _posts │ │ │ │ ├── 2014-04-01-pouchdb-2.1.0.md │ │ │ │ ├── 2014-04-01-welcome-to-the-pouchdb-blog.md │ │ │ │ ├── 2014-04-14-pagination-strategies-with-pouchdb.md │ │ │ │ ├── 2014-05-01-pouchdb-2.2.0.md │ │ │ │ ├── 2014-05-01-secondary-indexes-have-landed-in-pouchdb.md │ │ │ │ ├── 2014-06-01-pouchdb-2.2.3.md │ │ │ │ ├── 2014-06-17-12-pro-tips-for-better-code-with-pouchdb.md │ │ │ │ ├── 2014-07-25-pouchdb-levels-up.md │ │ │ │ ├── 2014-08-12-pouchdb-3.0.0.md │ │ │ │ ├── 2014-08-16-pouchdb-3.0.1.md │ │ │ │ ├── 2014-08-20-pouchdb-3.0.2.md │ │ │ │ ├── 2014-08-29-pouchdb-3.0.3.md │ │ │ │ ├── 2014-09-04-pouchdb-3.0.4.md │ │ │ │ ├── 2014-09-07-pouchdb-3.0.5.md │ │ │ │ ├── 2014-09-22-3.0.6.md │ │ │ │ ├── 2014-10-26-10-things-i-learned-from-reading-and-writing-the-pouchdb-source.md │ │ │ │ ├── 2014-11-10-3.1.0.md │ │ │ │ ├── 2014-11-27-testing-pouchdb.md │ │ │ │ ├── 2014-12-04-3.2.0.md │ │ │ │ ├── 2014-12-11-the-pains-of-being-async-at-heart.md │ │ │ │ ├── 2015-01-05-pouchdb-3.2.1-you-can-always-be-faster.md │ │ │ │ ├── 2015-02-03-fix-up-look-sharp.md │ │ │ │ ├── 2015-02-14-a-quick-one.md │ │ │ │ ├── 2015-02-28-efficiently-managing-ui-state-in-pouchdb.md │ │ │ │ ├── 2015-03-05-taming-the-async-beast-with-es7.md │ │ │ │ ├── 2015-04-05-filtered-replication.md │ │ │ │ ├── 2015-04-07-better-late-than-never.md │ │ │ │ └── 2015-05-07-pouchdb-3.5.0-vote-for-pouchdb.md │ │ │ ├── adapters.md │ │ │ ├── api.html │ │ │ ├── blog │ │ │ │ └── index.html │ │ │ ├── errors.md │ │ │ ├── external.md │ │ │ ├── faq.md │ │ │ ├── feed.xml │ │ │ ├── getting-started.md │ │ │ ├── gql.md │ │ │ ├── index.md │ │ │ ├── learn.md │ │ │ ├── manifest.appcache │ │ │ ├── static │ │ │ │ ├── assets │ │ │ │ │ └── pouchdb-getting-started-todo.zip │ │ │ │ ├── favicon.ico │ │ │ │ ├── img │ │ │ │ │ ├── apple-indexeddb.png │ │ │ │ │ ├── browser-logos │ │ │ │ │ │ ├── android_32x32.png │ │ │ │ │ │ ├── blackberry_32x32.png │ │ │ │ │ │ ├── chrome-android_32x32.png │ │ │ │ │ │ ├── chrome_32x32.png │ │ │ │ │ │ ├── firefox_32x32.png │ │ │ │ │ │ ├── internet-explorer-tile_32x32.png │ │ │ │ │ │ ├── internet-explorer_32x32.png │ │ │ │ │ │ ├── opera_32x32.png │ │ │ │ │ │ ├── safari-ios_32x32.png │ │ │ │ │ │ └── safari_32x32.png │ │ │ │ │ ├── cloudwall.png │ │ │ │ │ ├── cors_in_couchdb.png │ │ │ │ │ ├── cozy.png │ │ │ │ │ ├── debug_mode.png │ │ │ │ │ ├── dev_tools.png │ │ │ │ │ ├── ehealth_africa.png │ │ │ │ │ ├── fauxton.png │ │ │ │ │ ├── icons.svg │ │ │ │ │ ├── kittens.jpg │ │ │ │ │ ├── kittens_small.jpg │ │ │ │ │ ├── logo.svg │ │ │ │ │ ├── mark.svg │ │ │ │ │ ├── mbta_alerts.jpeg │ │ │ │ │ ├── offline_replication.gif │ │ │ │ │ ├── orson_welles_clapping.gif │ │ │ │ │ ├── pepperidge_farm_remembers.png │ │ │ │ │ ├── pouchdb_inspector.png │ │ │ │ │ ├── safari_inspector.png │ │ │ │ │ ├── safari_popup.png │ │ │ │ │ ├── screenshots │ │ │ │ │ │ └── todo-1.png │ │ │ │ │ ├── squarespace_blog.png │ │ │ │ │ └── travis-screenshot.png │ │ │ │ ├── js │ │ │ │ │ ├── code.js │ │ │ │ │ └── code.min.js │ │ │ │ └── less │ │ │ │ │ ├── bootstrap │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── badges.less │ │ │ │ │ ├── bootstrap.less │ │ │ │ │ ├── breadcrumbs.less │ │ │ │ │ ├── button-groups.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── carousel.less │ │ │ │ │ ├── close.less │ │ │ │ │ ├── code.less │ │ │ │ │ ├── component-animations.less │ │ │ │ │ ├── dropdowns.less │ │ │ │ │ ├── forms.less │ │ │ │ │ ├── glyphicons.less │ │ │ │ │ ├── grid.less │ │ │ │ │ ├── input-groups.less │ │ │ │ │ ├── jumbotron.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── list-group.less │ │ │ │ │ ├── media.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── modals.less │ │ │ │ │ ├── navbar.less │ │ │ │ │ ├── navs.less │ │ │ │ │ ├── normalize.less │ │ │ │ │ ├── pager.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── popovers.less │ │ │ │ │ ├── print.less │ │ │ │ │ ├── progress-bars.less │ │ │ │ │ ├── responsive-utilities.less │ │ │ │ │ ├── scaffolding.less │ │ │ │ │ ├── tables.less │ │ │ │ │ ├── theme.less │ │ │ │ │ ├── thumbnails.less │ │ │ │ │ ├── tooltip.less │ │ │ │ │ ├── type.less │ │ │ │ │ ├── utilities.less │ │ │ │ │ ├── variables.less │ │ │ │ │ └── wells.less │ │ │ │ │ └── pouchdb │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── anchors.less │ │ │ │ │ ├── block.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── code.less │ │ │ │ │ ├── header.less │ │ │ │ │ ├── highlight.less │ │ │ │ │ ├── icons.less │ │ │ │ │ ├── logo.less │ │ │ │ │ ├── mixins.less │ │ │ │ │ ├── navs.less │ │ │ │ │ ├── post.less │ │ │ │ │ ├── pouchdb.less │ │ │ │ │ ├── ribbon.less │ │ │ │ │ ├── scaffolding.less │ │ │ │ │ ├── utilities.less │ │ │ │ │ └── variables.less │ │ │ └── users.md │ │ ├── extras │ │ │ ├── ajax.js │ │ │ ├── checkpointer.js │ │ │ ├── idb-alt.js │ │ │ ├── localstorage.js │ │ │ ├── memory.js │ │ │ └── promise.js │ │ ├── lib │ │ │ ├── adapter.js │ │ │ ├── adapters │ │ │ │ ├── http │ │ │ │ │ └── http.js │ │ │ │ ├── idb │ │ │ │ │ ├── idb-all-docs.js │ │ │ │ │ ├── idb-blob-support.js │ │ │ │ │ ├── idb-bulk-docs.js │ │ │ │ │ ├── idb-constants.js │ │ │ │ │ ├── idb-utils.js │ │ │ │ │ └── idb.js │ │ │ │ ├── leveldb │ │ │ │ │ ├── leveldb-transaction.js │ │ │ │ │ └── leveldb.js │ │ │ │ └── websql │ │ │ │ │ ├── websql-bulk-docs.js │ │ │ │ │ ├── websql-constants.js │ │ │ │ │ ├── websql-utils.js │ │ │ │ │ └── websql.js │ │ │ ├── changes.js │ │ │ ├── constructor.js │ │ │ ├── deps │ │ │ │ ├── ajax.js │ │ │ │ ├── base64.js │ │ │ │ ├── blob.js │ │ │ │ ├── buffer-browser.js │ │ │ │ ├── buffer.js │ │ │ │ ├── errors.js │ │ │ │ ├── explain404.js │ │ │ │ ├── md5.js │ │ │ │ ├── migrate-browser.js │ │ │ │ ├── migrate.js │ │ │ │ ├── parse-doc.js │ │ │ │ ├── parse-hex.js │ │ │ │ ├── parse-uri.js │ │ │ │ ├── promise.js │ │ │ │ ├── request-browser.js │ │ │ │ ├── upsert.js │ │ │ │ └── uuid.js │ │ │ ├── evalFilter.js │ │ │ ├── evalView.js │ │ │ ├── index.js │ │ │ ├── merge.js │ │ │ ├── plugins │ │ │ │ ├── base.js │ │ │ │ ├── idb-alt │ │ │ │ │ ├── config.js │ │ │ │ │ └── index.js │ │ │ │ ├── levelalt.js │ │ │ │ ├── localstorage │ │ │ │ │ ├── config.js │ │ │ │ │ └── index.js │ │ │ │ └── memory │ │ │ │ │ ├── config.js │ │ │ │ │ └── index.js │ │ │ ├── replicate │ │ │ │ ├── backoff.js │ │ │ │ ├── checkpointer.js │ │ │ │ ├── gen-replication-id.js │ │ │ │ ├── index.js │ │ │ │ ├── replicate.js │ │ │ │ └── replication.js │ │ │ ├── setup.js │ │ │ ├── sync.js │ │ │ ├── taskqueue.js │ │ │ ├── utils.js │ │ │ ├── version-browser.js │ │ │ └── version.js │ │ ├── package.json │ │ └── scripts │ │ │ ├── baldrick-test.sh │ │ │ ├── bundle-browserify-test.sh │ │ │ ├── jenkins-deploy.sh │ │ │ └── start_standalone_couch.sh │ ├── powtcha │ │ ├── .bower.json │ │ ├── Gruntfile.js │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── powtcha.js │ │ │ └── powtcha.min.js │ │ ├── index.js │ │ ├── lib │ │ │ ├── miner │ │ │ │ ├── miner.js │ │ │ │ ├── sha256.js │ │ │ │ └── util.js │ │ │ ├── powtcha.js │ │ │ ├── webworker.js │ │ │ └── webworkifier.js │ │ ├── package.json │ │ ├── saucelabs-browsers.js │ │ └── test.js │ ├── q │ │ ├── .bower.json │ │ ├── .coverignore │ │ ├── .gitignore │ │ ├── .jshintrc │ │ ├── .mailmap │ │ ├── .travis.yml │ │ ├── CHANGES.md │ │ ├── CONTRIBUTING.md │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── VERSIONS.md │ │ ├── benchmark │ │ │ ├── compare-with-callbacks.js │ │ │ └── scenarios.js │ │ ├── design │ │ │ ├── README.js │ │ │ ├── q0.js │ │ │ ├── q1.js │ │ │ ├── q2.js │ │ │ ├── q3.js │ │ │ ├── q4.js │ │ │ ├── q5.js │ │ │ ├── q6.js │ │ │ └── q7.js │ │ ├── examples │ │ │ ├── all.js │ │ │ └── async-generators │ │ │ │ ├── 0.html │ │ │ │ ├── 1-return.js │ │ │ │ ├── 2-error-propagation.js │ │ │ │ ├── 3-spawn.js │ │ │ │ ├── 4-flow-control.js │ │ │ │ └── README.md │ │ ├── package.json │ │ ├── q.js │ │ ├── q.png │ │ ├── q.svg │ │ ├── queue.js │ │ ├── ref_send.md │ │ └── spec │ │ │ ├── aplus-adapter.js │ │ │ ├── lib │ │ │ ├── jasmine-1.2.0 │ │ │ │ ├── MIT.LICENSE │ │ │ │ ├── jasmine-html.js │ │ │ │ ├── jasmine.css │ │ │ │ └── jasmine.js │ │ │ └── jasmine-promise.js │ │ │ ├── q-spec.html │ │ │ ├── q-spec.js │ │ │ └── queue-spec.js │ ├── qrcode │ │ ├── .bower.json │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ └── lib │ │ │ ├── qrcode.js │ │ │ └── qrcode.min.js │ ├── raven-js │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── bower.json │ │ ├── dist │ │ │ ├── plugins │ │ │ │ ├── angular.js │ │ │ │ ├── angular.min.js │ │ │ │ ├── angular.min.js.map │ │ │ │ ├── console.js │ │ │ │ ├── console.min.js │ │ │ │ ├── console.min.js.map │ │ │ │ ├── ember.js │ │ │ │ ├── ember.min.js │ │ │ │ ├── ember.min.js.map │ │ │ │ ├── require.js │ │ │ │ ├── require.min.js │ │ │ │ ├── require.min.js.map │ │ │ │ ├── vue.js │ │ │ │ ├── vue.min.js │ │ │ │ └── vue.min.js.map │ │ │ ├── raven.js │ │ │ ├── raven.min.js │ │ │ └── raven.min.js.map │ │ ├── plugins │ │ │ ├── angular.js │ │ │ ├── console.js │ │ │ ├── ember.js │ │ │ ├── react-native.js │ │ │ ├── require.js │ │ │ └── vue.js │ │ ├── src │ │ │ ├── configError.js │ │ │ ├── console.js │ │ │ ├── raven.js │ │ │ ├── singleton.js │ │ │ └── utils.js │ │ ├── template │ │ │ └── _copyright.js │ │ ├── typescript │ │ │ ├── raven-tests.ts │ │ │ └── raven.d.ts │ │ └── vendor │ │ │ ├── TraceKit │ │ │ └── tracekit.js │ │ │ └── json-stringify-safe │ │ │ └── stringify.js │ ├── semver │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── bin │ │ │ └── semver │ │ ├── bower.json │ │ ├── foot.js.txt │ │ ├── head.js.txt │ │ ├── package.json │ │ ├── semver.browser.js │ │ ├── semver.js │ │ └── semver.min.js │ └── zxcvbn │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── bower.json │ │ └── dist │ │ ├── zxcvbn.js │ │ └── zxcvbn.js.map ├── sass │ ├── app.scss │ ├── fonts │ │ ├── lato.scss │ │ ├── neo-sans-pro.scss │ │ ├── open-sans.scss │ │ └── roboto.scss │ ├── helpers │ │ ├── mixins.scss │ │ └── variables.scss │ └── theme │ │ ├── borders.scss │ │ ├── directives │ │ ├── app-header.scss │ │ ├── btn-file-data.scss │ │ ├── index.scss │ │ ├── top-header.scss │ │ ├── wallet-no-more-transactions.scss │ │ ├── wallet-no-transactions.scss │ │ └── wallet-security-progress-bar.scss │ │ ├── indents.scss │ │ ├── index.scss │ │ ├── lodares.scss │ │ ├── pages │ │ ├── buy-broker.scss │ │ ├── index.scss │ │ ├── landing.scss │ │ └── settings.scss │ │ └── reset.scss ├── templates │ └── common │ │ ├── base.html │ │ └── footer.html └── translations.js.template └── www └── .gitignore /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "src/lib" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | appconfig.json 3 | .appconfig.json 4 | 5 | platforms/android/assets/www/* 6 | platforms/ios/www/* 7 | platforms/ios/cordova/console.log 8 | platforms/android/CordovaLib/build 9 | 10 | tmp/* 11 | 12 | src/fontello/* 13 | !src/fontello/font 14 | !src/fontello/config.json 15 | !src/fontello/css/fontello.scss 16 | /.idea/ 17 | package-lock.json 18 | 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/translations"] 2 | path = src/translations 3 | url = https://github.com/blocktrail/blocktrail-wallet-translations.git 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | branches: 4 | only: 5 | - master 6 | 7 | node_js: 8 | - '5.11' 9 | - '6.0.0' 10 | - '6.6.0' 11 | - '7.0.0' 12 | - '7.10.1' 13 | - 'node' 14 | 15 | before_install: 16 | - git submodule update --init --recursive 17 | - npm install -g grunt-cli 18 | - cp appconfig.default.json appconfig.json 19 | 20 | script: 21 | - gulp 22 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## Next Version 4 | fixed app rating button on "About" screen 5 | 6 | ## Version 1.0.8 7 | - added support for bitcoin URIs - click on a bitcoin link to launch the app and send to the linked address 8 | - fixed jittery scrolling on receive screen 9 | 10 | ## Version 1.0.7 11 | - complete UI redesign 12 | - wallets V2 13 | - promo code redeem screen 14 | - syncing contacts to web wallet (available soon) 15 | -------------------------------------------------------------------------------- /appconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "DEBUG": true, 3 | "MINIFY": false, 4 | "TESTNET": true, 5 | 6 | // "STATICSDIR": null, // NULL will auto detect, default to DEV 7 | // "CDN": "https://btcstatic.oss-cn-hangzhou.aliyuncs.com/wallet/www/", 8 | 9 | "NULL": null // just here so we can have a trailing , on every line 10 | } 11 | -------------------------------------------------------------------------------- /gulp/readappconfig.js: -------------------------------------------------------------------------------- 1 | var _ = require('lodash'); 2 | var stripJsonComments = require('strip-json-comments'); 3 | var fs = require('fs'); 4 | 5 | var readAppConfig = function(baseConfig) { 6 | var config = {}; 7 | 8 | ['./appconfig.json', './appconfig.default.json'].forEach(function(filename) { 9 | var json = fs.readFileSync(filename); 10 | 11 | if (json) { 12 | var data = JSON.parse(stripJsonComments(json.toString('utf8'))); 13 | config = _.defaults(config, data); 14 | } 15 | }); 16 | 17 | config = _.defaults(config, baseConfig); 18 | 19 | return config; 20 | }; 21 | 22 | module.exports = exports = readAppConfig; 23 | -------------------------------------------------------------------------------- /gulp/streamaspromise.js: -------------------------------------------------------------------------------- 1 | var Q = require('q'); 2 | 3 | /** 4 | * helper to wrap a stream with a promise for easy chaining 5 | * @param stream 6 | * @returns {Q.Promise} 7 | */ 8 | var streamAsPromise = function(stream) { 9 | var def = Q.defer(); 10 | 11 | stream 12 | .on('end', function() { 13 | def.resolve(); 14 | }) 15 | .on('error', function(e) { 16 | def.reject(e); 17 | }) 18 | ; 19 | 20 | return def.promise; 21 | }; 22 | 23 | module.exports = exports = streamAsPromise; 24 | -------------------------------------------------------------------------------- /scripts/OSS/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | -------------------------------------------------------------------------------- /scripts/OSS/oss/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/scripts/OSS/oss/__init__.py -------------------------------------------------------------------------------- /scripts/OSS/oss/pkg_info.py: -------------------------------------------------------------------------------- 1 | package = "oss" 2 | version = "0.4.2" 3 | url = "http://oss.aliyun.com" 4 | license = "MIT License" 5 | short_description = "Command line tool for managing Aliyun Open Storage Service." 6 | long_description = """ 7 | osscmd lets you create/delete/list bucket and upload/download/copy/delete file from/to 8 | Aliyun OSS (Open Storage Service). 9 | """ 10 | 11 | -------------------------------------------------------------------------------- /src/config.js.template: -------------------------------------------------------------------------------- 1 | angular.module('blocktrail.config', []).constant('CONFIG', <%= APPCONFIG_JSON %>); 2 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/favicon.ico -------------------------------------------------------------------------------- /src/font/Lato-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Bold.woff -------------------------------------------------------------------------------- /src/font/Lato-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Bold.woff2 -------------------------------------------------------------------------------- /src/font/Lato-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Light.woff -------------------------------------------------------------------------------- /src/font/Lato-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Light.woff2 -------------------------------------------------------------------------------- /src/font/Lato-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Regular.woff -------------------------------------------------------------------------------- /src/font/Lato-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Lato-Regular.woff2 -------------------------------------------------------------------------------- /src/font/Neo-Sans-Pro-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Neo-Sans-Pro-Bold.ttf -------------------------------------------------------------------------------- /src/font/Neo-Sans-Pro-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Neo-Sans-Pro-Medium.ttf -------------------------------------------------------------------------------- /src/font/Neo-Sans-Pro.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Neo-Sans-Pro.ttf -------------------------------------------------------------------------------- /src/font/Open-Sans-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Open-Sans-300.woff -------------------------------------------------------------------------------- /src/font/Open-Sans-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Open-Sans-400.woff -------------------------------------------------------------------------------- /src/font/Open-Sans-600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Open-Sans-600.woff -------------------------------------------------------------------------------- /src/font/Open-Sans-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Open-Sans-700.woff -------------------------------------------------------------------------------- /src/font/Roboto-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Roboto-400.woff2 -------------------------------------------------------------------------------- /src/font/Roboto-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/font/Roboto-700.woff2 -------------------------------------------------------------------------------- /src/fontello/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/fontello/font/fontello.eot -------------------------------------------------------------------------------- /src/fontello/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/fontello/font/fontello.ttf -------------------------------------------------------------------------------- /src/fontello/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/fontello/font/fontello.woff -------------------------------------------------------------------------------- /src/fontello/font/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/fontello/font/fontello.woff2 -------------------------------------------------------------------------------- /src/img/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/android.png -------------------------------------------------------------------------------- /src/img/appscreen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/appscreen.jpg -------------------------------------------------------------------------------- /src/img/banner-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/banner-bg.jpg -------------------------------------------------------------------------------- /src/img/bitonic-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/bitonic-logo.png -------------------------------------------------------------------------------- /src/img/blank_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/blank_profile.png -------------------------------------------------------------------------------- /src/img/btc-home-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/btc-home-banner.png -------------------------------------------------------------------------------- /src/img/btc-perspective-screen-transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/btc-perspective-screen-transparent.png -------------------------------------------------------------------------------- /src/img/btc-showcase-devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/btc-showcase-devices.png -------------------------------------------------------------------------------- /src/img/glidera-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/glidera-bright.png -------------------------------------------------------------------------------- /src/img/home-bitcoin-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/home-bitcoin-icon.png -------------------------------------------------------------------------------- /src/img/home-key-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/home-key-icon.png -------------------------------------------------------------------------------- /src/img/home-qr-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/home-qr-icon.png -------------------------------------------------------------------------------- /src/img/homepage_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/homepage_img.jpg -------------------------------------------------------------------------------- /src/img/ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/ios.png -------------------------------------------------------------------------------- /src/img/logo-btc-reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/logo-btc-reverse.png -------------------------------------------------------------------------------- /src/img/logo-btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/logo-btc.png -------------------------------------------------------------------------------- /src/img/logo-btc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/logo-btc2.png -------------------------------------------------------------------------------- /src/img/multidevice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/multidevice.png -------------------------------------------------------------------------------- /src/img/qr-code@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/qr-code@2x.png -------------------------------------------------------------------------------- /src/img/simplex-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/simplex-logo.png -------------------------------------------------------------------------------- /src/img/wallet3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/img/wallet3d.png -------------------------------------------------------------------------------- /src/js/modules/core/controllers/dialog-spinner-modal/dialog-spinner-modal.ctrl.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | "use strict"; 3 | 4 | angular.module("blocktrail.core") 5 | .controller("DialogSpinnerModalCtrl", DialogSpinnerModalCtrl); 6 | 7 | function DialogSpinnerModalCtrl($scope, $modalInstance, message, dialogId) { 8 | $scope.message = message; 9 | 10 | $scope.dismiss = function() { 11 | $modalInstance.dismiss("dismiss"); 12 | }; 13 | 14 | $scope.$on("dialog:" + dialogId, function(event, message) { 15 | $scope.message = message; 16 | }); 17 | } 18 | })(); 19 | -------------------------------------------------------------------------------- /src/js/modules/core/controllers/dialog-spinner-modal/dialog-spinner-modal.tpl.html: -------------------------------------------------------------------------------- 1 |
{{ message.body | translate }}
7 | 8 | 9 |{{ message.bodyExtra | translate }}
10 | 11 |{{ 'SECURITY_REMINDER_2FA' | translate }}
5 |Please enter a number below
2 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/examples/partials/simpleInput.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/bower.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | install: { 4 | // defaults are fine 5 | } 6 | }; 7 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/bump.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | options: { 4 | files: ['package.json', 'intl-tel-input.jquery.json', 'component.json'], 5 | updateConfigs: ['package'], 6 | commitFiles: ['-a'], 7 | pushTo: 'origin' 8 | } 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/exec.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | evenizer: { 4 | command: "evenizer --resize -i src/img/flags/@2x/*.png" 5 | } 6 | }; 7 | }; 8 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/jasmine.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | src: [ 4 | 'src/js/data.js', 5 | 'build/js/intlTelInput.min.js', 6 | 'lib/libphonenumber/build/utils.js' 7 | ], 8 | options: { 9 | vendor: [ 10 | 'lib/jquery/jquery.js', 11 | 'lib/jasmine-jquery/jasmine-jquery.js' 12 | ], 13 | helpers: [ 14 | 'src/spec/helpers/**/*.js' 15 | ], 16 | specs: [ 17 | 'src/spec/tests/**/*.js' 18 | ], 19 | outfile: 'spec.html', 20 | keepRunner: true 21 | } 22 | }; 23 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/jshint.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | dev: "src/js/**/*.js", 4 | build: "tmp/wrapped.js", 5 | options: { 6 | // this is for data.js which sometimes has commas on the following line 7 | laxcomma: true 8 | } 9 | }; 10 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/retinafy.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | options: { 4 | sizes: { 5 | '50%': { 6 | suffix: '' 7 | }, 8 | '100%': { 9 | suffix: '@2x' 10 | } 11 | } 12 | }, 13 | files: { 14 | expand: true, 15 | cwd: 'src/img/flags/@2x/', 16 | src: ['*.png'], 17 | dest: 'src/img/flags/' 18 | } 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/sass.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | main: { 4 | options: { 5 | sourcemap: "none", 6 | style: "compressed" 7 | }, 8 | files: { 9 | 'build/css/intlTelInput.css': 'src/css/intlTelInput.scss' 10 | } 11 | }, 12 | demo: { 13 | options: { 14 | sourcemap: "none" 15 | }, 16 | files: { 17 | 'build/css/demo.css': 'src/css/demo.scss' 18 | } 19 | } 20 | }; 21 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/shell.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | publish: { 4 | command: 'npm publish' 5 | } 6 | }; 7 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/uglify.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | options: { 4 | banner: '/*\n' + 5 | 'International Telephone Input v<%= package.version %>\n' + 6 | '<%= package.repository.url %>\n' + 7 | '*/\n' 8 | }, 9 | dev: { 10 | options: { 11 | beautify: true, 12 | compress: false, 13 | mangle: false, 14 | preserveComments: true 15 | }, 16 | files: { 17 | 'build/js/intlTelInput.js': 'tmp/wrapped.js' 18 | } 19 | }, 20 | prod: { 21 | files: { 22 | 'tmp/wrapped.min.js': 'tmp/wrapped.js' 23 | } 24 | } 25 | }; 26 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/grunt/watch.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | return { 3 | js: { 4 | files: "src/js/**/*.js", 5 | tasks: "js" 6 | }, 7 | pluginCss: { 8 | files: ["src/css/flags.scss", "src/css/intlTelInput.scss"], 9 | tasks: "sass:main" 10 | }, 11 | demoCss: { 12 | files: "src/css/demo.scss", 13 | tasks: "sass:demo" 14 | } 15 | }; 16 | }; -------------------------------------------------------------------------------- /src/lib/intl-tel-input/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Exposing intl-tel-input as a component 3 | */ 4 | module.exports = require("./build/js/intlTelInput"); 5 | -------------------------------------------------------------------------------- /src/lib/intl-tel-input/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/lib/intl-tel-input/screenshot.png -------------------------------------------------------------------------------- /src/lib/intl-tel-input/src/css/sprite@2x.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blocktrail/blocktrail-webwallet/ecb0fb7fb454bb6d766fd701bb890c75764503fe/src/lib/intl-tel-input/src/css/sprite@2x.scss -------------------------------------------------------------------------------- /src/lib/intl-tel-input/src/js/wrapper.js.ejs: -------------------------------------------------------------------------------- 1 | // wrap in UMD - see https://github.com/umdjs/umd/blob/master/jqueryPlugin.js 2 | (function (factory) { 3 | if (typeof define === "function" && define.amd) { 4 | define(["jquery"], function($) { 5 | factory($, window, document); 6 | }); 7 | } else { 8 | factory(jQuery, window, document); 9 | } 10 | }(function ($, window, document, undefined) { 11 | "use strict"; 12 | 13 | <%- plugin %> 14 | <%- data %> 15 | 16 | })); -------------------------------------------------------------------------------- /src/lib/intl-tel-input/src/spec/tests/methods/getCountryData.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | describe("getCountryData: use static method getCountryData", function() { 4 | 5 | var countryData; 6 | 7 | beforeEach(function() { 8 | intlSetup(); 9 | countryData = $.fn.intlTelInput.getCountryData(); 10 | }); 11 | 12 | afterEach(function() { 13 | countryData = null; 14 | }); 15 | 16 | it("gets the country data object", function() { 17 | expect(countryData.length).toEqual(totalCountries); 18 | }); 19 | 20 | }); -------------------------------------------------------------------------------- /src/lib/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.4", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "dist/cdn", 10 | "speed", 11 | "test", 12 | "*.md", 13 | "AUTHORS.txt", 14 | "Gruntfile.js", 15 | "package.json" 16 | ], 17 | "devDependencies": { 18 | "sizzle": "2.1.1-jquery.2.1.2", 19 | "requirejs": "2.1.10", 20 | "qunit": "1.14.0", 21 | "sinon": "1.8.1" 22 | }, 23 | "keywords": [ 24 | "jquery", 25 | "javascript", 26 | "library" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /src/lib/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /src/lib/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /src/lib/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/attributes.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./attributes/attr", 4 | "./attributes/prop", 5 | "./attributes/classes", 6 | "./attributes/val" 7 | ], function( jQuery ) { 8 | 9 | // Return jQuery for attributes-only inclusion 10 | return jQuery; 11 | }); 12 | -------------------------------------------------------------------------------- /src/lib/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | 3 | function addGetHookIf( conditionFn, hookFn ) { 4 | // Define the hook, we'll check on the first run if it's really needed. 5 | return { 6 | get: function() { 7 | if ( conditionFn() ) { 8 | // Hook not needed (or it's not possible to use it due 9 | // to missing dependency), remove it. 10 | delete this.get; 11 | return; 12 | } 13 | 14 | // Hook needed; redefine it so that the support test is not executed again. 15 | return (this.get = hookFn).apply( this, arguments ); 16 | } 17 | }; 18 | } 19 | 20 | return addGetHookIf; 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | jQuery.expr.filters.hidden = function( elem ) { 7 | // Support: Opera <= 12.12 8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements 9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 10 | }; 11 | jQuery.expr.filters.visible = function( elem ) { 12 | return !jQuery.expr.filters.hidden( elem ); 13 | }; 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/swap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | jQuery.swap = function( elem, options, callback, args ) { 7 | var ret, name, 8 | old = {}; 9 | 10 | // Remember the old values, and insert the new ones 11 | for ( name in options ) { 12 | old[ name ] = elem.style[ name ]; 13 | elem.style[ name ] = options[ name ]; 14 | } 15 | 16 | ret = callback.apply( elem, args || [] ); 17 | 18 | // Revert the old values 19 | for ( name in options ) { 20 | elem.style[ name ] = old[ name ]; 21 | } 22 | 23 | return ret; 24 | }; 25 | 26 | return jQuery.swap; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return function( elem ) { 3 | // Support: IE<=11+, Firefox<=30+ (#15098, #14150) 4 | // IE throws on elements created in popups 5 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6 | if ( elem.ownerDocument.defaultView.opener ) { 7 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 8 | } 9 | 10 | return window.getComputedStyle( elem, null ); 11 | }; 12 | }); 13 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/var/isHidden.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | // css is assumed 5 | ], function( jQuery ) { 6 | 7 | return function( elem, el ) { 8 | // isHidden might be called from jQuery#filter function; 9 | // in that case, element will be second argument 10 | elem = el || elem; 11 | return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/data/accepts.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | jQuery.acceptData = function( owner ) { 9 | // Accepts only: 10 | // - Node 11 | // - Node.ELEMENT_NODE 12 | // - Node.DOCUMENT_NODE 13 | // - Object 14 | // - Any 15 | /* jshint -W018 */ 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | return jQuery.acceptData; 20 | }); 21 | -------------------------------------------------------------------------------- /src/lib/jquery/src/data/var/data_priv.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/data/var/data_user.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./traversing" 4 | ], function( jQuery ) { 5 | 6 | // The number of elements contained in the matched element set 7 | jQuery.fn.size = function() { 8 | return this.length; 9 | }; 10 | 11 | jQuery.fn.andSelf = jQuery.fn.addBack; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /src/lib/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | jQuery.expr.filters.animated = function( elem ) { 8 | return jQuery.grep(jQuery.timers, function( fn ) { 9 | return elem === fn.elem; 10 | }).length; 11 | }; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /src/lib/jquery/src/event/ajax.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | // Attach a bunch of functions for handling common AJAX events 7 | jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { 8 | jQuery.fn[ type ] = function( fn ) { 9 | return this.on( type, fn ); 10 | }; 11 | }); 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /src/lib/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | support.focusinBubbles = "onfocusin" in window; 6 | 7 | return support; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /src/lib/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | jQuery._evalUrl = function( url ) { 6 | return jQuery.ajax({ 7 | url: url, 8 | type: "GET", 9 | dataType: "script", 10 | async: false, 11 | global: false, 12 | "throws": true 13 | }); 14 | }; 15 | 16 | return jQuery._evalUrl; 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /src/lib/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /src/lib/jquery/src/queue/delay.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../queue", 4 | "../effects" // Delay is optional because of this dependency 5 | ], function( jQuery ) { 6 | 7 | // Based off of the plugin by Clint Helfers, with permission. 8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/ 9 | jQuery.fn.delay = function( time, type ) { 10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 11 | type = type || "fx"; 12 | 13 | return this.queue( type, function( next, hooks ) { 14 | var timeout = setTimeout( next, time ); 15 | hooks.stop = function() { 16 | clearTimeout( timeout ); 17 | }; 18 | }); 19 | }; 20 | 21 | return jQuery.fn.delay; 22 | }); 23 | -------------------------------------------------------------------------------- /src/lib/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | jQuery.find = Sizzle; 7 | jQuery.expr = Sizzle.selectors; 8 | jQuery.expr[":"] = jQuery.expr.pseudos; 9 | jQuery.unique = Sizzle.uniqueSort; 10 | jQuery.text = Sizzle.getText; 11 | jQuery.isXMLDoc = Sizzle.isXML; 12 | jQuery.contains = Sizzle.contains; 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /src/lib/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /src/lib/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | return jQuery.expr.match.needsContext; 6 | }); 7 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.push; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /src/lib/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /src/lib/libphonenumber/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "libphonenumber", 3 | "main": "dist/libphonenumber.js", 4 | "version": "0.9.2", 5 | "homepage": "https://github.com/nathanhammond/libphonenumber", 6 | "authors": [ 7 | "Nathan Hammond