From ff92a0574c0c7b86c2f5c55f9f3ff4a1e7874f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E5=9F=8E=20=E8=B7=AF?= Date: Wed, 8 Nov 2017 14:46:41 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BB=96=E8=A8=80=E8=AA=9E=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AB=E3=83=80=E3=83=BC=E6=A7=8B=E6=88=90?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4=E3=81=97=E3=81=A6=E3=81=8A=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 332 +----------------- lang/ja/README.md | 330 +++++++++++++++++ .../ja/android}/supportReactNative/.gitignore | 0 .../android}/supportReactNative/build.gradle | 0 .../supportReactNative/proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 0 .../support/reactnative/FoxConfigModule.java | 0 .../support/reactnative/FoxEventModule.java | 0 .../fox/support/reactnative/FoxModule.java | 0 .../support/reactnative/FoxReactPackage.java | 0 .../fox/support/reactnative/FoxReactUtil.java | 0 .../src/main/res/values/strings.xml | 0 {exapp => lang/ja/exapp}/.babelrc | 0 {exapp => lang/ja/exapp}/.buckconfig | 0 {exapp => lang/ja/exapp}/.flowconfig | 0 {exapp => lang/ja/exapp}/.gitattributes | 0 {exapp => lang/ja/exapp}/.gitignore | 0 {exapp => lang/ja/exapp}/.watchmanconfig | 0 {exapp => lang/ja/exapp}/App.js | 0 {exapp => lang/ja/exapp}/__tests__/App.js | 0 .../ja/exapp}/android/app/.gitignore | 0 {exapp => lang/ja/exapp}/android/app/BUCK | 0 .../ja/exapp}/android/app/build.gradle | 0 .../ja/exapp}/android/app/proguard-rules.pro | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../app/src/main/assets/index.android.bundle | 0 .../src/main/assets/index.android.bundle.meta | 0 .../src/main/java/com/exapp/MainActivity.java | 0 .../main/java/com/exapp/MainApplication.java | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../app/src/main/res/values/strings.xml | 0 .../app/src/main/res/values/styles.xml | 0 {exapp => lang/ja/exapp}/android/build.gradle | 0 .../ja/exapp}/android/gradle.properties | 0 .../android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 {exapp => lang/ja/exapp}/android/gradlew | 0 {exapp => lang/ja/exapp}/android/gradlew.bat | 0 .../ja/exapp}/android/keystores/BUCK | 0 .../keystores/debug.keystore.properties | 0 .../ja/exapp}/android/settings.gradle | 0 {exapp => lang/ja/exapp}/app.json | 0 {exapp => lang/ja/exapp}/fox-android.js | 0 {exapp => lang/ja/exapp}/fox-ios.js | 0 {exapp => lang/ja/exapp}/fox.js | 0 {exapp => lang/ja/exapp}/index.js | 0 {exapp => lang/ja/exapp}/ios/Podfile | 0 {exapp => lang/ja/exapp}/ios/Podfile.lock | 0 .../ja/exapp}/ios/exapp-tvOS/Info.plist | 0 .../ja/exapp}/ios/exapp-tvOSTests/Info.plist | 0 .../ios/exapp.xcodeproj/project.pbxproj | 0 .../xcschemes/exapp-tvOS.xcscheme | 0 .../xcshareddata/xcschemes/exapp.xcscheme | 0 .../contents.xcworkspacedata | 0 .../ja/exapp}/ios/exapp/AppDelegate.h | 0 .../ja/exapp}/ios/exapp/AppDelegate.m | 0 .../ios/exapp/Base.lproj/LaunchScreen.xib | 0 .../AppIcon.appiconset/Contents.json | 0 {exapp => lang/ja/exapp}/ios/exapp/Info.plist | 0 {exapp => lang/ja/exapp}/ios/exapp/main.m | 0 .../ja/exapp}/ios/exappTests/Info.plist | 0 .../ja/exapp}/ios/exappTests/exappTests.m | 0 {exapp => lang/ja/exapp}/package-lock.json | 0 {exapp => lang/ja/exapp}/package.json | 0 {exapp => lang/ja/exapp}/run-android | 0 {ios => lang/ja/ios}/.gitignore | 0 .../FoxReact.xcodeproj/project.pbxproj | 0 .../xcshareddata/xcschemes/FoxReact.xcscheme | 0 .../FoxReact/CYZFoxAppDelegateSwizzling.m | 0 .../FoxReact/FoxReact/CYZFoxReactModule.h | 0 .../FoxReact/FoxReact/CYZFoxReactModule.m | 0 74 files changed, 334 insertions(+), 328 deletions(-) create mode 100644 lang/ja/README.md rename {android => lang/ja/android}/supportReactNative/.gitignore (100%) rename {android => lang/ja/android}/supportReactNative/build.gradle (100%) rename {android => lang/ja/android}/supportReactNative/proguard-rules.pro (100%) rename {android => lang/ja/android}/supportReactNative/src/main/AndroidManifest.xml (100%) rename {android => lang/ja/android}/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java (100%) rename {android => lang/ja/android}/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java (100%) rename {android => lang/ja/android}/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java (100%) rename {android => lang/ja/android}/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java (100%) rename {android => lang/ja/android}/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java (100%) rename {android => lang/ja/android}/supportReactNative/src/main/res/values/strings.xml (100%) rename {exapp => lang/ja/exapp}/.babelrc (100%) rename {exapp => lang/ja/exapp}/.buckconfig (100%) rename {exapp => lang/ja/exapp}/.flowconfig (100%) rename {exapp => lang/ja/exapp}/.gitattributes (100%) rename {exapp => lang/ja/exapp}/.gitignore (100%) rename {exapp => lang/ja/exapp}/.watchmanconfig (100%) rename {exapp => lang/ja/exapp}/App.js (100%) rename {exapp => lang/ja/exapp}/__tests__/App.js (100%) rename {exapp => lang/ja/exapp}/android/app/.gitignore (100%) rename {exapp => lang/ja/exapp}/android/app/BUCK (100%) rename {exapp => lang/ja/exapp}/android/app/build.gradle (100%) rename {exapp => lang/ja/exapp}/android/app/proguard-rules.pro (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/AndroidManifest.xml (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/assets/index.android.bundle (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/assets/index.android.bundle.meta (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/java/com/exapp/MainActivity.java (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/java/com/exapp/MainApplication.java (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/values/strings.xml (100%) rename {exapp => lang/ja/exapp}/android/app/src/main/res/values/styles.xml (100%) rename {exapp => lang/ja/exapp}/android/build.gradle (100%) rename {exapp => lang/ja/exapp}/android/gradle.properties (100%) rename {exapp => lang/ja/exapp}/android/gradle/wrapper/gradle-wrapper.jar (100%) rename {exapp => lang/ja/exapp}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {exapp => lang/ja/exapp}/android/gradlew (100%) rename {exapp => lang/ja/exapp}/android/gradlew.bat (100%) rename {exapp => lang/ja/exapp}/android/keystores/BUCK (100%) rename {exapp => lang/ja/exapp}/android/keystores/debug.keystore.properties (100%) rename {exapp => lang/ja/exapp}/android/settings.gradle (100%) rename {exapp => lang/ja/exapp}/app.json (100%) rename {exapp => lang/ja/exapp}/fox-android.js (100%) rename {exapp => lang/ja/exapp}/fox-ios.js (100%) rename {exapp => lang/ja/exapp}/fox.js (100%) rename {exapp => lang/ja/exapp}/index.js (100%) rename {exapp => lang/ja/exapp}/ios/Podfile (100%) rename {exapp => lang/ja/exapp}/ios/Podfile.lock (100%) rename {exapp => lang/ja/exapp}/ios/exapp-tvOS/Info.plist (100%) rename {exapp => lang/ja/exapp}/ios/exapp-tvOSTests/Info.plist (100%) rename {exapp => lang/ja/exapp}/ios/exapp.xcodeproj/project.pbxproj (100%) rename {exapp => lang/ja/exapp}/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme (100%) rename {exapp => lang/ja/exapp}/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme (100%) rename {exapp => lang/ja/exapp}/ios/exapp.xcworkspace/contents.xcworkspacedata (100%) rename {exapp => lang/ja/exapp}/ios/exapp/AppDelegate.h (100%) rename {exapp => lang/ja/exapp}/ios/exapp/AppDelegate.m (100%) rename {exapp => lang/ja/exapp}/ios/exapp/Base.lproj/LaunchScreen.xib (100%) rename {exapp => lang/ja/exapp}/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename {exapp => lang/ja/exapp}/ios/exapp/Info.plist (100%) rename {exapp => lang/ja/exapp}/ios/exapp/main.m (100%) rename {exapp => lang/ja/exapp}/ios/exappTests/Info.plist (100%) rename {exapp => lang/ja/exapp}/ios/exappTests/exappTests.m (100%) rename {exapp => lang/ja/exapp}/package-lock.json (100%) rename {exapp => lang/ja/exapp}/package.json (100%) rename {exapp => lang/ja/exapp}/run-android (100%) rename {ios => lang/ja/ios}/.gitignore (100%) rename {ios => lang/ja/ios}/FoxReact/FoxReact.xcodeproj/project.pbxproj (100%) rename {ios => lang/ja/ios}/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme (100%) rename {ios => lang/ja/ios}/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m (100%) rename {ios => lang/ja/ios}/FoxReact/FoxReact/CYZFoxReactModule.h (100%) rename {ios => lang/ja/ios}/FoxReact/FoxReact/CYZFoxReactModule.m (100%) diff --git a/README.md b/README.md index fdd8643..275c9b2 100644 --- a/README.md +++ b/README.md @@ -1,330 +1,6 @@ -# Integration Guide +# Force Operation X ReactNative SDK Integration Guide -## Index +### LANGUAGE -* **[1. インストール](#install_sdk)** - * [1.1 OS共通手順](#install_common) - * [1.2 iOS](#install_ios) - * [1.3 Android](#install_android) - * [1.3.1 パーミッション](#android_permission) - * [1.3.2 ProGuardを利用する場合](#android_proguard) -* **[2. アクティベート](#activation)** -* **[3. 広告成果の計測](#measurement)** - * [3.1 インストール成果計測](#measurement_install) - * [3.2 インストールリファラ計測(Androidのみ)](#measurement_installreferrer) - * [3.3 リエンゲージメント成果計測](#measurement_reengagement) -* **[4. アプリ内イベントの計測](#measurement_event)** - * [4.1 チュートリアルイベント](#measurement_event_tutorial) - * [4.2 課金イベント](#measurement_event_purchase) - * [4.3 セッション計測](#measurement_event_session) - - -
- -## 1. インストール - -
- -#### 1.1 OS共通手順 - -[リリースページ](https://github.com/forceoperationx/react-native-sdk/releases)よりSDKのzipファイルをダウンロードします。
-zipファイルの展開後、`js`ディレクトリ内のjsファイルを導入先となるReactNativeプロジェクトにコピーします。 - -* `fox.js` -* `fox-ios.js` -* `fox-android.js` - -
- -#### 1.2 iOS -**【 libraryファイルによる導入 】** -共通手順でダウンロードしたSDKのzipファイルに同梱されている iOS SDK libraryファイル全てを導入先となるiOSプロジェクトのlibrary/framework search pathにコピーし、xcodeでlinkします。 -* `libFoxReact.a` -* `CYZFox.framework` - - -
- -#### 1.3 Android - -**【 Gradleによる導入 】** - -[ build.gradle ]
-```gradle -repositories { - maven { - url "https://github.com/cyber-z/public-fox-android-sdk/raw/master/mavenRepo" - } -} - -dependencies { - compile 'co.cyberz.fox:track-core:X.X.X' - compile 'co.cyberz.fox.support:track-reactnative:X.X.X' -} -``` - -> ※ `co.cyberz.fox:track-core:`のバージョンは4.3.0以上を指定してください。4.3.0未満はサポートしておりません。 - -> ※ `co.cyberz.fox.support:track-reactnative:`のバージョンはリリースページからバージョンを選択してください。 - -**【 jarファイルによる導入 】** - -共通手順でダウンロードしたSDKのzipファイルに同梱されているAndroid SDKのlibs内のjarファイル全てを導入先となるAndroidプロジェクトのlibsにコピーします。 -* `FOX_Android_SDK_X.X.X.jar` -* `FOX_Android_SDK_Support_ReactNative_X.X.X.jar` - -
- -#### 1.3.1 パーミッション - -F.O.X SDKでは下記3つのパーミッションを利用します。 -<Manifest>タグ内に次のパーミッションの設定を追加します。 - -```xml - - -``` - -パーミッション|Protection Level|必須|概要 -:---|:---:|:---:|:--- -INTERNET|Normal|必須|F.O.X SDKが通信を行うために必要となります。 -WRITE_EXTERNAL_STORAGE ※1|Dangerous|任意|ストレージを利用した重複排除機能向上に必要となります。(※2) - -> ※1 READ_EXTERNAL_STORAGE及びWRITE_EXTERNAL_STORAGEパーミッションは、外部ストレージにデータを記録することでアプリの再インストール時により正確にインストール計測を行うために必要ですが、必須ではありません。 - -> ※2 Android MよりProtectionLevelが`dangerous`に指定されているパーミッションを必要とする機能を利用するには、ユーザーの許可が必要になります。詳細はF.O.X Android SDKドキュメントの[外部ストレージを利用した重複排除設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/external_storage/README.md)をご確認ください。 - -
- -#### 1.3.2 ProGuardを利用する場合 - -ProGuard を利用してアプリケーションの難読化を行う際は F.O.X SDK のメソッドが対象とならないよう、以下の設定 を追加してください。 - -``` --keepattributes *Annotation* --keep class co.cyberz.** { *; } --keep class com.google.android.gms.ads.identifier.* { *; } --dontwarn co.cyberz.** -# Gradle経由でSDKをインストールしている場合、下記jarファイルの指定は不要です。 --libraryjars libs/FOX_Android_SDK_X.X.X.jar --libraryjars libs/FOX_Android_SDK_Support_ReactNative_X.X.X.jar -``` - -
- -## 2. アクティベート - -F.O.Xのライブラリを呼び出す際は必ず`fox.js`をimportします。以降、サンプル内ではCYZFoxと定義します。 - -```js -// fox.jsへのパスを通します -import CYZFox from './fox.js'; - -... - -componentDidMount() { -... - const config = { - ios : { - appId : 6421, - appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", - appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", - customizedUserAgentEnabled : true - }, - android : { - appId : 2684, - appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", - appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", - }, - // デバッグモードのON/OFF - debugModeEnabled : false - } - CYZFox.activate(config); -... -``` - - -> * `appId`, `appSalt`, `appKey`はF.O.Xのコンソールで発行された値を設定します。 -> * `customizedUserAgentEnabled`はiOS固有の設定で、アプリ内のWebViewのUserAgentをカスタマイズしている場合、trueに設定してください。 -> * `debugModeEnabled`はF.O.X SDKのデバッグログを出力する際にtrueを設定します。リリースの際はfalseに設定してください。 - -
- -## 3. 広告成果の計測 - -
- -#### 3.1 インストール成果計測 - -アプリの初回起動のインストール計測を実装することで、広告の効果測定を行うことができます。
-以下のコードをアプリの起動時に必ず呼ばれる箇所に効果測定用の処理を追加します。 - -```js -// fox.jsへのパスを通します -import CYZFox from './fox.js'; - -... - -const option = { - buid : "UserID", - redirectURL : "fox://react", - trackingCompletionHandler : () => {console.log("tracking completed implementation")}, - durationSinceClick : 60 * 60 * 12, - deferredDeeplinkHandler : (deepInfo) => {console.log(`deep link : ${deepInfo? deepInfo["deeplink"] : "empty"}`)} -} -// -CYZFox.trackInstall(option); -``` -> * trackInstallはオプション(引数)無しでも指定することが可能です。 -> * インストール計測のオプション一覧 -> -> |項目|詳細| -> |:---:|:---| -> |redirectURL|ブラウザを起動させた時に遷移させる先のURL。アプリ自身のカスタムURLも指定可能。| -> |buid|広告主端末ID(アプリのユーザーを特定するID)| -> |trackingCompletionHandler|インストール計測完了のコールバックハンドラ| -> |durationSinceClick|ディファードディープリンクを実行する際の、対象となるラストクリックの対象期間(秒)(初回起動からどれだけ遡るかを秒数で指定)
デフォルト : 86400 (1日)| -> |deferredDeeplinkHandler|ディープリンクを受け取るためのコールバックハンドラ| -> - -
- -#### 3.2 インストールリファラ計測(Androidのみ) - -インストールリファラーを用いたインストール計測を行うために下記の設定を<application>タグに追加します。 - -``` - - - - - -``` - -> 既に"com.android.vending.INSTALL_REFERRER"に対するレシーバークラスが定義されている場合には、F.O.X Android SDKドキュメントの[複数のINSTALL_REFERRERレシーバーを共存させる場合の設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/install_referrer/README.md) をご参照ください。 - -
- -#### 3.3 リエンゲージメント成果計測 - -リエンゲージメント計測(カスタムURLスキーム経由の起動を計測)するために必要な設定を行います。iOSは設定なしで自動で計測を行いますがAndroidは以下の設定が必要となります。
- -AndroidManifest.xmlのトップActivity (アプリ内の初めに呼ばれるActivity) の<activity>タグ内に、カスタムURLスキームでアプリを起動出来るよう以下のようにintent-filterを追記します。
-※ リエンゲージメント計測はカスタムURLスキームでActivityが呼び出されることで計測を行います。 - -```xml - - - - - - - - - - - - - - - - -``` - -> ※ カスタムURLスキームの詳細は[Android Developers (暗黙的インテントの受信)](https://developer.android.com/guide/components/intents-filters.html#Receiving) をご確認ください。 - -
- -## 4. アプリ内イベントの計測 - -会員登録、チュートリアル突破、課金など任意の成果地点にイベント計測を実装することで、流入元広告のLTVを測定することができます。
-尚、イベント計測が不要の場合には、本項目の実装を省略できます。成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。
-アプリ内イベントを計測するには`trackEvent`メソッドを利用します。 - -会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内に以下のようにイベント計測処理を記述します。 - -
- -#### 4.1 チュートリアルイベント - -**【 実装例 】** - -```js -const event = { - ios : { - eventName : "iOSチュートリアル突破", - ltvId : 5973, - }, - android : { - eventName : "Androidチュートリアル突破", - ltvId : 5974, - }, - buid : "USER_001" -} -CYZFox.trackEvent(event); -``` - -
- -#### 4.2 課金イベント - -**【 実装例 】** - -```js -const event = { - ios : { - eventName : "ios-purchase", - ltvId : 5975, - }, - android : { - eventName : "android-purchase", - ltvId : 5976, - }, - buid : "USER_001", - value : 2, - orderId : "react-orderId", - sku : "react-sku", - itemName : "react-itemname", - price : 18.6, - quantity : 3, - currency : "USD", - eventInfo : { - name : "wuwei", - age : 35, - married : true - }, - extraInfo : { - eventId : "pur001", - coupon : "10%" - } -} -CYZFox.trackEvent(event); -``` - -> * イベント計測時に指定するパラメータ一覧 -> -> |**型**|**必須**|**パラメータ名**|**概要**| -> |:---:|:---:|:---|:---| -> |String|○|eventName|イベント名| -> |int|○|ltvId|成果地点ID
管理者より連絡します。その値を入力してください。| -> |String|-|buid|広告主様が管理しているユニークな識別子(会員IDなど)です。 指定できる値は64文字以内の半角英数字です。| -> |double|-|price|金額| -> |String|-|currency|通貨
[ISO 4217](http://ja.wikipedia.org/wiki/ISO_4217) で定義された通貨コードを指定してください。| -> |String|-|sku|SKU| -> |String|-|value|値| -> |String|-|orderId|オーダーID| -> |int|-|quantity|数量| -> |String|-|extraInfo|任意のパラメータのKey/Value
Key値にアンダースコア("_")をパラメータ名の先頭に記述しないでください。また、半角英数字以外は使用できません。| -> |String|-|eventInfo|任意のパラメータ群| - -
- -#### 4.3 セッション計測 - -自然流入と広告流入のインストール数比較、アプリケーションの起動数やユニークユーザー数(DAU/MAU)、継続率等を計測することができます。
-こちらはSDKがアプリの起動時・バックグラウンドからフォアグラウンドへの遷移をiOS/Androidのネイティブ側で自動検知して計測を行うため、実装する必要はありません。 +* [Japanese](./lang/ja/README.md) +* [Chinese(Simplified)](./lang/zh-cn/README.md) diff --git a/lang/ja/README.md b/lang/ja/README.md new file mode 100644 index 0000000..fdd8643 --- /dev/null +++ b/lang/ja/README.md @@ -0,0 +1,330 @@ +# Integration Guide + +## Index + +* **[1. インストール](#install_sdk)** + * [1.1 OS共通手順](#install_common) + * [1.2 iOS](#install_ios) + * [1.3 Android](#install_android) + * [1.3.1 パーミッション](#android_permission) + * [1.3.2 ProGuardを利用する場合](#android_proguard) +* **[2. アクティベート](#activation)** +* **[3. 広告成果の計測](#measurement)** + * [3.1 インストール成果計測](#measurement_install) + * [3.2 インストールリファラ計測(Androidのみ)](#measurement_installreferrer) + * [3.3 リエンゲージメント成果計測](#measurement_reengagement) +* **[4. アプリ内イベントの計測](#measurement_event)** + * [4.1 チュートリアルイベント](#measurement_event_tutorial) + * [4.2 課金イベント](#measurement_event_purchase) + * [4.3 セッション計測](#measurement_event_session) + + +
+ +## 1. インストール + +
+ +#### 1.1 OS共通手順 + +[リリースページ](https://github.com/forceoperationx/react-native-sdk/releases)よりSDKのzipファイルをダウンロードします。
+zipファイルの展開後、`js`ディレクトリ内のjsファイルを導入先となるReactNativeプロジェクトにコピーします。 + +* `fox.js` +* `fox-ios.js` +* `fox-android.js` + +
+ +#### 1.2 iOS +**【 libraryファイルによる導入 】** +共通手順でダウンロードしたSDKのzipファイルに同梱されている iOS SDK libraryファイル全てを導入先となるiOSプロジェクトのlibrary/framework search pathにコピーし、xcodeでlinkします。 +* `libFoxReact.a` +* `CYZFox.framework` + + +
+ +#### 1.3 Android + +**【 Gradleによる導入 】** + +[ build.gradle ]
+```gradle +repositories { + maven { + url "https://github.com/cyber-z/public-fox-android-sdk/raw/master/mavenRepo" + } +} + +dependencies { + compile 'co.cyberz.fox:track-core:X.X.X' + compile 'co.cyberz.fox.support:track-reactnative:X.X.X' +} +``` + +> ※ `co.cyberz.fox:track-core:`のバージョンは4.3.0以上を指定してください。4.3.0未満はサポートしておりません。 + +> ※ `co.cyberz.fox.support:track-reactnative:`のバージョンはリリースページからバージョンを選択してください。 + +**【 jarファイルによる導入 】** + +共通手順でダウンロードしたSDKのzipファイルに同梱されているAndroid SDKのlibs内のjarファイル全てを導入先となるAndroidプロジェクトのlibsにコピーします。 +* `FOX_Android_SDK_X.X.X.jar` +* `FOX_Android_SDK_Support_ReactNative_X.X.X.jar` + +
+ +#### 1.3.1 パーミッション + +F.O.X SDKでは下記3つのパーミッションを利用します。 +<Manifest>タグ内に次のパーミッションの設定を追加します。 + +```xml + + +``` + +パーミッション|Protection Level|必須|概要 +:---|:---:|:---:|:--- +INTERNET|Normal|必須|F.O.X SDKが通信を行うために必要となります。 +WRITE_EXTERNAL_STORAGE ※1|Dangerous|任意|ストレージを利用した重複排除機能向上に必要となります。(※2) + +> ※1 READ_EXTERNAL_STORAGE及びWRITE_EXTERNAL_STORAGEパーミッションは、外部ストレージにデータを記録することでアプリの再インストール時により正確にインストール計測を行うために必要ですが、必須ではありません。 + +> ※2 Android MよりProtectionLevelが`dangerous`に指定されているパーミッションを必要とする機能を利用するには、ユーザーの許可が必要になります。詳細はF.O.X Android SDKドキュメントの[外部ストレージを利用した重複排除設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/external_storage/README.md)をご確認ください。 + +
+ +#### 1.3.2 ProGuardを利用する場合 + +ProGuard を利用してアプリケーションの難読化を行う際は F.O.X SDK のメソッドが対象とならないよう、以下の設定 を追加してください。 + +``` +-keepattributes *Annotation* +-keep class co.cyberz.** { *; } +-keep class com.google.android.gms.ads.identifier.* { *; } +-dontwarn co.cyberz.** +# Gradle経由でSDKをインストールしている場合、下記jarファイルの指定は不要です。 +-libraryjars libs/FOX_Android_SDK_X.X.X.jar +-libraryjars libs/FOX_Android_SDK_Support_ReactNative_X.X.X.jar +``` + +
+ +## 2. アクティベート + +F.O.Xのライブラリを呼び出す際は必ず`fox.js`をimportします。以降、サンプル内ではCYZFoxと定義します。 + +```js +// fox.jsへのパスを通します +import CYZFox from './fox.js'; + +... + +componentDidMount() { +... + const config = { + ios : { + appId : 6421, + appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + customizedUserAgentEnabled : true + }, + android : { + appId : 2684, + appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + }, + // デバッグモードのON/OFF + debugModeEnabled : false + } + CYZFox.activate(config); +... +``` + + +> * `appId`, `appSalt`, `appKey`はF.O.Xのコンソールで発行された値を設定します。 +> * `customizedUserAgentEnabled`はiOS固有の設定で、アプリ内のWebViewのUserAgentをカスタマイズしている場合、trueに設定してください。 +> * `debugModeEnabled`はF.O.X SDKのデバッグログを出力する際にtrueを設定します。リリースの際はfalseに設定してください。 + +
+ +## 3. 広告成果の計測 + +
+ +#### 3.1 インストール成果計測 + +アプリの初回起動のインストール計測を実装することで、広告の効果測定を行うことができます。
+以下のコードをアプリの起動時に必ず呼ばれる箇所に効果測定用の処理を追加します。 + +```js +// fox.jsへのパスを通します +import CYZFox from './fox.js'; + +... + +const option = { + buid : "UserID", + redirectURL : "fox://react", + trackingCompletionHandler : () => {console.log("tracking completed implementation")}, + durationSinceClick : 60 * 60 * 12, + deferredDeeplinkHandler : (deepInfo) => {console.log(`deep link : ${deepInfo? deepInfo["deeplink"] : "empty"}`)} +} +// +CYZFox.trackInstall(option); +``` +> * trackInstallはオプション(引数)無しでも指定することが可能です。 +> * インストール計測のオプション一覧 +> +> |項目|詳細| +> |:---:|:---| +> |redirectURL|ブラウザを起動させた時に遷移させる先のURL。アプリ自身のカスタムURLも指定可能。| +> |buid|広告主端末ID(アプリのユーザーを特定するID)| +> |trackingCompletionHandler|インストール計測完了のコールバックハンドラ| +> |durationSinceClick|ディファードディープリンクを実行する際の、対象となるラストクリックの対象期間(秒)(初回起動からどれだけ遡るかを秒数で指定)
デフォルト : 86400 (1日)| +> |deferredDeeplinkHandler|ディープリンクを受け取るためのコールバックハンドラ| +> + +
+ +#### 3.2 インストールリファラ計測(Androidのみ) + +インストールリファラーを用いたインストール計測を行うために下記の設定を<application>タグに追加します。 + +``` + + + + + +``` + +> 既に"com.android.vending.INSTALL_REFERRER"に対するレシーバークラスが定義されている場合には、F.O.X Android SDKドキュメントの[複数のINSTALL_REFERRERレシーバーを共存させる場合の設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/install_referrer/README.md) をご参照ください。 + +
+ +#### 3.3 リエンゲージメント成果計測 + +リエンゲージメント計測(カスタムURLスキーム経由の起動を計測)するために必要な設定を行います。iOSは設定なしで自動で計測を行いますがAndroidは以下の設定が必要となります。
+ +AndroidManifest.xmlのトップActivity (アプリ内の初めに呼ばれるActivity) の<activity>タグ内に、カスタムURLスキームでアプリを起動出来るよう以下のようにintent-filterを追記します。
+※ リエンゲージメント計測はカスタムURLスキームでActivityが呼び出されることで計測を行います。 + +```xml + + + + + + + + + + + + + + + + +``` + +> ※ カスタムURLスキームの詳細は[Android Developers (暗黙的インテントの受信)](https://developer.android.com/guide/components/intents-filters.html#Receiving) をご確認ください。 + +
+ +## 4. アプリ内イベントの計測 + +会員登録、チュートリアル突破、課金など任意の成果地点にイベント計測を実装することで、流入元広告のLTVを測定することができます。
+尚、イベント計測が不要の場合には、本項目の実装を省略できます。成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。
+アプリ内イベントを計測するには`trackEvent`メソッドを利用します。 + +会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内に以下のようにイベント計測処理を記述します。 + +
+ +#### 4.1 チュートリアルイベント + +**【 実装例 】** + +```js +const event = { + ios : { + eventName : "iOSチュートリアル突破", + ltvId : 5973, + }, + android : { + eventName : "Androidチュートリアル突破", + ltvId : 5974, + }, + buid : "USER_001" +} +CYZFox.trackEvent(event); +``` + +
+ +#### 4.2 課金イベント + +**【 実装例 】** + +```js +const event = { + ios : { + eventName : "ios-purchase", + ltvId : 5975, + }, + android : { + eventName : "android-purchase", + ltvId : 5976, + }, + buid : "USER_001", + value : 2, + orderId : "react-orderId", + sku : "react-sku", + itemName : "react-itemname", + price : 18.6, + quantity : 3, + currency : "USD", + eventInfo : { + name : "wuwei", + age : 35, + married : true + }, + extraInfo : { + eventId : "pur001", + coupon : "10%" + } +} +CYZFox.trackEvent(event); +``` + +> * イベント計測時に指定するパラメータ一覧 +> +> |**型**|**必須**|**パラメータ名**|**概要**| +> |:---:|:---:|:---|:---| +> |String|○|eventName|イベント名| +> |int|○|ltvId|成果地点ID
管理者より連絡します。その値を入力してください。| +> |String|-|buid|広告主様が管理しているユニークな識別子(会員IDなど)です。 指定できる値は64文字以内の半角英数字です。| +> |double|-|price|金額| +> |String|-|currency|通貨
[ISO 4217](http://ja.wikipedia.org/wiki/ISO_4217) で定義された通貨コードを指定してください。| +> |String|-|sku|SKU| +> |String|-|value|値| +> |String|-|orderId|オーダーID| +> |int|-|quantity|数量| +> |String|-|extraInfo|任意のパラメータのKey/Value
Key値にアンダースコア("_")をパラメータ名の先頭に記述しないでください。また、半角英数字以外は使用できません。| +> |String|-|eventInfo|任意のパラメータ群| + +
+ +#### 4.3 セッション計測 + +自然流入と広告流入のインストール数比較、アプリケーションの起動数やユニークユーザー数(DAU/MAU)、継続率等を計測することができます。
+こちらはSDKがアプリの起動時・バックグラウンドからフォアグラウンドへの遷移をiOS/Androidのネイティブ側で自動検知して計測を行うため、実装する必要はありません。 diff --git a/android/supportReactNative/.gitignore b/lang/ja/android/supportReactNative/.gitignore similarity index 100% rename from android/supportReactNative/.gitignore rename to lang/ja/android/supportReactNative/.gitignore diff --git a/android/supportReactNative/build.gradle b/lang/ja/android/supportReactNative/build.gradle similarity index 100% rename from android/supportReactNative/build.gradle rename to lang/ja/android/supportReactNative/build.gradle diff --git a/android/supportReactNative/proguard-rules.pro b/lang/ja/android/supportReactNative/proguard-rules.pro similarity index 100% rename from android/supportReactNative/proguard-rules.pro rename to lang/ja/android/supportReactNative/proguard-rules.pro diff --git a/android/supportReactNative/src/main/AndroidManifest.xml b/lang/ja/android/supportReactNative/src/main/AndroidManifest.xml similarity index 100% rename from android/supportReactNative/src/main/AndroidManifest.xml rename to lang/ja/android/supportReactNative/src/main/AndroidManifest.xml diff --git a/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java b/lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java similarity index 100% rename from android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java rename to lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java diff --git a/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java b/lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java similarity index 100% rename from android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java rename to lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java diff --git a/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java b/lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java similarity index 100% rename from android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java rename to lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java diff --git a/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java b/lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java similarity index 100% rename from android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java rename to lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java diff --git a/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java b/lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java similarity index 100% rename from android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java rename to lang/ja/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java diff --git a/android/supportReactNative/src/main/res/values/strings.xml b/lang/ja/android/supportReactNative/src/main/res/values/strings.xml similarity index 100% rename from android/supportReactNative/src/main/res/values/strings.xml rename to lang/ja/android/supportReactNative/src/main/res/values/strings.xml diff --git a/exapp/.babelrc b/lang/ja/exapp/.babelrc similarity index 100% rename from exapp/.babelrc rename to lang/ja/exapp/.babelrc diff --git a/exapp/.buckconfig b/lang/ja/exapp/.buckconfig similarity index 100% rename from exapp/.buckconfig rename to lang/ja/exapp/.buckconfig diff --git a/exapp/.flowconfig b/lang/ja/exapp/.flowconfig similarity index 100% rename from exapp/.flowconfig rename to lang/ja/exapp/.flowconfig diff --git a/exapp/.gitattributes b/lang/ja/exapp/.gitattributes similarity index 100% rename from exapp/.gitattributes rename to lang/ja/exapp/.gitattributes diff --git a/exapp/.gitignore b/lang/ja/exapp/.gitignore similarity index 100% rename from exapp/.gitignore rename to lang/ja/exapp/.gitignore diff --git a/exapp/.watchmanconfig b/lang/ja/exapp/.watchmanconfig similarity index 100% rename from exapp/.watchmanconfig rename to lang/ja/exapp/.watchmanconfig diff --git a/exapp/App.js b/lang/ja/exapp/App.js similarity index 100% rename from exapp/App.js rename to lang/ja/exapp/App.js diff --git a/exapp/__tests__/App.js b/lang/ja/exapp/__tests__/App.js similarity index 100% rename from exapp/__tests__/App.js rename to lang/ja/exapp/__tests__/App.js diff --git a/exapp/android/app/.gitignore b/lang/ja/exapp/android/app/.gitignore similarity index 100% rename from exapp/android/app/.gitignore rename to lang/ja/exapp/android/app/.gitignore diff --git a/exapp/android/app/BUCK b/lang/ja/exapp/android/app/BUCK similarity index 100% rename from exapp/android/app/BUCK rename to lang/ja/exapp/android/app/BUCK diff --git a/exapp/android/app/build.gradle b/lang/ja/exapp/android/app/build.gradle similarity index 100% rename from exapp/android/app/build.gradle rename to lang/ja/exapp/android/app/build.gradle diff --git a/exapp/android/app/proguard-rules.pro b/lang/ja/exapp/android/app/proguard-rules.pro similarity index 100% rename from exapp/android/app/proguard-rules.pro rename to lang/ja/exapp/android/app/proguard-rules.pro diff --git a/exapp/android/app/src/main/AndroidManifest.xml b/lang/ja/exapp/android/app/src/main/AndroidManifest.xml similarity index 100% rename from exapp/android/app/src/main/AndroidManifest.xml rename to lang/ja/exapp/android/app/src/main/AndroidManifest.xml diff --git a/exapp/android/app/src/main/assets/index.android.bundle b/lang/ja/exapp/android/app/src/main/assets/index.android.bundle similarity index 100% rename from exapp/android/app/src/main/assets/index.android.bundle rename to lang/ja/exapp/android/app/src/main/assets/index.android.bundle diff --git a/exapp/android/app/src/main/assets/index.android.bundle.meta b/lang/ja/exapp/android/app/src/main/assets/index.android.bundle.meta similarity index 100% rename from exapp/android/app/src/main/assets/index.android.bundle.meta rename to lang/ja/exapp/android/app/src/main/assets/index.android.bundle.meta diff --git a/exapp/android/app/src/main/java/com/exapp/MainActivity.java b/lang/ja/exapp/android/app/src/main/java/com/exapp/MainActivity.java similarity index 100% rename from exapp/android/app/src/main/java/com/exapp/MainActivity.java rename to lang/ja/exapp/android/app/src/main/java/com/exapp/MainActivity.java diff --git a/exapp/android/app/src/main/java/com/exapp/MainApplication.java b/lang/ja/exapp/android/app/src/main/java/com/exapp/MainApplication.java similarity index 100% rename from exapp/android/app/src/main/java/com/exapp/MainApplication.java rename to lang/ja/exapp/android/app/src/main/java/com/exapp/MainApplication.java diff --git a/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/lang/ja/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to lang/ja/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/exapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/lang/ja/exapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from exapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to lang/ja/exapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/lang/ja/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to lang/ja/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/lang/ja/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to lang/ja/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/exapp/android/app/src/main/res/values/strings.xml b/lang/ja/exapp/android/app/src/main/res/values/strings.xml similarity index 100% rename from exapp/android/app/src/main/res/values/strings.xml rename to lang/ja/exapp/android/app/src/main/res/values/strings.xml diff --git a/exapp/android/app/src/main/res/values/styles.xml b/lang/ja/exapp/android/app/src/main/res/values/styles.xml similarity index 100% rename from exapp/android/app/src/main/res/values/styles.xml rename to lang/ja/exapp/android/app/src/main/res/values/styles.xml diff --git a/exapp/android/build.gradle b/lang/ja/exapp/android/build.gradle similarity index 100% rename from exapp/android/build.gradle rename to lang/ja/exapp/android/build.gradle diff --git a/exapp/android/gradle.properties b/lang/ja/exapp/android/gradle.properties similarity index 100% rename from exapp/android/gradle.properties rename to lang/ja/exapp/android/gradle.properties diff --git a/exapp/android/gradle/wrapper/gradle-wrapper.jar b/lang/ja/exapp/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from exapp/android/gradle/wrapper/gradle-wrapper.jar rename to lang/ja/exapp/android/gradle/wrapper/gradle-wrapper.jar diff --git a/exapp/android/gradle/wrapper/gradle-wrapper.properties b/lang/ja/exapp/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from exapp/android/gradle/wrapper/gradle-wrapper.properties rename to lang/ja/exapp/android/gradle/wrapper/gradle-wrapper.properties diff --git a/exapp/android/gradlew b/lang/ja/exapp/android/gradlew similarity index 100% rename from exapp/android/gradlew rename to lang/ja/exapp/android/gradlew diff --git a/exapp/android/gradlew.bat b/lang/ja/exapp/android/gradlew.bat similarity index 100% rename from exapp/android/gradlew.bat rename to lang/ja/exapp/android/gradlew.bat diff --git a/exapp/android/keystores/BUCK b/lang/ja/exapp/android/keystores/BUCK similarity index 100% rename from exapp/android/keystores/BUCK rename to lang/ja/exapp/android/keystores/BUCK diff --git a/exapp/android/keystores/debug.keystore.properties b/lang/ja/exapp/android/keystores/debug.keystore.properties similarity index 100% rename from exapp/android/keystores/debug.keystore.properties rename to lang/ja/exapp/android/keystores/debug.keystore.properties diff --git a/exapp/android/settings.gradle b/lang/ja/exapp/android/settings.gradle similarity index 100% rename from exapp/android/settings.gradle rename to lang/ja/exapp/android/settings.gradle diff --git a/exapp/app.json b/lang/ja/exapp/app.json similarity index 100% rename from exapp/app.json rename to lang/ja/exapp/app.json diff --git a/exapp/fox-android.js b/lang/ja/exapp/fox-android.js similarity index 100% rename from exapp/fox-android.js rename to lang/ja/exapp/fox-android.js diff --git a/exapp/fox-ios.js b/lang/ja/exapp/fox-ios.js similarity index 100% rename from exapp/fox-ios.js rename to lang/ja/exapp/fox-ios.js diff --git a/exapp/fox.js b/lang/ja/exapp/fox.js similarity index 100% rename from exapp/fox.js rename to lang/ja/exapp/fox.js diff --git a/exapp/index.js b/lang/ja/exapp/index.js similarity index 100% rename from exapp/index.js rename to lang/ja/exapp/index.js diff --git a/exapp/ios/Podfile b/lang/ja/exapp/ios/Podfile similarity index 100% rename from exapp/ios/Podfile rename to lang/ja/exapp/ios/Podfile diff --git a/exapp/ios/Podfile.lock b/lang/ja/exapp/ios/Podfile.lock similarity index 100% rename from exapp/ios/Podfile.lock rename to lang/ja/exapp/ios/Podfile.lock diff --git a/exapp/ios/exapp-tvOS/Info.plist b/lang/ja/exapp/ios/exapp-tvOS/Info.plist similarity index 100% rename from exapp/ios/exapp-tvOS/Info.plist rename to lang/ja/exapp/ios/exapp-tvOS/Info.plist diff --git a/exapp/ios/exapp-tvOSTests/Info.plist b/lang/ja/exapp/ios/exapp-tvOSTests/Info.plist similarity index 100% rename from exapp/ios/exapp-tvOSTests/Info.plist rename to lang/ja/exapp/ios/exapp-tvOSTests/Info.plist diff --git a/exapp/ios/exapp.xcodeproj/project.pbxproj b/lang/ja/exapp/ios/exapp.xcodeproj/project.pbxproj similarity index 100% rename from exapp/ios/exapp.xcodeproj/project.pbxproj rename to lang/ja/exapp/ios/exapp.xcodeproj/project.pbxproj diff --git a/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme b/lang/ja/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme similarity index 100% rename from exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme rename to lang/ja/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme diff --git a/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme b/lang/ja/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme similarity index 100% rename from exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme rename to lang/ja/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme diff --git a/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata b/lang/ja/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata similarity index 100% rename from exapp/ios/exapp.xcworkspace/contents.xcworkspacedata rename to lang/ja/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata diff --git a/exapp/ios/exapp/AppDelegate.h b/lang/ja/exapp/ios/exapp/AppDelegate.h similarity index 100% rename from exapp/ios/exapp/AppDelegate.h rename to lang/ja/exapp/ios/exapp/AppDelegate.h diff --git a/exapp/ios/exapp/AppDelegate.m b/lang/ja/exapp/ios/exapp/AppDelegate.m similarity index 100% rename from exapp/ios/exapp/AppDelegate.m rename to lang/ja/exapp/ios/exapp/AppDelegate.m diff --git a/exapp/ios/exapp/Base.lproj/LaunchScreen.xib b/lang/ja/exapp/ios/exapp/Base.lproj/LaunchScreen.xib similarity index 100% rename from exapp/ios/exapp/Base.lproj/LaunchScreen.xib rename to lang/ja/exapp/ios/exapp/Base.lproj/LaunchScreen.xib diff --git a/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json b/lang/ja/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json rename to lang/ja/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/exapp/ios/exapp/Info.plist b/lang/ja/exapp/ios/exapp/Info.plist similarity index 100% rename from exapp/ios/exapp/Info.plist rename to lang/ja/exapp/ios/exapp/Info.plist diff --git a/exapp/ios/exapp/main.m b/lang/ja/exapp/ios/exapp/main.m similarity index 100% rename from exapp/ios/exapp/main.m rename to lang/ja/exapp/ios/exapp/main.m diff --git a/exapp/ios/exappTests/Info.plist b/lang/ja/exapp/ios/exappTests/Info.plist similarity index 100% rename from exapp/ios/exappTests/Info.plist rename to lang/ja/exapp/ios/exappTests/Info.plist diff --git a/exapp/ios/exappTests/exappTests.m b/lang/ja/exapp/ios/exappTests/exappTests.m similarity index 100% rename from exapp/ios/exappTests/exappTests.m rename to lang/ja/exapp/ios/exappTests/exappTests.m diff --git a/exapp/package-lock.json b/lang/ja/exapp/package-lock.json similarity index 100% rename from exapp/package-lock.json rename to lang/ja/exapp/package-lock.json diff --git a/exapp/package.json b/lang/ja/exapp/package.json similarity index 100% rename from exapp/package.json rename to lang/ja/exapp/package.json diff --git a/exapp/run-android b/lang/ja/exapp/run-android similarity index 100% rename from exapp/run-android rename to lang/ja/exapp/run-android diff --git a/ios/.gitignore b/lang/ja/ios/.gitignore similarity index 100% rename from ios/.gitignore rename to lang/ja/ios/.gitignore diff --git a/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj b/lang/ja/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj similarity index 100% rename from ios/FoxReact/FoxReact.xcodeproj/project.pbxproj rename to lang/ja/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj diff --git a/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme b/lang/ja/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme similarity index 100% rename from ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme rename to lang/ja/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme diff --git a/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m b/lang/ja/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m similarity index 100% rename from ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m rename to lang/ja/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m diff --git a/ios/FoxReact/FoxReact/CYZFoxReactModule.h b/lang/ja/ios/FoxReact/FoxReact/CYZFoxReactModule.h similarity index 100% rename from ios/FoxReact/FoxReact/CYZFoxReactModule.h rename to lang/ja/ios/FoxReact/FoxReact/CYZFoxReactModule.h diff --git a/ios/FoxReact/FoxReact/CYZFoxReactModule.m b/lang/ja/ios/FoxReact/FoxReact/CYZFoxReactModule.m similarity index 100% rename from ios/FoxReact/FoxReact/CYZFoxReactModule.m rename to lang/ja/ios/FoxReact/FoxReact/CYZFoxReactModule.m From 53b40704339cd6d943f929f07d10516985b1e9f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E5=9F=8E=20=E8=B7=AF?= Date: Fri, 10 Nov 2017 17:59:00 +0900 Subject: [PATCH 2/3] =?UTF-8?q?JP=E2=86=92CN=E3=82=B3=E3=83=94=E3=83=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/zh-cn/README.md | 330 + .../android/supportReactNative/.gitignore | 58 + .../android/supportReactNative/build.gradle | 63 + .../supportReactNative/proguard-rules.pro | 25 + .../src/main/AndroidManifest.xml | 10 + .../support/reactnative/FoxConfigModule.java | 30 + .../support/reactnative/FoxEventModule.java | 103 + .../fox/support/reactnative/FoxModule.java | 143 + .../support/reactnative/FoxReactPackage.java | 31 + .../fox/support/reactnative/FoxReactUtil.java | 114 + .../src/main/res/values/strings.xml | 3 + lang/zh-cn/exapp/.babelrc | 3 + lang/zh-cn/exapp/.buckconfig | 6 + lang/zh-cn/exapp/.flowconfig | 48 + lang/zh-cn/exapp/.gitattributes | 1 + lang/zh-cn/exapp/.gitignore | 61 + lang/zh-cn/exapp/.watchmanconfig | 1 + lang/zh-cn/exapp/App.js | 134 + lang/zh-cn/exapp/__tests__/App.js | 12 + lang/zh-cn/exapp/android/app/.gitignore | 56 + lang/zh-cn/exapp/android/app/BUCK | 65 + lang/zh-cn/exapp/android/app/build.gradle | 155 + .../exapp/android/app/proguard-rules.pro | 70 + .../android/app/src/main/AndroidManifest.xml | 43 + .../app/src/main/assets/index.android.bundle | 308 + .../src/main/assets/index.android.bundle.meta | 1 + .../src/main/java/com/exapp/MainActivity.java | 18 + .../main/java/com/exapp/MainApplication.java | 48 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + lang/zh-cn/exapp/android/build.gradle | 27 + lang/zh-cn/exapp/android/gradle.properties | 20 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52266 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + lang/zh-cn/exapp/android/gradlew | 164 + lang/zh-cn/exapp/android/gradlew.bat | 90 + lang/zh-cn/exapp/android/keystores/BUCK | 8 + .../keystores/debug.keystore.properties | 4 + lang/zh-cn/exapp/android/settings.gradle | 5 + lang/zh-cn/exapp/app.json | 4 + lang/zh-cn/exapp/fox-android.js | 44 + lang/zh-cn/exapp/fox-ios.js | 40 + lang/zh-cn/exapp/fox.js | 85 + lang/zh-cn/exapp/index.js | 4 + lang/zh-cn/exapp/ios/Podfile | 43 + lang/zh-cn/exapp/ios/Podfile.lock | 12 + lang/zh-cn/exapp/ios/exapp-tvOS/Info.plist | 54 + .../exapp/ios/exapp-tvOSTests/Info.plist | 24 + .../exapp/ios/exapp.xcodeproj/project.pbxproj | 1714 ++++ .../xcschemes/exapp-tvOS.xcscheme | 129 + .../xcshareddata/xcschemes/exapp.xcscheme | 131 + .../contents.xcworkspacedata | 13 + lang/zh-cn/exapp/ios/exapp/AppDelegate.h | 16 + lang/zh-cn/exapp/ios/exapp/AppDelegate.m | 37 + .../ios/exapp/Base.lproj/LaunchScreen.xib | 42 + .../AppIcon.appiconset/Contents.json | 38 + lang/zh-cn/exapp/ios/exapp/Info.plist | 66 + lang/zh-cn/exapp/ios/exapp/main.m | 18 + lang/zh-cn/exapp/ios/exappTests/Info.plist | 24 + lang/zh-cn/exapp/ios/exappTests/exappTests.m | 70 + lang/zh-cn/exapp/package-lock.json | 7179 +++++++++++++++++ lang/zh-cn/exapp/package.json | 22 + lang/zh-cn/exapp/run-android | 19 + lang/zh-cn/ios/.gitignore | 63 + .../FoxReact.xcodeproj/project.pbxproj | 577 ++ .../xcshareddata/xcschemes/FoxReact.xcscheme | 82 + .../FoxReact/CYZFoxAppDelegateSwizzling.m | 87 + .../ios/FoxReact/FoxReact/CYZFoxReactModule.h | 25 + .../ios/FoxReact/FoxReact/CYZFoxReactModule.m | 157 + 73 files changed, 13093 insertions(+) create mode 100644 lang/zh-cn/README.md create mode 100644 lang/zh-cn/android/supportReactNative/.gitignore create mode 100644 lang/zh-cn/android/supportReactNative/build.gradle create mode 100644 lang/zh-cn/android/supportReactNative/proguard-rules.pro create mode 100644 lang/zh-cn/android/supportReactNative/src/main/AndroidManifest.xml create mode 100644 lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java create mode 100644 lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java create mode 100644 lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java create mode 100644 lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java create mode 100644 lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java create mode 100644 lang/zh-cn/android/supportReactNative/src/main/res/values/strings.xml create mode 100644 lang/zh-cn/exapp/.babelrc create mode 100644 lang/zh-cn/exapp/.buckconfig create mode 100644 lang/zh-cn/exapp/.flowconfig create mode 100644 lang/zh-cn/exapp/.gitattributes create mode 100644 lang/zh-cn/exapp/.gitignore create mode 100644 lang/zh-cn/exapp/.watchmanconfig create mode 100644 lang/zh-cn/exapp/App.js create mode 100644 lang/zh-cn/exapp/__tests__/App.js create mode 100644 lang/zh-cn/exapp/android/app/.gitignore create mode 100644 lang/zh-cn/exapp/android/app/BUCK create mode 100644 lang/zh-cn/exapp/android/app/build.gradle create mode 100644 lang/zh-cn/exapp/android/app/proguard-rules.pro create mode 100644 lang/zh-cn/exapp/android/app/src/main/AndroidManifest.xml create mode 100644 lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle create mode 100644 lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle.meta create mode 100644 lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainActivity.java create mode 100644 lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainApplication.java create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/values/strings.xml create mode 100644 lang/zh-cn/exapp/android/app/src/main/res/values/styles.xml create mode 100644 lang/zh-cn/exapp/android/build.gradle create mode 100644 lang/zh-cn/exapp/android/gradle.properties create mode 100644 lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 lang/zh-cn/exapp/android/gradlew create mode 100644 lang/zh-cn/exapp/android/gradlew.bat create mode 100644 lang/zh-cn/exapp/android/keystores/BUCK create mode 100644 lang/zh-cn/exapp/android/keystores/debug.keystore.properties create mode 100644 lang/zh-cn/exapp/android/settings.gradle create mode 100644 lang/zh-cn/exapp/app.json create mode 100644 lang/zh-cn/exapp/fox-android.js create mode 100644 lang/zh-cn/exapp/fox-ios.js create mode 100644 lang/zh-cn/exapp/fox.js create mode 100644 lang/zh-cn/exapp/index.js create mode 100644 lang/zh-cn/exapp/ios/Podfile create mode 100644 lang/zh-cn/exapp/ios/Podfile.lock create mode 100644 lang/zh-cn/exapp/ios/exapp-tvOS/Info.plist create mode 100644 lang/zh-cn/exapp/ios/exapp-tvOSTests/Info.plist create mode 100644 lang/zh-cn/exapp/ios/exapp.xcodeproj/project.pbxproj create mode 100644 lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme create mode 100644 lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme create mode 100644 lang/zh-cn/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata create mode 100644 lang/zh-cn/exapp/ios/exapp/AppDelegate.h create mode 100644 lang/zh-cn/exapp/ios/exapp/AppDelegate.m create mode 100644 lang/zh-cn/exapp/ios/exapp/Base.lproj/LaunchScreen.xib create mode 100644 lang/zh-cn/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 lang/zh-cn/exapp/ios/exapp/Info.plist create mode 100644 lang/zh-cn/exapp/ios/exapp/main.m create mode 100644 lang/zh-cn/exapp/ios/exappTests/Info.plist create mode 100644 lang/zh-cn/exapp/ios/exappTests/exappTests.m create mode 100644 lang/zh-cn/exapp/package-lock.json create mode 100644 lang/zh-cn/exapp/package.json create mode 100755 lang/zh-cn/exapp/run-android create mode 100644 lang/zh-cn/ios/.gitignore create mode 100644 lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj create mode 100644 lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme create mode 100644 lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m create mode 100644 lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.h create mode 100644 lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.m diff --git a/lang/zh-cn/README.md b/lang/zh-cn/README.md new file mode 100644 index 0000000..fdd8643 --- /dev/null +++ b/lang/zh-cn/README.md @@ -0,0 +1,330 @@ +# Integration Guide + +## Index + +* **[1. インストール](#install_sdk)** + * [1.1 OS共通手順](#install_common) + * [1.2 iOS](#install_ios) + * [1.3 Android](#install_android) + * [1.3.1 パーミッション](#android_permission) + * [1.3.2 ProGuardを利用する場合](#android_proguard) +* **[2. アクティベート](#activation)** +* **[3. 広告成果の計測](#measurement)** + * [3.1 インストール成果計測](#measurement_install) + * [3.2 インストールリファラ計測(Androidのみ)](#measurement_installreferrer) + * [3.3 リエンゲージメント成果計測](#measurement_reengagement) +* **[4. アプリ内イベントの計測](#measurement_event)** + * [4.1 チュートリアルイベント](#measurement_event_tutorial) + * [4.2 課金イベント](#measurement_event_purchase) + * [4.3 セッション計測](#measurement_event_session) + + +
+ +## 1. インストール + +
+ +#### 1.1 OS共通手順 + +[リリースページ](https://github.com/forceoperationx/react-native-sdk/releases)よりSDKのzipファイルをダウンロードします。
+zipファイルの展開後、`js`ディレクトリ内のjsファイルを導入先となるReactNativeプロジェクトにコピーします。 + +* `fox.js` +* `fox-ios.js` +* `fox-android.js` + +
+ +#### 1.2 iOS +**【 libraryファイルによる導入 】** +共通手順でダウンロードしたSDKのzipファイルに同梱されている iOS SDK libraryファイル全てを導入先となるiOSプロジェクトのlibrary/framework search pathにコピーし、xcodeでlinkします。 +* `libFoxReact.a` +* `CYZFox.framework` + + +
+ +#### 1.3 Android + +**【 Gradleによる導入 】** + +[ build.gradle ]
+```gradle +repositories { + maven { + url "https://github.com/cyber-z/public-fox-android-sdk/raw/master/mavenRepo" + } +} + +dependencies { + compile 'co.cyberz.fox:track-core:X.X.X' + compile 'co.cyberz.fox.support:track-reactnative:X.X.X' +} +``` + +> ※ `co.cyberz.fox:track-core:`のバージョンは4.3.0以上を指定してください。4.3.0未満はサポートしておりません。 + +> ※ `co.cyberz.fox.support:track-reactnative:`のバージョンはリリースページからバージョンを選択してください。 + +**【 jarファイルによる導入 】** + +共通手順でダウンロードしたSDKのzipファイルに同梱されているAndroid SDKのlibs内のjarファイル全てを導入先となるAndroidプロジェクトのlibsにコピーします。 +* `FOX_Android_SDK_X.X.X.jar` +* `FOX_Android_SDK_Support_ReactNative_X.X.X.jar` + +
+ +#### 1.3.1 パーミッション + +F.O.X SDKでは下記3つのパーミッションを利用します。 +<Manifest>タグ内に次のパーミッションの設定を追加します。 + +```xml + + +``` + +パーミッション|Protection Level|必須|概要 +:---|:---:|:---:|:--- +INTERNET|Normal|必須|F.O.X SDKが通信を行うために必要となります。 +WRITE_EXTERNAL_STORAGE ※1|Dangerous|任意|ストレージを利用した重複排除機能向上に必要となります。(※2) + +> ※1 READ_EXTERNAL_STORAGE及びWRITE_EXTERNAL_STORAGEパーミッションは、外部ストレージにデータを記録することでアプリの再インストール時により正確にインストール計測を行うために必要ですが、必須ではありません。 + +> ※2 Android MよりProtectionLevelが`dangerous`に指定されているパーミッションを必要とする機能を利用するには、ユーザーの許可が必要になります。詳細はF.O.X Android SDKドキュメントの[外部ストレージを利用した重複排除設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/external_storage/README.md)をご確認ください。 + +
+ +#### 1.3.2 ProGuardを利用する場合 + +ProGuard を利用してアプリケーションの難読化を行う際は F.O.X SDK のメソッドが対象とならないよう、以下の設定 を追加してください。 + +``` +-keepattributes *Annotation* +-keep class co.cyberz.** { *; } +-keep class com.google.android.gms.ads.identifier.* { *; } +-dontwarn co.cyberz.** +# Gradle経由でSDKをインストールしている場合、下記jarファイルの指定は不要です。 +-libraryjars libs/FOX_Android_SDK_X.X.X.jar +-libraryjars libs/FOX_Android_SDK_Support_ReactNative_X.X.X.jar +``` + +
+ +## 2. アクティベート + +F.O.Xのライブラリを呼び出す際は必ず`fox.js`をimportします。以降、サンプル内ではCYZFoxと定義します。 + +```js +// fox.jsへのパスを通します +import CYZFox from './fox.js'; + +... + +componentDidMount() { +... + const config = { + ios : { + appId : 6421, + appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + customizedUserAgentEnabled : true + }, + android : { + appId : 2684, + appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + }, + // デバッグモードのON/OFF + debugModeEnabled : false + } + CYZFox.activate(config); +... +``` + + +> * `appId`, `appSalt`, `appKey`はF.O.Xのコンソールで発行された値を設定します。 +> * `customizedUserAgentEnabled`はiOS固有の設定で、アプリ内のWebViewのUserAgentをカスタマイズしている場合、trueに設定してください。 +> * `debugModeEnabled`はF.O.X SDKのデバッグログを出力する際にtrueを設定します。リリースの際はfalseに設定してください。 + +
+ +## 3. 広告成果の計測 + +
+ +#### 3.1 インストール成果計測 + +アプリの初回起動のインストール計測を実装することで、広告の効果測定を行うことができます。
+以下のコードをアプリの起動時に必ず呼ばれる箇所に効果測定用の処理を追加します。 + +```js +// fox.jsへのパスを通します +import CYZFox from './fox.js'; + +... + +const option = { + buid : "UserID", + redirectURL : "fox://react", + trackingCompletionHandler : () => {console.log("tracking completed implementation")}, + durationSinceClick : 60 * 60 * 12, + deferredDeeplinkHandler : (deepInfo) => {console.log(`deep link : ${deepInfo? deepInfo["deeplink"] : "empty"}`)} +} +// +CYZFox.trackInstall(option); +``` +> * trackInstallはオプション(引数)無しでも指定することが可能です。 +> * インストール計測のオプション一覧 +> +> |項目|詳細| +> |:---:|:---| +> |redirectURL|ブラウザを起動させた時に遷移させる先のURL。アプリ自身のカスタムURLも指定可能。| +> |buid|広告主端末ID(アプリのユーザーを特定するID)| +> |trackingCompletionHandler|インストール計測完了のコールバックハンドラ| +> |durationSinceClick|ディファードディープリンクを実行する際の、対象となるラストクリックの対象期間(秒)(初回起動からどれだけ遡るかを秒数で指定)
デフォルト : 86400 (1日)| +> |deferredDeeplinkHandler|ディープリンクを受け取るためのコールバックハンドラ| +> + +
+ +#### 3.2 インストールリファラ計測(Androidのみ) + +インストールリファラーを用いたインストール計測を行うために下記の設定を<application>タグに追加します。 + +``` + + + + + +``` + +> 既に"com.android.vending.INSTALL_REFERRER"に対するレシーバークラスが定義されている場合には、F.O.X Android SDKドキュメントの[複数のINSTALL_REFERRERレシーバーを共存させる場合の設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/install_referrer/README.md) をご参照ください。 + +
+ +#### 3.3 リエンゲージメント成果計測 + +リエンゲージメント計測(カスタムURLスキーム経由の起動を計測)するために必要な設定を行います。iOSは設定なしで自動で計測を行いますがAndroidは以下の設定が必要となります。
+ +AndroidManifest.xmlのトップActivity (アプリ内の初めに呼ばれるActivity) の<activity>タグ内に、カスタムURLスキームでアプリを起動出来るよう以下のようにintent-filterを追記します。
+※ リエンゲージメント計測はカスタムURLスキームでActivityが呼び出されることで計測を行います。 + +```xml + + + + + + + + + + + + + + + + +``` + +> ※ カスタムURLスキームの詳細は[Android Developers (暗黙的インテントの受信)](https://developer.android.com/guide/components/intents-filters.html#Receiving) をご確認ください。 + +
+ +## 4. アプリ内イベントの計測 + +会員登録、チュートリアル突破、課金など任意の成果地点にイベント計測を実装することで、流入元広告のLTVを測定することができます。
+尚、イベント計測が不要の場合には、本項目の実装を省略できます。成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。
+アプリ内イベントを計測するには`trackEvent`メソッドを利用します。 + +会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内に以下のようにイベント計測処理を記述します。 + +
+ +#### 4.1 チュートリアルイベント + +**【 実装例 】** + +```js +const event = { + ios : { + eventName : "iOSチュートリアル突破", + ltvId : 5973, + }, + android : { + eventName : "Androidチュートリアル突破", + ltvId : 5974, + }, + buid : "USER_001" +} +CYZFox.trackEvent(event); +``` + +
+ +#### 4.2 課金イベント + +**【 実装例 】** + +```js +const event = { + ios : { + eventName : "ios-purchase", + ltvId : 5975, + }, + android : { + eventName : "android-purchase", + ltvId : 5976, + }, + buid : "USER_001", + value : 2, + orderId : "react-orderId", + sku : "react-sku", + itemName : "react-itemname", + price : 18.6, + quantity : 3, + currency : "USD", + eventInfo : { + name : "wuwei", + age : 35, + married : true + }, + extraInfo : { + eventId : "pur001", + coupon : "10%" + } +} +CYZFox.trackEvent(event); +``` + +> * イベント計測時に指定するパラメータ一覧 +> +> |**型**|**必須**|**パラメータ名**|**概要**| +> |:---:|:---:|:---|:---| +> |String|○|eventName|イベント名| +> |int|○|ltvId|成果地点ID
管理者より連絡します。その値を入力してください。| +> |String|-|buid|広告主様が管理しているユニークな識別子(会員IDなど)です。 指定できる値は64文字以内の半角英数字です。| +> |double|-|price|金額| +> |String|-|currency|通貨
[ISO 4217](http://ja.wikipedia.org/wiki/ISO_4217) で定義された通貨コードを指定してください。| +> |String|-|sku|SKU| +> |String|-|value|値| +> |String|-|orderId|オーダーID| +> |int|-|quantity|数量| +> |String|-|extraInfo|任意のパラメータのKey/Value
Key値にアンダースコア("_")をパラメータ名の先頭に記述しないでください。また、半角英数字以外は使用できません。| +> |String|-|eventInfo|任意のパラメータ群| + +
+ +#### 4.3 セッション計測 + +自然流入と広告流入のインストール数比較、アプリケーションの起動数やユニークユーザー数(DAU/MAU)、継続率等を計測することができます。
+こちらはSDKがアプリの起動時・バックグラウンドからフォアグラウンドへの遷移をiOS/Androidのネイティブ側で自動検知して計測を行うため、実装する必要はありません。 diff --git a/lang/zh-cn/android/supportReactNative/.gitignore b/lang/zh-cn/android/supportReactNative/.gitignore new file mode 100644 index 0000000..e2d7e27 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/.gitignore @@ -0,0 +1,58 @@ +mavenRepo/ + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/dictionaries +.idea/libraries + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json diff --git a/lang/zh-cn/android/supportReactNative/build.gradle b/lang/zh-cn/android/supportReactNative/build.gradle new file mode 100644 index 0000000..342cfae --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/build.gradle @@ -0,0 +1,63 @@ +apply plugin: 'com.android.library' +apply plugin: 'maven' + +android { + compileSdkVersion 26 + buildToolsVersion "26.0.1" + publishNonDefault false + + defaultConfig { + minSdkVersion 14 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +group = 'co.cyberz.fox.support' +def artifact = 'track-reactnative' +version = '1.0.0' +description = 'F.O.X Android SDK React Native Plugin' + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + provided "com.facebook.react:react-native:+" // From node_modules + provided 'co.cyberz.fox:track-core:4.3.0' +} + +uploadArchives { + repositories.mavenDeployer { + repository(url: "file:${projectDir}/mavenRepo") + pom.project { + licenses { + license { + name "Copyright © CyberZ, inc. All Rights Reserved." + } + } + } + pom.artifactId = "${artifact}" + } +} + +task removeJar(type:Delete) { + delete fileTree(dir:'build/outputs/jar/', include:("*")) +} + + +task copyJar(type:Copy, dependsOn:removeJar) { + from('build/intermediates/bundles/release/') + into('build/outputs/jar/') + include('classes.jar') + rename('classes.jar', "FOX_Android_SDK_Support_ReactNative_${version}.jar") +} + +task assembleReleaseJar(dependsOn:copyJar) << { + println("assemble jar : " + copyJar.destinationDir) +} \ No newline at end of file diff --git a/lang/zh-cn/android/supportReactNative/proguard-rules.pro b/lang/zh-cn/android/supportReactNative/proguard-rules.pro new file mode 100644 index 0000000..5687bf6 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/z00066/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/lang/zh-cn/android/supportReactNative/src/main/AndroidManifest.xml b/lang/zh-cn/android/supportReactNative/src/main/AndroidManifest.xml new file mode 100644 index 0000000..abf12b3 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java new file mode 100644 index 0000000..a660269 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxConfigModule.java @@ -0,0 +1,30 @@ +package co.cyberz.fox.support.reactnative; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; + +import co.cyberz.fox.FoxConfig; + +/** + * Created by Garhira on 2017/10/20. + */ + +public class FoxConfigModule extends ReactContextBaseJavaModule { + + public FoxConfigModule(ReactApplicationContext reactContext) { + super(reactContext); + } + + @Override + public String getName() { + return "CYZFoxConfig"; + } + + @ReactMethod + public void activate(int appId, String appKey, String appSalt, boolean isDebug) { + FoxConfig mFoxConfig = new FoxConfig(getReactApplicationContext(), appId, appKey, appSalt); + mFoxConfig.addDebugOption(isDebug); + mFoxConfig.activate(); + } +} diff --git a/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java new file mode 100644 index 0000000..f8754fd --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxEventModule.java @@ -0,0 +1,103 @@ +package co.cyberz.fox.support.reactnative; + +import android.util.Log; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableMap; +import org.json.JSONObject; + +import java.util.HashMap; + +import co.cyberz.fox.Fox; +import co.cyberz.fox.service.FoxEvent; + +/** + * FoxEventを作るクラス + * Created by Garhira on 2017/10/24. + */ +public class FoxEventModule extends ReactContextBaseJavaModule { + + private static final String NAME = "eventName"; + private static final String ID = "ltvId"; + private static final String PRICE = "price"; + private static final String SKU = "sku"; + private static final String CURRENCY = "currency"; + private static final String BUID = "buid"; + private static final String VALUE = "value"; + private static final String ORDER_ID = "orderId"; + private static final String ITEM_NAME = "itemName"; + private static final String QUANTITY = "quantity"; + private static final String EXTRA_INFO = "extraInfo"; + private static final String EVENT_INFO = "eventInfo"; + + public FoxEventModule(ReactApplicationContext reactContext) { + super(reactContext); + } + + @Override + public String getName() { + return "CYZFoxEvent"; + } + + /** + * イベント計測の必須情報をセット + * @param map + */ + @ReactMethod + public void track(ReadableMap map) { + if (map == null) { + Log.e("FOX-Event", "Event description must be not null!!!"); + return; + } else if (!map.hasKey(NAME)) { + Log.e("FOX-Event", "Event name is require parameter!!"); + return; + } + ReactFoxEvent event; + if (map.hasKey(ID)) { + event = new ReactFoxEvent(map.getString(NAME), map.getInt(ID)); + } else { + event = new ReactFoxEvent(map.getString(NAME)); + } + if (map.hasKey(PRICE)) event.price = map.getDouble(PRICE); + if (map.hasKey(SKU)) event.sku = map.getString(SKU); + if (map.hasKey(CURRENCY)) event.currency = map.getString(CURRENCY); + if (map.hasKey(BUID)) event.buid = map.getString(BUID); + if (map.hasKey(VALUE)) event.value = map.getInt(VALUE); + if (map.hasKey(ORDER_ID)) event.orderId = map.getString(ORDER_ID); + if (map.hasKey(ITEM_NAME)) event.itemName = map.getString(ITEM_NAME); + if (map.hasKey(QUANTITY)) event.quantity = map.getInt(QUANTITY); + if (map.hasKey(EXTRA_INFO)) event.addExtraInfo(map.getMap(EXTRA_INFO)); + + if (map.hasKey(EVENT_INFO)) { + try { + HashMap eventInfoHashMap = map.getMap(EVENT_INFO).toHashMap(); + if (eventInfoHashMap != null && 0 < eventInfoHashMap.size()) + event.eventInfo = new JSONObject(eventInfoHashMap); + } catch (Throwable t) { + Log.e("FOX-Event", "setEventInfo", t); + } + } + Fox.trackEvent(event); + } + + private class ReactFoxEvent extends FoxEvent { + + public ReactFoxEvent(String eventName) { + super(eventName); + } + + public ReactFoxEvent(String eventName, int ltvId) { + super(eventName, ltvId); + } + + public void addExtraInfo(ReadableMap extraInfoMap) { + if (extraInfo == null) { + extraInfo = new HashMap(); + } + extraInfo.putAll(FoxReactUtil.toHashMap(extraInfoMap)); + } + } + +} diff --git a/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java new file mode 100644 index 0000000..332d518 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxModule.java @@ -0,0 +1,143 @@ +package co.cyberz.fox.support.reactnative; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.text.TextUtils; +import android.util.Log; + +import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.LifecycleEventListener; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableMap; + +import org.json.JSONObject; + +import java.util.HashMap; + +import co.cyberz.fox.Fox; +import co.cyberz.fox.FoxTrackOption; + +/** + * Created by z00066 on 2017/10/18. + */ + +/** + * Created by Garhira on 2017/10/20. + */ +public class FoxModule extends ReactContextBaseJavaModule implements LifecycleEventListener { + + private FoxTrackOption option; + + public FoxModule(ReactApplicationContext reactContext) { + super(reactContext); + option = new FoxTrackOption(); + reactContext.addLifecycleEventListener(this); + } + + @Override + public String getName() { + return "CYZFox"; + } + + @ReactMethod + public void addOptionRedirectUrl(String url) { + if (!TextUtils.isEmpty(url)) option.addRedirectUrl(url); + } + + @ReactMethod + public void addOptionBuid(String buid) { + if (!TextUtils.isEmpty(buid)) option.addBuid(buid); + } + + @ReactMethod + public void setTrackingStateListener(final Callback onComplete) { + option.setTrackingStateListener(new FoxTrackOption.TrackingStateListener() { + @Override + public void onComplete() { + if (onComplete != null) onComplete.invoke(); + } + }); + } + + @ReactMethod + public void registerDeeplinkHandler(final long duration, final Callback deeplinkCallback) { + option.registerDeeplinkHandler(new FoxTrackOption.DeeplinkHandler() { + + @Override + public long getDuration() { + if (0l < duration) { + return duration; + } + return super.getDuration(); + } + + @Override + public void onReceived(Context context, @Nullable JSONObject deeplinkInfo) { + if (deeplinkInfo != null) { + try { + if (deeplinkCallback != null) + deeplinkCallback.invoke(FoxReactUtil.convertJsonToMap(deeplinkInfo)); + } catch (Exception e) { + Log.e("FOX", "registerDeeplinkHandler", e); + } + } + } + }); + } + + @ReactMethod + public void trackInstall() { + Fox.trackInstall(option); + } + + @ReactMethod + public void trackSession() { + Fox.trackSession(); + } + + @ReactMethod + public void setUserInfo(ReadableMap userInfoMap) { + if (userInfoMap.hasKey("redirectURL")) userInfoMap.getString("userInfoMap."); + try { + HashMap userInfo = FoxReactUtil.toHashMap(userInfoMap); + Fox.setUserInfo(new JSONObject(userInfo)); + } catch (Throwable t) { + Log.e("FOX", "setUserInfo", t); + } + } + + @ReactMethod + public void getUserInfo(Callback userInfoCallback) { + if (userInfoCallback == null) return; + try { + JSONObject userInfo = Fox.getUserInfo(); + if (userInfo == null) { + userInfoCallback.invoke(); + } else { + userInfoCallback.invoke(FoxReactUtil.convertJsonToMap(userInfo)); + } + } catch (Throwable t) { + Log.e("FOX", "getUserInfo", t); + } + } + + @Override + public void onHostResume() { + if (Fox.isConversionCompleted()) { + Fox.trackSession(); + } + if (getReactApplicationContext().hasCurrentActivity()) { + Fox.trackDeeplinkLaunch(getCurrentActivity()); + } + } + + @Override + public void onHostPause() { + } + + @Override + public void onHostDestroy() { + } +} diff --git a/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java new file mode 100644 index 0000000..316deaf --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactPackage.java @@ -0,0 +1,31 @@ +package co.cyberz.fox.support.reactnative; + +import com.facebook.react.ReactPackage; +import com.facebook.react.bridge.NativeModule; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.uimanager.ViewManager; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created by z00066 on 2017/10/18. + */ + +public class FoxReactPackage implements ReactPackage { + + @Override + public List createNativeModules(ReactApplicationContext reactContext) { + List modules = new ArrayList<>(); + modules.add(new FoxConfigModule(reactContext)); + modules.add(new FoxModule(reactContext)); + modules.add(new FoxEventModule(reactContext)); + return modules; + } + + @Override + public List createViewManagers(ReactApplicationContext reactContext) { + return Collections.emptyList(); + } +} diff --git a/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java new file mode 100644 index 0000000..30b6ae2 --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/java/co/cyberz/fox/support/reactnative/FoxReactUtil.java @@ -0,0 +1,114 @@ +package co.cyberz.fox.support.reactnative; + +import android.text.TextUtils; +import android.util.Log; + +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.WritableArray; +import com.facebook.react.bridge.WritableMap; +import com.facebook.react.bridge.WritableNativeArray; +import com.facebook.react.bridge.WritableNativeMap; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * Created by Garhira on 2017/10/25. + */ +public class FoxReactUtil { + + /** + * HashMapに変換する + * @param map ReadableMap + * @return HashMap + */ + public static HashMap toHashMap(ReadableMap map) { + HashMap extraMap = new HashMap(); + for (Map.Entry extraData : map.toHashMap().entrySet()) { + try { + String extraValue = null; + Object value = extraData.getValue(); + if (value instanceof String) { + extraValue = (String) value; + } else if (value instanceof Integer) { + extraValue = String.valueOf((int) value); + } else if (value instanceof Boolean) { + extraValue = String.valueOf((boolean) value); + } else if (value instanceof Double) { + extraValue = String.valueOf((double) value); + } + if (!TextUtils.isEmpty(extraValue)) extraMap.put(extraData.getKey(), extraValue); + } catch (Throwable e) { + Log.e("FOX-ReactUtil", extraData.getKey() + "'s value is illegal!!"); + } + } + return extraMap; + } + + /** + * + * @param jsonObject + * @return + * @throws JSONException + */ + public static WritableMap convertJsonToMap(JSONObject jsonObject) throws JSONException { + WritableMap map = new WritableNativeMap(); + + Iterator iterator = jsonObject.keys(); + while (iterator.hasNext()) { + String key = iterator.next(); + Object value = jsonObject.get(key); + if (value instanceof JSONObject) { + map.putMap(key, convertJsonToMap((JSONObject) value)); + } else if (value instanceof JSONArray) { + map.putArray(key, convertJsonToArray((JSONArray) value)); + } else if (value instanceof Boolean) { + map.putBoolean(key, (Boolean) value); + } else if (value instanceof Integer) { + map.putInt(key, (Integer) value); + } else if (value instanceof Double) { + map.putDouble(key, (Double) value); + } else if (value instanceof String) { + map.putString(key, (String) value); + } else { + map.putString(key, value.toString()); + } + } + return map; + } + + /** + * + * @param jsonArray + * @return + * @throws JSONException + */ + public static WritableArray convertJsonToArray(JSONArray jsonArray) throws JSONException { + WritableArray array = new WritableNativeArray(); + + for (int i = 0; i < jsonArray.length(); i++) { + Object value = jsonArray.get(i); + if (value instanceof JSONObject) { + array.pushMap(convertJsonToMap((JSONObject) value)); + } else if (value instanceof JSONArray) { + array.pushArray(convertJsonToArray((JSONArray) value)); + } else if (value instanceof Boolean) { + array.pushBoolean((Boolean) value); + } else if (value instanceof Integer) { + array.pushInt((Integer) value); + } else if (value instanceof Double) { + array.pushDouble((Double) value); + } else if (value instanceof String) { + array.pushString((String) value); + } else { + array.pushString(value.toString()); + } + } + return array; + } +} diff --git a/lang/zh-cn/android/supportReactNative/src/main/res/values/strings.xml b/lang/zh-cn/android/supportReactNative/src/main/res/values/strings.xml new file mode 100644 index 0000000..6f6474a --- /dev/null +++ b/lang/zh-cn/android/supportReactNative/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + CYZFoxReact + diff --git a/lang/zh-cn/exapp/.babelrc b/lang/zh-cn/exapp/.babelrc new file mode 100644 index 0000000..a9ce136 --- /dev/null +++ b/lang/zh-cn/exapp/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react-native"] +} diff --git a/lang/zh-cn/exapp/.buckconfig b/lang/zh-cn/exapp/.buckconfig new file mode 100644 index 0000000..934256c --- /dev/null +++ b/lang/zh-cn/exapp/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/lang/zh-cn/exapp/.flowconfig b/lang/zh-cn/exapp/.flowconfig new file mode 100644 index 0000000..a359500 --- /dev/null +++ b/lang/zh-cn/exapp/.flowconfig @@ -0,0 +1,48 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore "BUCK" generated dirs +/\.buckd/ + +; Ignore unexpected extra "@providesModule" +.*/node_modules/.*/node_modules/fbjs/.* + +; Ignore duplicate module providers +; For RN Apps installed via npm, "Libraries" folder is inside +; "node_modules/react-native" but in the source repo it is in the root +.*/Libraries/react-native/React.js + +; Ignore polyfills +.*/Libraries/polyfills/.* + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow/ + +[options] +emoji=true + +module.system=haste + +munge_underscores=true + +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState +suppress_type=$FixMe + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +unsafe.enable_getters_and_setters=true + +[version] +^0.53.0 diff --git a/lang/zh-cn/exapp/.gitattributes b/lang/zh-cn/exapp/.gitattributes new file mode 100644 index 0000000..d42ff18 --- /dev/null +++ b/lang/zh-cn/exapp/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/lang/zh-cn/exapp/.gitignore b/lang/zh-cn/exapp/.gitignore new file mode 100644 index 0000000..8be3325 --- /dev/null +++ b/lang/zh-cn/exapp/.gitignore @@ -0,0 +1,61 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +Pods/ diff --git a/lang/zh-cn/exapp/.watchmanconfig b/lang/zh-cn/exapp/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/lang/zh-cn/exapp/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lang/zh-cn/exapp/App.js b/lang/zh-cn/exapp/App.js new file mode 100644 index 0000000..0ec38a5 --- /dev/null +++ b/lang/zh-cn/exapp/App.js @@ -0,0 +1,134 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * @flow + */ + +import React, { Component } from 'react'; +import { + Platform, + StyleSheet, + Text, + View +} from 'react-native'; + +import CZYFox from './fox.js'; + + +const instructions = Platform.select({ + ios: 'Press Cmd+R to reload,\n' + + 'Cmd+D or shake for dev menu', + android: 'Double tap R on your keyboard to reload,\n' + + 'Shake or press menu button for dev menu', +}); + +export default class App extends Component<{}> { + render() { + + const iosConfig1 = { + ios :{ + appId : 4879, + appSalt : "42b199d17f20bffa15d242d37cf9650d9558ed78", + appKey : "20131c689b5617940ac82919356bab22cdabcf81", + customizedUserAgentEnabled : true + } + } + + const config = { + ios : { + appId : 6421, + appSalt : "5aebe7204d3136fa6c89cd551761d1629ad9ad50", + appKey : "8c4d483a307c8438222753774bbe0c23f67fbb5e", + customizedUserAgentEnabled : true + }, + android : { + appId : 2684, + appSalt : "bcb5a88f92c9f13a92adf58e91498a5f942f3c2b", + appKey : "1678bb2f08e02c81ddaa8dbfa4618eb93ed1e330" + }, + debugModeEnabled : true + } + CZYFox.activate(config); + + const profile = { + name : "wuwei", + age : 35, + married : true + } + CZYFox.setUserInfo(profile); + CZYFox.getUserInfo((info) => { + if (info) console.log(`profile of user : ${info.name}`) + }); + + const option = { + buid : "user-fox-react", + redirectURL : "fox://react", + optout : true, + trackingCompletionHandler : () => {console.log("tracking completed implementation")}, + durationSinceClick : 60 * 60 * 12, + deferredDeeplinkHandler : (deepInfo) => {console.log(`deep link : ${deepInfo? deepInfo["deeplink"] : "empty"}`)} + } + + CZYFox.trackInstall(option); + + CZYFox.trackSession(); + + const event = { + eventName : "react-purchase", + ltvId : 5975, + buid : "react-buid", + value : 2, + orderId : "react-orderId", + sku : "react-sku", + itemName : "react-itemname", + price : 66.6, + quantity : 3, + currency : "USD", + eventInfo : { + name : "wuwei", + age : 35, + married : true + }, + extraInfo : { + eventId : "pur001", + coupon : "10%" + } + } + + CZYFox.trackEvent(event); +// **/ + + return ( + + + Welcome to React Native! + + + To get started, edit App.js + + + {instructions} + + + ); + } +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#F5FCFF', + }, + welcome: { + fontSize: 20, + textAlign: 'center', + margin: 10, + }, + instructions: { + textAlign: 'center', + color: '#333333', + marginBottom: 5, + }, +}); diff --git a/lang/zh-cn/exapp/__tests__/App.js b/lang/zh-cn/exapp/__tests__/App.js new file mode 100644 index 0000000..d0b9ee3 --- /dev/null +++ b/lang/zh-cn/exapp/__tests__/App.js @@ -0,0 +1,12 @@ +import 'react-native'; +import React from 'react'; +import App from '../App'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + const tree = renderer.create( + + ); +}); diff --git a/lang/zh-cn/exapp/android/app/.gitignore b/lang/zh-cn/exapp/android/app/.gitignore new file mode 100644 index 0000000..f2d8310 --- /dev/null +++ b/lang/zh-cn/exapp/android/app/.gitignore @@ -0,0 +1,56 @@ +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/workspace.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/dictionaries +.idea/libraries + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json \ No newline at end of file diff --git a/lang/zh-cn/exapp/android/app/BUCK b/lang/zh-cn/exapp/android/app/BUCK new file mode 100644 index 0000000..eae70ab --- /dev/null +++ b/lang/zh-cn/exapp/android/app/BUCK @@ -0,0 +1,65 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] + +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.exapp", +) + +android_resource( + name = "res", + package = "com.exapp", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/lang/zh-cn/exapp/android/app/build.gradle b/lang/zh-cn/exapp/android/app/build.gradle new file mode 100644 index 0000000..bc36429 --- /dev/null +++ b/lang/zh-cn/exapp/android/app/build.gradle @@ -0,0 +1,155 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation + * entryFile: "index.android.js", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + entryFile: "index.js" +] + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + publishNonDefault true + + defaultConfig { + applicationId "com.exapp" + minSdkVersion 16 + targetSdkVersion 22 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86" + } + } + buildTypes { + release { + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits + def versionCodes = ["armeabi-v7a":1, "x86":2] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + } + } +} + +dependencies { + compile fileTree(dir: "libs", include: ["*.jar"]) + compile "com.android.support:appcompat-v7:23.0.1" + compile "com.facebook.react:react-native:+" // From node_modules +// compile project(':supportReactNative') + compile 'com.google.android.gms:play-services-ads:8.4.0' + compile 'co.cyberz.fox:track-core:4.3.0' + compile 'co.cyberz.fox.support:track-reactnative:1.0.0' +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} diff --git a/lang/zh-cn/exapp/android/app/proguard-rules.pro b/lang/zh-cn/exapp/android/app/proguard-rules.pro new file mode 100644 index 0000000..6e8516c --- /dev/null +++ b/lang/zh-cn/exapp/android/app/proguard-rules.pro @@ -0,0 +1,70 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keep @com.facebook.common.internal.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; + @com.facebook.common.internal.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers,includedescriptorclasses class * { native ; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } + +-dontwarn com.facebook.react.** + +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. +-dontwarn android.text.StaticLayout + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/lang/zh-cn/exapp/android/app/src/main/AndroidManifest.xml b/lang/zh-cn/exapp/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..26d1c23 --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle b/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle new file mode 100644 index 0000000..461cf67 --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle @@ -0,0 +1,308 @@ +!function(e){e.__DEV__=!1,e.__BUNDLE_START_TIME__=e.nativePerformanceNow?e.nativePerformanceNow():Date.now()}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(r){"use strict";function e(r,e,t){e in u||(u[e]={dependencyMap:t,exports:void 0,factory:r,hasError:!1,isInitialized:!1})}function t(r){var e=r,t=u[e];return t&&t.isInitialized?t.exports:n(e,t)}function n(e,t){if(!c&&r.ErrorUtils){c=!0;var n=void 0;try{n=i(e,t)}catch(e){r.ErrorUtils.reportFatalError(e)}return c=!1,n}return i(e,t)}function i(e,n){var i=r.nativeRequire;if(!n&&i&&(i(e),n=u[e]),!n)throw o(e);if(n.hasError)throw a(e,n.error);n.isInitialized=!0;var c=n.exports={},s=n,d=s.factory,f=s.dependencyMap;try{var l={exports:c};return d(r,t,l,c,f),n.factory=void 0,n.dependencyMap=void 0,n.exports=l.exports}catch(r){throw n.hasError=!0,n.error=r,n.isInitialized=!1,n.exports=void 0,r}}function o(r){var e='Requiring unknown module "'+r+'".';return Error(e)}function a(r,e){var t=r;return Error('Requiring module "'+t+'", which threw an exception: '+e)}r.require=t,r.__d=e;var u=Object.create(null);t.async=function(r){return Promise.resolve().then(function(){return t(r)})};var c=!1}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(n){Object.assign=function(n,e){for(var f=1;f=u.error&&(t=u.warn),n.__inspectorLog&&n.__inspectorLog(a[t],e,[].slice.call(arguments),l),n.nativeLoggingHook(e,t)}}function e(n,r){return Array.apply(null,Array(r)).map(function(){return n})}function t(r){function t(n,r){var t=n.map(function(n,r){var t=e(" ",p[r]-n.length).join("");return n+t});return r=r||" ",t.join(r+"|"+r)}if(!Array.isArray(r)){var i=r;r=[];for(var a in i)if(i.hasOwnProperty(a)){var l=i[a];l[o]=a,r.push(l)}}if(0===r.length)return void n.nativeLoggingHook("",u.info);var c=Object.keys(r[0]).sort(),f=[],p=[];c.forEach(function(n,e){p[e]=n.length;for(var t=0;t=0||p.indexOf("description")>=0))return o(r);if(0===p.length){if(m(r)){var g=r.name?": "+r.name:"";return n.stylize("[Function"+g+"]","special")}if(v(r))return n.stylize(RegExp.prototype.toString.call(r),"regexp");if(d(r))return n.stylize(Date.prototype.toString.call(r),"date");if(b(r))return o(r)}var y="",h=!1,j=["{","}"];if(c(r)&&(h=!0,j=["[","]"]),m(r)){var z=r.name?": "+r.name:"";y=" [Function"+z+"]"}if(v(r)&&(y=" "+RegExp.prototype.toString.call(r)),d(r)&&(y=" "+Date.prototype.toUTCString.call(r)),b(r)&&(y=" "+o(r)),0===p.length&&(!h||0==r.length))return j[0]+y+j[1];if(t<0)return v(r)?n.stylize(RegExp.prototype.toString.call(r),"regexp"):n.stylize("[Object]","special");n.seen.push(r);var O;return O=h?u(n,r,t,s,p):p.map(function(e){return a(n,r,t,s,e,h)}),n.seen.pop(),l(O,y,j)}function i(n,r){if(y(r))return n.stylize("undefined","undefined");if(g(r)){var e="'"+JSON.stringify(r).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(e,"string")}return s(r)?n.stylize(""+r,"number"):f(r)?n.stylize(""+r,"boolean"):p(r)?n.stylize("null","null"):void 0}function o(n){return"["+Error.prototype.toString.call(n)+"]"}function u(n,r,e,t,i){for(var o=[],u=0,l=r.length;u-1&&(l=u?l.split("\n").map(function(n){return" "+n}).join("\n").substr(2):"\n"+l.split("\n").map(function(n){return" "+n}).join("\n"))):l=n.stylize("[Circular]","special")),y(a)){if(u&&o.match(/^\d+$/))return l;a=JSON.stringify(""+o),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=n.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=n.stylize(a,"string"))}return a+": "+l}function l(n,r,e){var t=0,i=n.reduce(function(n,r){return t++,r.indexOf("\n")>=0&&t++,n+r.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?e[0]+(""===r?"":r+"\n ")+" "+n.join(",\n ")+" "+e[1]:e[0]+r+" "+n.join(", ")+" "+e[1]}function c(n){return Array.isArray(n)}function f(n){return"boolean"==typeof n}function p(n){return null===n}function s(n){return"number"==typeof n}function g(n){return"string"==typeof n}function y(n){return void 0===n}function v(n){return h(n)&&"[object RegExp]"===j(n)}function h(n){return"object"==typeof n&&null!==n}function d(n){return h(n)&&"[object Date]"===j(n)}function b(n){return h(n)&&("[object Error]"===j(n)||n instanceof Error)}function m(n){return"function"==typeof n}function j(n){return Object.prototype.toString.call(n)}function z(n,r){return Object.prototype.hasOwnProperty.call(n,r)}return n}(),o="(index)",u={trace:0,info:1,warn:2,error:3},a=[];a[u.trace]="debug",a[u.info]="log",a[u.warn]="warning",a[u.error]="error";var l=1;if(n.nativeLoggingHook){n.console;n.console={error:r(u.error),info:r(u.info),log:r(u.info),warn:r(u.warn),trace:r(u.trace),debug:r(u.trace),table:t}}else if(!n.console){var c=n.print||function(){};n.console={error:c,info:c,log:c,warn:c,trace:c,debug:c,table:c}}}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(r){var n=0,t=function(r){throw r},u={setGlobalHandler:function(r){t=r},getGlobalHandler:function(){return t},reportError:function(r){t&&t(r)},reportFatalError:function(r){t&&t(r,!0)},applyWithGuard:function(r,t,e){try{return n++,r.apply(t,e)}catch(r){u.reportError(r)}finally{n--}return null},applyWithGuardIfNeeded:function(r,n,t){return u.inGuard()?r.apply(n,t):(u.applyWithGuard(r,n,t),null)},inGuard:function(){return n},guard:function(r,n,t){function e(){return u.applyWithGuard(r,t||this,arguments,null,n)}return"function"!=typeof r?(console.warn("A function must be passed to ErrorUtils.guard, got ",r),null):(n=n||r.name||"",e)}};r.ErrorUtils=u}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(e){if(void 0===Number.EPSILON&&Object.defineProperty(Number,"EPSILON",{value:Math.pow(2,-52)}),void 0===Number.MAX_SAFE_INTEGER&&Object.defineProperty(Number,"MAX_SAFE_INTEGER",{value:Math.pow(2,53)-1}),void 0===Number.MIN_SAFE_INTEGER&&Object.defineProperty(Number,"MIN_SAFE_INTEGER",{value:-(Math.pow(2,53)-1)}),!Number.isNaN){var r=e.isNaN;Object.defineProperty(Number,"isNaN",{configurable:!0,enumerable:!1,value:function(e){return"number"==typeof e&&r(e)},writable:!0})}}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(t){String.prototype.startsWith||(String.prototype.startsWith=function(t){"use strict";if(null==this)throw TypeError();var r=String(this),e=arguments.length>1?Number(arguments[1])||0:0,n=Math.min(Math.max(e,0),r.length);return r.indexOf(String(t),e)===n}),String.prototype.endsWith||(String.prototype.endsWith=function(t){"use strict";if(null==this)throw TypeError();var r=String(this),e=r.length,n=String(t),i=arguments.length>1?Number(arguments[1])||0:e,o=Math.min(Math.max(i,0),e),h=o-n.length;return!(h<0)&&r.lastIndexOf(n,h)===h}),String.prototype.repeat||(String.prototype.repeat=function(t){"use strict";if(null==this)throw TypeError();var r=String(this);if(t=Number(t)||0,t<0||t===1/0)throw RangeError();if(1===t)return r;for(var e="";t;)1&t&&(e+=r),(t>>=1)&&(r+=r);return e}),String.prototype.includes||(String.prototype.includes=function(t,r){"use strict";return"number"!=typeof r&&(r=0),!(r+t.length>this.length)&&this.indexOf(t,r)!==-1}),String.prototype.codePointAt||(String.prototype.codePointAt=function(t){if(null==this)throw TypeError();var r=String(this),e=r.length,n=t?Number(t):0;if(Number.isNaN(n)&&(n=0),!(n<0||n>=e)){var i,o=r.charCodeAt(n);return o>=55296&&o<=56319&&e>n+1&&(i=r.charCodeAt(n+1),i>=56320&&i<=57343)?1024*(o-55296)+i-56320+65536:o}})}("undefined"!=typeof global?global:"undefined"!=typeof self?self:this); +!function(e){function r(e,r){if(null==this)throw new TypeError("Array.prototype.findIndex called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var n=Object(this),t=n.length>>>0,o=0;o=0?t=o:(t=n+o,t<0&&(t=0));for(var i;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},r.possibleConstructorReturn=function(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r},r.slicedToArray=function(){function e(e,r){var t=[],n=!0,o=!1,i=void 0;try{for(var f,u=e["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();!(n=(f=u.next()).done)&&(t.push(f.value),!r||t.length!==r);n=!0);}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}return function(r,t){if(Array.isArray(r))return r;if(("function"==typeof Symbol?Symbol.iterator:"@@iterator")in Object(r))return e(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r.taggedTemplateLiteral=function(e,r){return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(r)}}))},r.toArray=function(e){return Array.isArray(e)?e:Array.from(e)},r.toConsumableArray=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r0?r[r.length-1]:null,u=r.length>1?r[r.length-2]:null,i="function"==typeof a,l="function"==typeof u;l&&s(i,"Cannot have a non-function arg after a function arg.");var c=i?a:null,v=l?u:null,d=i+l;r=r.slice(0,r.length-d),f.enqueueNativeCall(e,n,r,v,c)},r.type=t,r}function i(e,n){return e.indexOf(n)!==-1}function l(e){var n=e||{},t=n.message,r=babelHelpers.objectWithoutProperties(n,["message"]),o=new Error(t);return o.framesToPop=1,babelHelpers.extends(o,r)}var f=n(16),s=n(13);e.__fbGenNativeModule=o;var c={};if(e.nativeModuleProxy)c=e.nativeModuleProxy;else{var v=e.__fbBatchedBridgeConfig;s(v,"__fbBatchedBridgeConfig is not set, cannot invoke native modules");var d=n(29);(v.remoteModuleConfig||[]).forEach(function(e,n){var t=o(e,n);t&&(t.module?c[t.name]=t.module:d(c,t.name,{get:function(){return a(t.name,n)}}))})}t.exports=c},15); +__d(function(e,r,t,c){"use strict";var i=r(17),n=new i;Object.defineProperty(e,"__fbBatchedBridge",{configurable:!0,value:n}),t.exports=n},16); +__d(function(e,l,t,s){"use strict";var u=l(18),a=l(19),i=(l(20),l(13)),n=(l(21),0),_=1,c=0,o=1,h=2,r=5,d=null,v=function(){function t(){var e=this;babelHelpers.classCallCheck(this,t),this.callFunctionReturnFlushedQueue=function(l,t,s){return e.__guard(function(){e.__callFunction(l,t,s)}),e.flushedQueue()},this.callFunctionReturnResultAndFlushedQueue=function(l,t,s){var u=void 0;return e.__guard(function(){u=e.__callFunction(l,t,s)}),[u,e.flushedQueue()]},this.invokeCallbackAndReturnFlushedQueue=function(l,t){return e.__guard(function(){e.__invokeCallback(l,t)}),e.flushedQueue()},this.flushedQueue=function(){e.__guard(function(){e.__callImmediates()});var l=e._queue;return e._queue=[[],[],[],e._callID],l[0].length?l:null},this._lazyCallableModules={},this._queue=[[],[],[],0],this._successCallbacks=[],this._failureCallbacks=[],this._callID=0,this._lastFlush=0,this._eventLoopStartTime=(new Date).getTime()}return babelHelpers.createClass(t,[{key:"getEventLoopRunningTime",value:function(){return(new Date).getTime()-this._eventLoopStartTime}},{key:"registerCallableModule",value:function(e,l){this._lazyCallableModules[e]=function(){return l}}},{key:"registerLazyCallableModule",value:function(e,l){var t=void 0,s=l;this._lazyCallableModules[e]=function(){return s&&(t=s(),s=null),t}}},{key:"getCallableModule",value:function(e){var l=this._lazyCallableModules[e];return l?l():null}},{key:"enqueueNativeCall",value:function(l,t,s,u,i){(u||i)&&(u&&s.push(this._callID<<1),i&&s.push(this._callID<<1|1),this._successCallbacks[this._callID]=i,this._failureCallbacks[this._callID]=u),this._callID++,this._queue[c].push(l),this._queue[o].push(t),this._queue[h].push(s);var n=(new Date).getTime();if(e.nativeFlushQueueImmediate&&(n-this._lastFlush>=r||0===this._inCall)){var _=this._queue;this._queue=[[],[],[],this._callID],this._lastFlush=n,e.nativeFlushQueueImmediate(_)}a.counterEvent("pending_js_to_native_queue",this._queue[0].length),this.__spy&&this.__spyNativeCall(l,t,s,{failCbId:u?s[s.length-2]:-1,successCbId:i?s[s.length-1]:-1})}},{key:"callSyncHook",value:function(l,t,s){var u=e.nativeCallSyncHook(l,t,s);return this.__spy&&this.__spyNativeCall(l,t,s,{isSync:!0,returnValue:u}),u}},{key:"createDebugLookup",value:function(e,l,t){}},{key:"__guard",value:function(e){this._inCall++;try{e()}catch(e){u.reportFatalError(e)}finally{this._inCall--}}},{key:"__callImmediates",value:function(){a.beginEvent("JSTimers.callImmediates()"),d||(d=l(22)),d.callImmediates(),a.endEvent()}},{key:"__callFunction",value:function(e,l,t){this._lastFlush=(new Date).getTime(),this._eventLoopStartTime=this._lastFlush,a.beginEvent(e+"."+l+"()"),this.__spy&&this.__spyJSCall(e,l,t);var s=this.getCallableModule(e);i(!!s,"Module %s is not a registered callable module (calling %s)",e,l),i(!!s[l],"Method %s does not exist on module %s",l,e);var u=s[l].apply(s,t);return a.endEvent(),u}},{key:"__invokeCallback",value:function(e,l){this._lastFlush=(new Date).getTime(),this._eventLoopStartTime=this._lastFlush;var t=e>>>1,s=1&e,u=s?this._successCallbacks[t]:this._failureCallbacks[t];u&&(this._successCallbacks[t]=this._failureCallbacks[t]=null,u.apply(null,l))}},{key:"__spyJSCall",value:function(e,l,t,s){this.__spy&&this.__spy(babelHelpers.extends({type:n,isSync:!1,module:e,method:l,failCbId:-1,successCbId:-1,args:t},s))}},{key:"__spyNativeCall",value:function(e,l,t,s){var u=this.__spy;if(u){var a=e+"",i=l;u(babelHelpers.extends({type:_,isSync:!1,module:a,method:i,failCbId:-1,successCbId:-1,args:t},s))}}}],[{key:"spy",value:function(e){e===!0?t.prototype.__spy=function(e){console.log((e.type===n?"N->JS":"JS->N")+" : "+(""+(e.module?e.module+".":"")+e.method)+("("+JSON.stringify(e.args)+")"))}:e===!1?t.prototype.__spy=null:t.prototype.__spy=e}}]),t}();t.exports=v},17); +__d(function(r,o,t,i){t.exports=r.ErrorUtils},18); +__d(function(n,e,t,i){"use strict";var c=(e(13),131072),o=!1,a=0,r=!1,u=!1,f={installReactHook:function(n){u=n,r=!0},setEnabled:function(n){o!==n&&(o=n)},isEnabled:function(){return o},beginEvent:function(e,t){o&&(e="function"==typeof e?e():e,n.nativeTraceBeginSection(c,e,t))},endEvent:function(){o&&n.nativeTraceEndSection(c)},beginAsyncEvent:function(e){var t=a;return o&&(a++,e="function"==typeof e?e():e,n.nativeTraceBeginAsyncSection(c,e,t,0)),t},endAsyncEvent:function(e,t){o&&(e="function"==typeof e?e():e,n.nativeTraceEndAsyncSection(c,e,t,0))},counterEvent:function(e,t){o&&(e="function"==typeof e?e():e,n.nativeTraceCounter&&n.nativeTraceCounter(c,e,t))},attachToRelayProfiler:function(n){n.attachProfileHandler("*",function(n){var e=f.beginAsyncEvent(n);return function(){f.endAsyncEvent(n,e)}}),n.attachAggregateHandler("*",function(n,e){f.beginEvent(n),e(),f.endEvent()})},swizzleJSON:function(){f.measureMethods(JSON,"JSON",["parse","stringify"])},measureMethods:function(n,e,t){},measure:function(n,e,t){return t}};t.exports=f},19); +__d(function(t,n,c,i){"use strict";function o(t){}c.exports=o},20); +__d(function(t,n,i,e){"use strict";function f(t){var n,i=typeof t;if(void 0===t)n="undefined";else if(null===t)n="null";else if("string"===i)n='"'+t+'"';else if("function"===i)try{n=t.toString()}catch(t){n="[function unknown]"}else try{n=JSON.stringify(t)}catch(i){if("function"==typeof t.toString)try{n=t.toString()}catch(t){}}return n||'["'+i+'" failed to stringify]'}i.exports=f},21); +__d(function(e,t,n,r){"use strict";function i(){return v||(v=t(24)),v()}function l(){var e=p.indexOf(null);return e===-1&&(e=p.length),e}function a(e,t){var n=q++,r=l();return p[r]=n,T[r]=e,g[r]=t,n}function o(e,n,r){t(27)(e<=q,"Tried to call timer with ID %s but no such timer exists.",e);var l=p.indexOf(e);if(l!==-1){var a=g[l],o=T[l];if(!o||!a)return void console.error("No callback found for timerID "+e);"setTimeout"!==a&&"setImmediate"!==a&&"requestAnimationFrame"!==a&&"requestIdleCallback"!==a||c(l);try{"setTimeout"===a||"setInterval"===a||"setImmediate"===a?o():"requestAnimationFrame"===a?o(i()):"requestIdleCallback"===a?o({timeRemaining:function(){return Math.max(0,h-(i()-n))},didTimeout:!!r}):console.error("Tried to call a callback with invalid type: "+a)}catch(e){y?y.push(e):y=[e]}}}function u(){if(b.length>0){var e=b.slice();b=[];for(var t=0;t0}function c(e){p[e]=null,T[e]=null,g[e]=null,k[e]=null}function s(e){if(null!=e){var t=p.indexOf(e);if(t!==-1){c(t);var n=g[t];"setImmediate"!==n&&"requestIdleCallback"!==n&&d.deleteTimer(e)}}}var m=(t(23),t(19),t(13)),f=t(15),d=f.Timing,v=null,h=16.666666666666668,I=1,T=[],g=[],p=[],b=[],w=[],x={},k=[],q=1,y=null,A=!1,C={setTimeout:function(e,t){for(var n=arguments.length,r=Array(n>2?n-2:0),i=2;i2?n-2:0),i=2;i1?t-1:0),r=1;r-1&&(w.splice(e,1),o(r,i(),!0)),delete x[r],0===w.length&&d.setSendIdleEvents(!1)},n);x[r]=l}return r},cancelIdleCallback:function(e){s(e);var t=w.indexOf(e);t!==-1&&w.splice(t,1);var n=x[e];n&&(C.clearTimeout(n),delete x[e]),0===w.length&&d.setSendIdleEvents(!1)},clearTimeout:function(e){s(e)},clearInterval:function(e){s(e)},clearImmediate:function(e){s(e);var t=b.indexOf(e);t!==-1&&b.splice(t,1)},cancelAnimationFrame:function(e){s(e)},callTimers:function(e){m(0!==e.length,"Cannot call `callTimers` with an empty list of IDs."),y=null;for(var t=0;t1)for(var r=1;r0){var t=w.slice();w=[];for(var n=0;n>>0===e&&e>=0&&e<=4294967295?e:null:(r=b.hex6.exec(e))?parseInt(r[1]+"ff",16)>>>0:m.hasOwnProperty(e)?m[e]:(r=b.rgb.exec(e))?(u(r[1])<<24|u(r[2])<<16|u(r[3])<<8|255)>>>0:(r=b.rgba.exec(e))?(u(r[1])<<24|u(r[2])<<16|u(r[3])<<8|g(r[4]))>>>0:(r=b.hex3.exec(e))?parseInt(r[1]+r[1]+r[2]+r[2]+r[3]+r[3]+"ff",16)>>>0:(r=b.hex8.exec(e))?parseInt(r[1],16)>>>0:(r=b.hex4.exec(e))?parseInt(r[1]+r[1]+r[2]+r[2]+r[3]+r[3]+r[4]+r[4],16)>>>0:(r=b.hsl.exec(e))?(255|i(d(r[1]),s(r[2]),s(r[3])))>>>0:(r=b.hsla.exec(e))?(i(d(r[1]),s(r[2]),s(r[3]))|g(r[4]))>>>0:null}function t(e,r,a){return a<0&&(a+=1),a>1&&(a-=1),a<.16666666666666666?e+6*(r-e)*a:a<.5?r:a<.6666666666666666?e+(r-e)*(.6666666666666666-a)*6:e}function i(e,r,a){var l=a<.5?a*(1+r):a+r-a*r,n=2*a-l,i=t(n,l,e+.3333333333333333),o=t(n,l,e),u=t(n,l,e-.3333333333333333);return Math.round(255*i)<<24|Math.round(255*o)<<16|Math.round(255*u)<<8}function o(){for(var e=arguments.length,r=Array(e),a=0;a255?255:r}function d(e){var r=parseFloat(e);return(r%360+360)%360/360}function g(e){var r=parseFloat(e);return r<0?0:r>1?255:Math.round(255*r)}function s(e){var r=parseFloat(e);return r<0?0:r>100?1:r/100}var h="[-+]?\\d*\\.?\\d+",c=h+"%",b={rgb:new RegExp("rgb"+o(h,h,h)),rgba:new RegExp("rgba"+o(h,h,h,h)),hsl:new RegExp("hsl"+o(h,c,c)),hsla:new RegExp("hsla"+o(h,c,c,h)),hex3:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex4:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#([0-9a-fA-F]{6})$/,hex8:/^#([0-9a-fA-F]{8})$/},m={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};a.exports=n},37); +__d(function(_,t,E,i){"use strict";var e=t(39),s=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,N=s.NativeMethodsMixin;E.exports=N},38); +__d(function(e,i,r,s){"use strict";var t=i(40),o=void 0;o=i(t.useFiber?41:108),r.exports=o},39); +__d(function(e,t,r,n){"use strict";var c,i={get useFiber(){return null==c&&(c=!0),c},set useFiber(e){if(null!=c)throw new Error("Cannot set useFiber feature flag after it has been accessed. Please override it before requiring React.");c=e}};r.exports=i},40); +__d(function(e,t,n,r){"use strict";function o(e){if(!1!==Mt(e)){var t=e.error;console.error(t)}}function i(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function a(e){return"topMouseMove"===e||"topTouchMove"===e}function u(e){return"topMouseDown"===e||"topTouchStart"===e}function l(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=qt.getNodeFromInstance(r),Gt.invokeGuardedCallbackAndCatchFirstError(o,n,void 0,e),e.currentTarget=null}function s(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;op?(m=f,f=null):m=f.sibling;var y=g(e,f,u[p],l);if(null===y){null===f&&(f=m);break}t&&f&&null===y.alternate&&n(e,f),d=a(y,d,p),null===c?s=y:c.sibling=y,c=y,f=m}if(p===u.length)return r(e,f),s;if(null===f){for(;py?(b=p,p=null):b=p.sibling;var P=g(e,p,C.value,l);if(null===P){p||(p=b);break}t&&p&&null===P.alternate&&n(e,p),m=a(P,m,y),null===d?f=P:d.sibling=P,d=P,p=b}if(C.done)return r(e,p),f;if(null===p){for(;!C.done;y++,C=c.next()){var T=h(e,C.value,l);null!==T&&(m=a(T,m,y),null===d?f=T:d.sibling=T,d=T)}return f}for(var k=o(e,p);!C.done;y++,C=c.next()){var x=v(k,e,y,C.value,l);null!==x&&(t&&null!==x.alternate&&k.delete(null===x.key?y:x.key),m=a(x,m,y),null===d?f=x:d.sibling=x,d=x)}return t&&k.forEach(function(t){return n(e,t)}),f}function b(e,t,n,o){if(null!==t&&t.tag===zo){r(e,t.sibling);var a=i(t,o);return a.pendingProps=n,a.return=e,a}r(e,t);var u=Do(n,e.internalContextTag,o);return u.return=e,u}function C(e,t,o,a){for(var u=o.key,l=t;null!==l;){if(l.key===u){if(l.type===o.type){r(e,l.sibling);var s=i(l,a);return s.ref=oe(l,o),s.pendingProps=o.props,s.return=e,s}r(e,l);break}n(e,l),l=l.sibling}var c=Fo(o,e.internalContextTag,a);return c.ref=oe(t,o),c.return=e,c}function P(e,t,o,a){for(var u=o.key,l=t;null!==l;){if(l.key===u){if(l.tag===Bo){r(e,l.sibling);var s=i(l,a);return s.pendingProps=o,s.return=e,s}r(e,l);break}n(e,l),l=l.sibling}var c=Uo(o,e.internalContextTag,a);return c.return=e,c}function T(e,t,n,o){var a=t;if(null!==a){if(a.tag===Qo){r(e,a.sibling);var u=i(a,o);return u.type=n.value,u.return=e,u}r(e,a)}var l=jo(n,e.internalContextTag,o);return l.type=n.value,l.return=e,l}function k(e,t,o,a){for(var u=o.key,l=t;null!==l;){if(l.key===u){if(l.tag===Yo&&l.stateNode.containerInfo===o.containerInfo&&l.stateNode.implementation===o.implementation){r(e,l.sibling);var s=i(l,a);return s.pendingProps=o.children||[],s.return=e,s}r(e,l);break}n(e,l),l=l.sibling}var c=Wo(o,e.internalContextTag,a);return c.return=e,c}function x(e,t,n,o){var i=xn.disableNewFiberFeatures,a="object"==typeof n&&null!==n;if(a)if(i)switch(n.$$typeof){case Ko:return u(C(e,t,n,o));case _o:return u(k(e,t,n,o))}else switch(n.$$typeof){case Ko:return u(C(e,t,n,o));case Eo:return u(P(e,t,n,o));case Io:return u(T(e,t,n,o));case _o:return u(k(e,t,n,o))}if(i)switch(e.tag){case Mo:var l=e.type;Nt(null===n||!1===n,"%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.",l.displayName||l.name||"Component");break;case Oo:var s=e.type;Nt(null===n||!1===n,"%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.",s.displayName||s.name||"Component")}if("string"==typeof n||"number"==typeof n)return u(b(e,t,""+n,o));if(Lo(n))return m(e,t,n,o);if(re(n))return y(e,t,n,o);if(a&&ie(e,n),!i&&void 0===n)switch(e.tag){case Mo:case Oo:var c=e.type;Nt(!1,"%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.",c.displayName||c.name||"Component")}return r(e,t)}return x}function ue(e){return function(t){try{return e(t)}catch(e){}}}function le(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!t.supportsFiber)return!0;try{var n=t.inject(e);pa=ue(function(e){return t.onCommitFiberRoot(n,e)}),ha=ue(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}return!0}function se(e){"function"==typeof pa&&pa(e)}function ce(e){"function"==typeof ha&&ha(e)}function fe(e){if(!e)return St;var t=Bn.get(e);return"number"==typeof t.tag?ku(t):t._processChildContext(t._context)}function de(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function pe(e,t){return"object"!=typeof t||null===t||It(e,t)}function he(e){return"number"==typeof e?Wu.getByID(e):e}function ge(e,t,n){if(Array.isArray(t))for(var r=t.length;r--&&Mu>0;)ge(e,t[r],n);else if(t&&Mu>0){var o=he(t);for(var i in Ou)if(Ou[i]){var a=o[i];if(void 0!==a){var u=n[i];if(u){if("function"==typeof a&&(a=!0),void 0===a&&(a=null),"object"!=typeof u)e[i]=a;else if("function"==typeof u.diff||"function"==typeof u.process){var l="function"==typeof u.process?u.process(a):a;e[i]=l}Ou[i]=!1,Mu--}}}}}function ve(e,t,n,r){var o,i=t.length0&&e&&(ge(e,i,o),Ou=null);for(u in t)void 0===n[u]&&(o=r[u])&&(e&&void 0!==e[u]||void 0!==(a=t[u])&&("object"!=typeof o||"function"==typeof o.diff||"function"==typeof o.process?((e||(e={}))[u]=null,Ou||(Ou={}),Ou[u]||(Ou[u]=!0,Mu++)):e=be(e,a,o)));return e}function Pe(e,t,n){return Ce(e,Lu,t,n)}function Te(e,t,n){return Ce(e,t,Lu,n)}function ke(e,t){return function(){if(t){if("boolean"==typeof e.__isMounted){if(!e.__isMounted)return}else if("function"==typeof e.isMounted&&!e.isMounted())return;return t.apply(e,arguments)}}}function xe(e,t){if(void 0!==t.styles){var n=e._owner||null,r=e.constructor.displayName,o="`styles` is not a supported property of `"+r+"`, did you mean `style` (singular)?";throw n&&n.constructor&&n.constructor.displayName&&(o+="\n\nCheck the `"+n.constructor.displayName+"` parent component."),new Error(o)}}function Ne(e,t){for(var n in t.style)t[n]||void 0===e[n]||console.error("You are setting the style `{ "+n+": ... }` as a prop. You should nest it in a style object. E.g. `{ style: { "+n+": ... } }`")}function Re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Se(e){"number"==typeof e?tl(e):(tl(e._nativeTag),e._children.forEach(Se))}function we(e){if(null==e)return null;if("number"==typeof e)return e;var t=e,n=Bn.get(t);return n?sl(n):t||(Nt("object"==typeof t&&("_rootNodeID"in t||"_nativeTag"in t)||null!=t.render&&"function"==typeof t.render,"findNodeHandle(...): Argument is not a component (type: %s, keys: %s)",typeof t,Object.keys(t)),void Nt(!1,"findNodeHandle(...): Unable to find node handle for unmounted component."))}function Ee(){if(dl)for(var e in pl){var t=pl[e],n=dl.indexOf(e);if(Nt(n>-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e),!hl.plugins[n]){Nt(t.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e),hl.plugins[n]=t;var r=t.eventTypes;for(var o in r)Nt(Ie(r[o],t,o),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",o,e)}}}function Ie(e,t,n){Nt(!hl.eventNameDispatchConfigs.hasOwnProperty(n),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",n),hl.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var i=r[o];_e(i,t,n)}return!0}return!!e.registrationName&&(_e(e.registrationName,t,n),!0)}function _e(e,t,n){Nt(!hl.registrationNameModules[e],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e),hl.registrationNameModules[e]=t,hl.registrationNameDependencies[e]=t.eventTypes[n].dependencies}function He(e,t){return Nt(null!=t,"accumulateInto(...): Accumulated items must not be null or undefined."),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function Fe(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}function Ae(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}function De(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!Ae(t));default:return!1}}function Ue(e){if(void 0!==e._hostParent)return e._hostParent;if("number"==typeof e.tag){do e=e.return;while(e&&e.tag!==xl);if(e)return e}return null}function je(e,t){for(var n=0,r=e;r;r=Ue(r))n++;for(var o=0,i=t;i;i=Ue(i))o++;for(;n-o>0;)e=Ue(e),n--;for(;o-n>0;)t=Ue(t),o--;for(var a=n;a--;){if(e===t||e===t.alternate)return e;e=Ue(e),t=Ue(t)}return null}function We(e,t){for(;t;){if(e===t||e===t.alternate)return!0;t=Ue(t)}return!1}function Le(e){return Ue(e)}function Oe(e,t,n){for(var r=[];e;)r.push(e),e=Ue(e);var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(u[l],"captured",o)}function ze(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return Rl(e,r)}function Ye(e,t,n){var r=ze(e,n,t);r&&(n._dispatchListeners=vl(n._dispatchListeners,r),n._dispatchInstances=vl(n._dispatchInstances,e))}function Be(e){e&&e.dispatchConfig.phasedRegistrationNames&&Nl.traverseTwoPhase(e._targetInst,Ye,e)}function Qe(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?Nl.getParentInstance(t):null;Nl.traverseTwoPhase(n,Ye,e)}}function Xe(e,t,n){if(e&&n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=Rl(e,r);o&&(n._dispatchListeners=vl(n._dispatchListeners,o),n._dispatchInstances=vl(n._dispatchInstances,e))}}function Ve(e){e&&e.dispatchConfig.registrationName&&Xe(e._targetInst,null,e)}function Ge(e){ml(e,Be)}function $e(e){ml(e,Qe)}function qe(e,t,n,r){Nl.traverseEnterLeave(n,r,Xe,e,t)}function Je(e){ml(e,Ve)}function Ke(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var o=this.constructor.Interface;for(var i in o)if(o.hasOwnProperty(i)){var a=o[i];a?this[i]=a(n):"target"===i?this.target=r:this[i]=n[i]}var u=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=u?Lt.thatReturnsTrue:Lt.thatReturnsFalse,this.isPropagationStopped=Lt.thatReturnsFalse,this}function Ze(e,t,n,r){var o=this;if(o.eventPool.length){var i=o.eventPool.pop();return o.call(i,e,t,n,r),i}return new o(e,t,n,r)}function et(e){var t=this;Nt(e instanceof t,"Trying to release an event instance into a pool of a different type."),e.destructor(),t.eventPool.lengthns&&(e+=" (original size: "+rs.length+")"),e}function pt(e,t){return Nt(null!=t,"accumulate(...): Accumulated items must be not be null or undefined."),null==e?t:Array.isArray(e)?e.concat(t):Array.isArray(t)?[e].concat(t):[e,t]}function ht(e,t,n,r){var o=ls(e)?ys.startShouldSetResponder:ss(e)?ys.moveShouldSetResponder:"topSelectionChange"===e?ys.selectionChangeShouldSetResponder:ys.scrollShouldSetResponder,i=hs?Nl.getLowestCommonAncestor(hs,t):t,a=i===hs,u=Kl.getPooled(o,i,n,r);u.touchHistory=as.touchHistory,a?wl.accumulateTwoPhaseDispatchesSkipTarget(u):wl.accumulateTwoPhaseDispatches(u);var l=ps(u);if(u.isPersistent()||u.constructor.release(u),!l||l===hs)return null;var s,c=Kl.getPooled(ys.responderGrant,l,n,r);c.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(c);var f=!0===fs(c);if(hs){var d=Kl.getPooled(ys.responderTerminationRequest,hs,n,r);d.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(d);var p=!ds(d)||fs(d);if(d.isPersistent()||d.constructor.release(d),p){var h=Kl.getPooled(ys.responderTerminate,hs,n,r);h.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(h),s=us(s,[c,h]),ms(l,f)}else{var g=Kl.getPooled(ys.responderReject,l,n,r);g.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(g),s=us(s,g)}}else s=us(s,c),ms(l,f);return s}function gt(e,t,n){return t&&("topScroll"===e&&!n.responderIgnoreScroll||gs>0&&"topSelectionChange"===e||ls(e)||ss(e))}function vt(e){var t=e.touches;if(!t||0===t.length)return!0;for(var n=0;n3&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:pn,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}},gn=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===pn},vn=pn,mn={createPortal:hn,isPortal:gn,REACT_PORTAL_TYPE:vn},yn={},bn={},Cn={getClosestInstanceFromNode:x,getInstanceFromNode:x,getNodeFromInstance:N,precacheFiberNode:P,precacheNode:C,uncacheFiberNode:k,uncacheNode:T,getFiberCurrentPropsFromNode:R,updateFiberProps:S},Pn=Cn,Tn="undefined"!=typeof window?window:"undefined"!=typeof e?e:"undefined"!=typeof self?self:{},kn={disableNewFiberFeatures:!1,enableAsyncSubtreeAPI:!1},xn=kn,Nn={NoEffect:0,PerformedWork:1,Placement:2,Update:4,PlacementAndUpdate:6,Deletion:8,ContentReset:16,Callback:32,Err:64,Ref:128},Rn={NoWork:0,SynchronousPriority:1,TaskPriority:2,HighPriority:3,LowPriority:4,OffscreenPriority:5},Sn={IndeterminateComponent:0,FunctionalComponent:1,ClassComponent:2,HostRoot:3,HostPortal:4,HostComponent:5,HostText:6,CoroutineComponent:7,CoroutineHandlerPhase:8,YieldComponent:9,Fragment:10},wn=Nn.Callback,En=Rn.NoWork,In=Rn.SynchronousPriority,_n=Rn.TaskPriority,Hn=Sn.ClassComponent,Fn=Sn.HostRoot,An=D,Dn=U,Un=j,jn=W,Wn=L,Ln=M,On=z,Mn={addUpdate:An,addReplaceUpdate:Dn,addForceUpdate:Un,getUpdatePriority:jn,addTopLevelUpdate:Wn,beginUpdateQueue:Ln,commitCallbacks:On},zn=Y,Yn={remove:function(e){e._reactInternalInstance=void 0},get:function(e){return e._reactInternalInstance},has:function(e){return void 0!==e._reactInternalInstance},set:function(e,t){e._reactInternalInstance=t}},Bn=Yn,Qn=wt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Xn={ReactCurrentOwner:Qn.ReactCurrentOwner},Vn=Xn,Gn=Sn.HostComponent,$n=Sn.HostRoot,qn=Sn.HostPortal,Jn=Sn.HostText,Kn=Nn.NoEffect,Zn=Nn.Placement,er=1,tr=2,nr=3,rr=function(e){return B(e)===tr},or=function(e){var t=Bn.get(e);return!!t&&B(t)===tr},ir=X,ar=function(e){var t=X(e);if(!t)return null;for(var n=t;!0;){if(n.tag===Gn||n.tag===Jn)return n;if(n.child)n.child.return=n,n=n.child;else{if(n===t)return null;for(;!n.sibling;){if(!n.return||n.return===t)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}}return null},ur=function(e){var t=X(e);if(!t)return null;for(var n=t;!0;){if(n.tag===Gn||n.tag===Jn)return n;if(n.child&&n.tag!==qn)n.child.return=n,n=n.child;else{if(n===t)return null;for(;!n.sibling;){if(!n.return||n.return===t)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}}return null},lr={isFiberMounted:rr,isMounted:or,findCurrentFiberUsingSlowPath:ir,findCurrentHostFiber:ar,findCurrentHostFiberWithNoPortals:ur},sr=[],cr=-1,fr=function(e){return{current:e}},dr=function(){return-1===cr},pr=function(e,t){cr<0||(e.current=sr[cr],sr[cr]=null,cr--)},hr=function(e,t,n){cr++,sr[cr]=e.current,e.current=t},gr=function(){for(;cr>-1;)sr[cr]=null,cr--},vr={createCursor:fr,isEmpty:dr,pop:pr,push:hr,reset:gr},mr=lr.isFiberMounted,yr=Sn.ClassComponent,br=Sn.HostRoot,Cr=vr.createCursor,Pr=vr.pop,Tr=vr.push,kr=Cr(St),xr=Cr(!1),Nr=St,Rr=V,Sr=G,wr=function(e,t){var n=e.type,r=n.contextTypes;if(!r)return St;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var i={};for(var a in r)i[a]=t[a];return o&&G(e,t,i),i},Er=function(){return xr.current},Ir=$,_r=q,Hr=J,Fr=function(e,t,n){Nt(null==kr.cursor,"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue."),Tr(kr,t,e),Tr(xr,n,e)},Ar=K,Dr=function(e){if(!q(e))return!1;var t=e.stateNode,n=t&&t.__reactInternalMemoizedMergedChildContext||St;return Nr=kr.current,Tr(kr,n,e),Tr(xr,xr.current,e),!0},Ur=function(e,t){var n=e.stateNode;if(Nt(n,"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue."),t){var r=K(e,Nr,!0);n.__reactInternalMemoizedMergedChildContext=r,Pr(xr,e),Pr(kr,e),Tr(kr,r,e),Tr(xr,t,e)}else Pr(xr,e),Tr(xr,t,e)},jr=function(){Nr=St,kr.current=St,xr.current=!1},Wr=function(e){Nt(mr(e)&&e.tag===yr,"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");for(var t=e;t.tag!==br;){if(q(t))return t.stateNode.__reactInternalMemoizedMergedChildContext;var n=t.return;Nt(n,"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue."),t=n}return t.stateNode.context},Lr={getUnmaskedContext:Rr,cacheContext:Sr,getMaskedContext:wr,hasContextChanged:Er,isContextConsumer:Ir,isContextProvider:_r,popContextProvider:Hr,pushTopLevelContextObject:Fr,processChildContext:Ar,pushContextProvider:Dr,invalidateContextProvider:Ur,resetContext:jr,findCurrentUnmaskedContext:Wr},Or={NoContext:0,AsyncUpdates:1},Mr=Sn.IndeterminateComponent,zr=Sn.ClassComponent,Yr=Sn.HostRoot,Br=Sn.HostComponent,Qr=Sn.HostText,Xr=Sn.HostPortal,Vr=Sn.CoroutineComponent,Gr=Sn.YieldComponent,$r=Sn.Fragment,qr=Rn.NoWork,Jr=Or.NoContext,Kr=Nn.NoEffect,Zr=function(e,t,n){return{tag:e,key:t,type:null,stateNode:null,return:null,child:null,sibling:null,index:0,ref:null,pendingProps:null,memoizedProps:null,updateQueue:null,memoizedState:null,internalContextTag:n,effectTag:Kr,nextEffect:null,firstEffect:null,lastEffect:null,pendingWorkPriority:qr,alternate:null}},eo=function(e,t){var n=e.alternate;return null===n?(n=Zr(e.tag,e.key,e.internalContextTag),n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.effectTag=qr,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.pendingWorkPriority=t,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n},to=function(){return Zr(Yr,null,Jr)},no=function(e,t,n){var r=null,o=ee(e.type,e.key,t,r);return o.pendingProps=e.props,o.pendingWorkPriority=n,o},ro=function(e,t,n){var r=Zr($r,null,t);return r.pendingProps=e,r.pendingWorkPriority=n,r},oo=function(e,t,n){var r=Zr(Qr,null,t);return r.pendingProps=e,r.pendingWorkPriority=n,r},io=ee,ao=function(){var e=Zr(Br,null,Jr);return e.type="DELETED",e},uo=function(e,t,n){var r=Zr(Vr,e.key,t);return r.type=e.handler,r.pendingProps=e,r.pendingWorkPriority=n,r},lo=function(e,t,n){return Zr(Gr,null,t)},so=function(e,t,n){var r=Zr(Xr,e.key,t);return r.pendingProps=e.children||[],r.pendingWorkPriority=n,r.stateNode={containerInfo:e.containerInfo,implementation:e.implementation},r},co=function(e,t){return e!==qr&&(t===qr||t>e)?e:t},fo={createWorkInProgress:eo,createHostRootFiber:to,createFiberFromElement:no,createFiberFromFragment:ro,createFiberFromText:oo,createFiberFromElementType:io,createFiberFromHostInstanceForDeletion:ao,createFiberFromCoroutine:uo,createFiberFromYield:lo,createFiberFromPortal:so,largerPriority:co},po=fo.createHostRootFiber,ho=function(e){var t=po(),n={current:t,containerInfo:e,isScheduled:!1,nextScheduledRoot:null,context:null,pendingContext:null};return t.stateNode=n,n},go={createFiberRoot:ho},vo=function(e,t,n){return"\n in "+(e||"Unknown")+(t?" (at "+t.fileName.replace(/^.*[\\\/]/,"")+":"+t.lineNumber+")":n?" (created by "+n+")":"")},mo=Sn.IndeterminateComponent,yo=Sn.FunctionalComponent,bo=Sn.ClassComponent,Co=Sn.HostComponent,Po={getStackAddendumByWorkInProgressFiber:ne};"function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for")?(Ut=("function"==typeof Symbol?Symbol.for:"@@for")("react.coroutine"),jt=("function"==typeof Symbol?Symbol.for:"@@for")("react.yield")):(Ut=60104,jt=60105);var To=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Ut,key:null==r?null:""+r,children:e,handler:t,props:n}},ko=function(e){return{$$typeof:jt,value:e}},xo=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===Ut},No=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===jt},Ro=jt,So=Ut,wo={createCoroutine:To,createYield:ko,isCoroutine:xo,isYield:No,REACT_YIELD_TYPE:Ro,REACT_COROUTINE_TYPE:So},Eo=wo.REACT_COROUTINE_TYPE,Io=wo.REACT_YIELD_TYPE,_o=mn.REACT_PORTAL_TYPE,Ho=fo.createWorkInProgress,Fo=fo.createFiberFromElement,Ao=fo.createFiberFromFragment,Do=fo.createFiberFromText,Uo=fo.createFiberFromCoroutine,jo=fo.createFiberFromYield,Wo=fo.createFiberFromPortal,Lo=Array.isArray,Oo=Sn.FunctionalComponent,Mo=Sn.ClassComponent,zo=Sn.HostText,Yo=Sn.HostPortal,Bo=Sn.CoroutineComponent,Qo=Sn.YieldComponent,Xo=Sn.Fragment,Vo=Nn.NoEffect,Go=Nn.Placement,$o=Nn.Deletion,qo="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.iterator:"@@iterator"),Jo="@@iterator",Ko="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for")&&("function"==typeof Symbol?Symbol.for:"@@for")("react.element")||60103,Zo=ae(!0,!0),ei=ae(!1,!0),ti=ae(!1,!1),ni=function(e,t){if(Nt(null===e||t.child===e.child,"Resuming work not yet implemented."),null!==t.child){var n=t.child,r=Ho(n,n.pendingWorkPriority);for(r.pendingProps=n.pendingProps,t.child=r,r.return=t;null!==n.sibling;)n=n.sibling,r=r.sibling=Ho(n,n.pendingWorkPriority),r.pendingProps=n.pendingProps,r.return=t;r.sibling=null}},ri={reconcileChildFibers:Zo,reconcileChildFibersInPlace:ei,mountChildFibersInPlace:ti,cloneChildFibers:ni},oi=Nn.Update,ii=Or.AsyncUpdates,ai=Lr.cacheContext,ui=Lr.getMaskedContext,li=Lr.getUnmaskedContext,si=Lr.isContextConsumer,ci=Mn.addUpdate,fi=Mn.addReplaceUpdate,di=Mn.addForceUpdate,pi=Mn.beginUpdateQueue,hi=Lr,gi=hi.hasContextChanged,vi=lr.isMounted,mi=function(e,t,n,r){function o(e,t,n,r,o,i){if(null===t||null!==e.updateQueue&&e.updateQueue.hasForceUpdate)return!0;var a=e.stateNode,u=e.type;return"function"==typeof a.shouldComponentUpdate?a.shouldComponentUpdate(n,o,i):!(u.prototype&&u.prototype.isPureReactComponent&&Et(t,n)&&Et(r,o))}function i(e,t){t.props=e.memoizedProps,t.state=e.memoizedState}function a(e,t){t.updater=d,e.stateNode=t,Bn.set(t,e)}function u(e,t){var n=e.type,r=li(e),o=si(e),i=o?ui(e,r):St,u=new n(t,i);return a(e,u),o&&ai(e,r,i),u}function l(e,t){var n=t.state;t.componentWillMount(),n!==t.state&&d.enqueueReplaceState(t,t.state,null)}function s(e,t,n,r){var o=t.state;t.componentWillReceiveProps(n,r),t.state!==o&&d.enqueueReplaceState(t,t.state,null)}function c(e,t){var n=e.alternate,r=e.stateNode,o=r.state||null,i=e.pendingProps;Nt(i,"There must be pending props for an initial mount. This error is likely caused by a bug in React. Please file an issue.");var a=li(e);if(r.props=i,r.state=o,r.refs=St,r.context=ui(e,a),xn.enableAsyncSubtreeAPI&&null!=e.type&&null!=e.type.prototype&&!0===e.type.prototype.unstable_isAsyncReactComponent&&(e.internalContextTag|=ii),"function"==typeof r.componentWillMount){l(e,r);var u=e.updateQueue;null!==u&&(r.state=pi(n,e,u,r,o,i,t))}"function"==typeof r.componentDidMount&&(e.effectTag|=oi)}function f(e,t,a){var u=t.stateNode;i(t,u);var l=t.memoizedProps,c=t.pendingProps;c||(c=l,Nt(null!=c,"There should always be pending or memoized props. This error is likely caused by a bug in React. Please file an issue."));var f=u.context,d=li(t),p=ui(t,d);"function"!=typeof u.componentWillReceiveProps||l===c&&f===p||s(t,u,c,p);var h=t.memoizedState,g=void 0;if(g=null!==t.updateQueue?pi(e,t,t.updateQueue,u,h,c,a):h,!(l!==c||h!==g||gi()||null!==t.updateQueue&&t.updateQueue.hasForceUpdate))return"function"==typeof u.componentDidUpdate&&(l===e.memoizedProps&&h===e.memoizedState||(t.effectTag|=oi)),!1;var v=o(t,l,c,h,g,p);return v?("function"==typeof u.componentWillUpdate&&u.componentWillUpdate(c,g,p),"function"==typeof u.componentDidUpdate&&(t.effectTag|=oi)):("function"==typeof u.componentDidUpdate&&(l===e.memoizedProps&&h===e.memoizedState||(t.effectTag|=oi)),n(t,c),r(t,g)),u.props=c,u.state=g,u.context=p,v}var d={isMounted:vi,enqueueSetState:function(n,r,o){var i=Bn.get(n),a=t(i,!1);o=void 0===o?null:o,ci(i,r,o,a),e(i,a)},enqueueReplaceState:function(n,r,o){var i=Bn.get(n),a=t(i,!1);o=void 0===o?null:o,fi(i,r,o,a),e(i,a)},enqueueForceUpdate:function(n,r){var o=Bn.get(n),i=t(o,!1);r=void 0===r?null:r,di(o,r,i),e(o,i)}};return{adoptClassInstance:a,constructClassInstance:u,mountClassInstance:c,updateClassInstance:f}},yi=ri.mountChildFibersInPlace,bi=ri.reconcileChildFibers,Ci=ri.reconcileChildFibersInPlace,Pi=ri.cloneChildFibers,Ti=Mn.beginUpdateQueue,ki=Lr.getMaskedContext,xi=Lr.getUnmaskedContext,Ni=Lr.hasContextChanged,Ri=Lr.pushContextProvider,Si=Lr.pushTopLevelContextObject,wi=Lr.invalidateContextProvider,Ei=Sn.IndeterminateComponent,Ii=Sn.FunctionalComponent,_i=Sn.ClassComponent,Hi=Sn.HostRoot,Fi=Sn.HostComponent,Ai=Sn.HostText,Di=Sn.HostPortal,Ui=Sn.CoroutineComponent,ji=Sn.CoroutineHandlerPhase,Wi=Sn.YieldComponent,Li=Sn.Fragment,Oi=Rn.NoWork,Mi=Rn.OffscreenPriority,zi=Nn.PerformedWork,Yi=Nn.Placement,Bi=Nn.ContentReset,Qi=Nn.Err,Xi=Nn.Ref,Vi=Vn.ReactCurrentOwner,Gi=function(e,t,n,r,o){function i(e,t,n){a(e,t,n,t.pendingWorkPriority)}function a(e,t,n,r){null===e?t.child=yi(t,t.child,n,r):e.child===t.child?t.child=bi(t,t.child,n,r):t.child=Ci(t,t.child,n,r)}function u(e,t){var n=t.pendingProps;if(Ni())null===n&&(n=t.memoizedProps);else if(null===n||t.memoizedProps===n)return y(e,t);return i(e,t,n),C(t,n),t.child}function l(e,t){var n=t.ref;null===n||e&&e.ref===n||(t.effectTag|=Xi)}function s(e,t){var n=t.type,r=t.pendingProps,o=t.memoizedProps;if(Ni())null===r&&(r=o);else if(null===r||o===r)return y(e,t);var a,u=xi(t),l=ki(t,u);return a=n(r,l),t.effectTag|=zi,i(e,t,a),C(t,r),t.child}function c(e,t,n){var r=Ri(t),o=void 0;return null===e?t.stateNode?Nt(!1,"Resuming work not yet implemented."):(A(t,t.pendingProps),D(t,n),o=!0):o=U(e,t,n),f(e,t,o,r)}function f(e,t,n,r){if(l(e,t),!n)return r&&wi(t,!1),y(e,t);var o=t.stateNode;Vi.current=t;var a=void 0;return a=o.render(),t.effectTag|=zi,i(e,t,a),P(t,o.state),C(t,o.props),r&&wi(t,!0),t.child}function d(e,t,n){var r=t.stateNode;r.pendingContext?Si(t,r.pendingContext,r.pendingContext!==r.context):r.context&&Si(t,r.context,!1),w(t,r.containerInfo);var o=t.updateQueue;if(null!==o){var a=t.memoizedState,u=Ti(e,t,o,null,a,null,n);if(a===u)return I(),y(e,t);var l=u.element;return null!==e&&null!==e.child||!E(t)?(I(),i(e,t,l)):(t.effectTag|=Yi,t.child=yi(t,t.child,l,n)),P(t,u),t.child}return I(),y(e,t)}function p(e,t,n){S(t),null===e&&_(t);var r=t.type,o=t.memoizedProps,a=t.pendingProps;null===a&&(a=o,Nt(null!==a,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue."));var u=null!==e?e.memoizedProps:null;if(Ni());else if(null===a||o===a)return y(e,t);var s=a.children;return x(r,a)?s=null:u&&x(r,u)&&(t.effectTag|=Bi),l(e,t),n!==Mi&&!N&&R(r,a)?(t.pendingWorkPriority=Mi,null):(i(e,t,s),C(t,a),t.child)}function h(e,t){null===e&&_(t);var n=t.pendingProps;return null===n&&(n=t.memoizedProps),C(t,n),null}function g(e,t,n){Nt(null===e,"An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.");var r,o=t.type,a=t.pendingProps,u=xi(t),l=ki(t,u);if(r=o(a,l),t.effectTag|=zi,"object"==typeof r&&null!==r&&"function"==typeof r.render){t.tag=_i;var s=Ri(t);return F(t,r),D(t,n),f(e,t,!0,s)}return t.tag=Ii,i(e,t,r),C(t,a),t.child}function v(e,t){var n=t.pendingProps;Ni()?null===n&&(n=e&&e.memoizedProps,Nt(null!==n,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.")):null!==n&&t.memoizedProps!==n||(n=t.memoizedProps);var r=n.children,o=t.pendingWorkPriority;return null===e?t.stateNode=yi(t,t.stateNode,r,o):e.child===t.child?t.stateNode=bi(t,t.stateNode,r,o):t.stateNode=Ci(t,t.stateNode,r,o),C(t,n),t.stateNode}function m(e,t){w(t,t.stateNode.containerInfo);var n=t.pendingWorkPriority,r=t.pendingProps;if(Ni())null===r&&(r=e&&e.memoizedProps,Nt(null!=r,"We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue."));else if(null===r||t.memoizedProps===r)return y(e,t);return null===e?(t.child=Ci(t,t.child,r,n),C(t,r)):(i(e,t,r),C(t,r)),t.child}function y(e,t){return Pi(e,t),t.child}function b(e,t){switch(t.tag){case _i:Ri(t);break;case Di:w(t,t.stateNode.containerInfo)}return null}function C(e,t){e.memoizedProps=t}function P(e,t){e.memoizedState=t}function T(e,t,n){if(t.pendingWorkPriority===Oi||t.pendingWorkPriority>n)return b(e,t);switch(t.tag){case Ei:return g(e,t,n);case Ii:return s(e,t);case _i:return c(e,t,n);case Hi:return d(e,t,n);case Fi:return p(e,t,n);case Ai:return h(e,t);case ji:t.tag=Ui;case Ui:return v(e,t);case Wi:return null;case Di:return m(e,t);case Li:return u(e,t);default:Nt(!1,"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.")}}function k(e,t,n){switch(t.tag){case _i:Ri(t);break;case Hi:var r=t.stateNode;w(t,r.containerInfo);break;default:Nt(!1,"Invalid type of work. This error is likely caused by a bug in React. Please file an issue.")}if(t.effectTag|=Qi,null===e?t.child=null:t.child!==e.child&&(t.child=e.child),t.pendingWorkPriority===Oi||t.pendingWorkPriority>n)return b(e,t);if(t.firstEffect=null,t.lastEffect=null,a(e,t,null,n),t.tag===_i){var o=t.stateNode;t.memoizedProps=o.props,t.memoizedState=o.state}return t.child}var x=e.shouldSetTextContent,N=e.useSyncScheduling,R=e.shouldDeprioritizeSubtree,S=t.pushHostContext,w=t.pushHostContainer,E=n.enterHydrationState,I=n.resetHydrationState,_=n.tryToClaimNextHydratableInstance,H=mi(r,o,C,P),F=H.adoptClassInstance,A=H.constructClassInstance,D=H.mountClassInstance,U=H.updateClassInstance;return{beginWork:T,beginFailedWork:k}},$i=ri.reconcileChildFibers,qi=Lr.popContextProvider,Ji=Sn.IndeterminateComponent,Ki=Sn.FunctionalComponent,Zi=Sn.ClassComponent,ea=Sn.HostRoot,ta=Sn.HostComponent,na=Sn.HostText,ra=Sn.HostPortal,oa=Sn.CoroutineComponent,ia=Sn.CoroutineHandlerPhase,aa=Sn.YieldComponent,ua=Sn.Fragment,la=Nn.Placement,sa=Nn.Ref,ca=Nn.Update,fa=Rn.OffscreenPriority,da=function(e,t,n){function r(e){e.effectTag|=ca}function o(e){e.effectTag|=sa}function i(e,t){var n=t.stateNode;for(n&&(n.return=t);null!==n;){if(n.tag===ta||n.tag===na||n.tag===ra)Nt(!1,"A coroutine cannot have host component children.");else if(n.tag===aa)e.push(n.type);else if(null!==n.child){n.child.return=n,n=n.child;continue}for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function a(e,t){var n=t.memoizedProps;Nt(n,"Should be resolved by now. This error is likely caused by a bug in React. Please file an issue."),t.tag=ia;var r=[];i(r,t);var o=n.handler,a=n.props,u=o(a,r),l=null!==e?e.child:null,s=t.pendingWorkPriority;return t.child=$i(t,l,u,s),t.child}function u(e,t){for(var n=t.child;null!==n;){if(n.tag===ta||n.tag===na)f(e,n.stateNode);else if(n.tag===ra);else if(null!==n.child){n=n.child;continue}if(n===t)return;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n=n.sibling}}function l(e,t,n){var i=t.pendingProps;switch(null===i?i=t.memoizedProps:t.pendingWorkPriority===fa&&n!==fa||(t.pendingProps=null),t.tag){case Ki:return null;case Zi:return qi(t),null;case ea:var l=t.stateNode;return l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),null!==e&&null!==e.child||(C(t),t.effectTag&=~la),null;case ta:g(t);var f=h(),P=t.type;if(null!==e&&null!=t.stateNode){var T=e.memoizedProps,k=t.stateNode,x=v(),N=p(k,P,T,i,f,x);t.updateQueue=N,N&&r(t),e.ref!==t.ref&&o(t)}else{if(!i)return Nt(null!==t.stateNode,"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."),null;var R=v();if(C(t))y(t,f)&&r(t);else{var S=s(P,i,f,R,t);u(S,t),d(S,P,i,f)&&r(t),t.stateNode=S}null!==t.ref&&o(t)}return null;case na:var w=i;if(e&&null!=t.stateNode)e.memoizedProps!==w&&r(t);else{if("string"!=typeof w)return Nt(null!==t.stateNode,"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue."),null;var E=h(),I=v();C(t)?b(t)&&r(t):t.stateNode=c(w,E,I,t)}return null;case oa:return a(e,t);case ia:return t.tag=oa,null;case aa:case ua:return null;case ra:return r(t),m(t),null;case Ji:Nt(!1,"An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.");default:Nt(!1,"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.")}}var s=e.createInstance,c=e.createTextInstance,f=e.appendInitialChild,d=e.finalizeInitialChildren,p=e.prepareUpdate,h=t.getRootHostContainer,g=t.popHostContext,v=t.getHostContext,m=t.popHostContainer,y=n.prepareToHydrateHostInstance,b=n.prepareToHydrateHostTextInstance,C=n.popHydrationState;return{completeWork:l}},pa=null,ha=null,ga=le,va=se,ma=ce,ya={injectInternals:ga,onCommitRoot:va,onCommitUnmount:ma},ba=Sn.ClassComponent,Ca=Sn.HostRoot,Pa=Sn.HostComponent,Ta=Sn.HostText,ka=Sn.HostPortal,xa=Sn.CoroutineComponent,Na=Mn.commitCallbacks,Ra=ya.onCommitUnmount,Sa=Nn.Placement,wa=Nn.Update,Ea=Nn.Callback,Ia=Nn.ContentReset,_a=function(e,t){function n(e,n){try{n.componentWillUnmount()}catch(n){t(e,n)}}function r(e){var n=e.ref;if(null!==n)try{n(null)}catch(n){t(e,n)}}function o(e){for(var t=e.return;null!==t;){if(i(t))return t;t=t.return}Nt(!1,"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.")}function i(e){return e.tag===Pa||e.tag===Ca||e.tag===ka}function a(e){var t=e;e:for(;!0;){for(;null===t.sibling;){if(null===t.return||i(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==Pa&&t.tag!==Ta;){if(t.effectTag&Sa)continue e;if(null===t.child||t.tag===ka)continue e;t.child.return=t,t=t.child}if(!(t.effectTag&Sa))return t.stateNode}}function u(e){var t=o(e),n=void 0,r=void 0;switch(t.tag){case Pa:n=t.stateNode,r=!1;break;case Ca:case ka:n=t.stateNode.containerInfo,r=!0;break;default:Nt(!1,"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.")}t.effectTag&Ia&&(y(n),t.effectTag&=~Ia);for(var i=a(e),u=e;!0;){if(u.tag===Pa||u.tag===Ta)i?r?k(n,u.stateNode,i):T(n,u.stateNode,i):r?P(n,u.stateNode):C(n,u.stateNode);else if(u.tag===ka);else if(null!==u.child){u.child.return=u,u=u.child;continue}if(u===e)return;for(;null===u.sibling;){if(null===u.return||u.return===e)return;u=u.return}u.sibling.return=u.return,u=u.sibling}}function l(e){for(var t=e;!0;)if(f(t),null===t.child||t.tag===ka){if(t===e)return;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function s(e){for(var t=e,n=!1,r=void 0,o=void 0;!0;){if(!n){var i=t.return;e:for(;!0;){switch(Nt(null!==i,"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue."),i.tag){case Pa:r=i.stateNode,o=!1;break e;case Ca:case ka:r=i.stateNode.containerInfo,o=!0;break e}i=i.return}n=!0}if(t.tag===Pa||t.tag===Ta)l(t),o?N(r,t.stateNode):x(r,t.stateNode);else if(t.tag===ka){if(r=t.stateNode.containerInfo,null!==t.child){t.child.return=t,t=t.child;continue}}else if(f(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)return;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return,t.tag===ka&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}function c(e){s(e),e.return=null,e.child=null,e.alternate&&(e.alternate.child=null,e.alternate.return=null)}function f(e){switch("function"==typeof Ra&&Ra(e),e.tag){case ba:r(e);var t=e.stateNode;return void("function"==typeof t.componentWillUnmount&&n(e,t));case Pa:return void r(e);case xa:return void l(e.stateNode);case ka:return void s(e)}}function d(e,t){switch(t.tag){case ba:return;case Pa:var n=t.stateNode;if(null!=n){var r=t.memoizedProps,o=null!==e?e.memoizedProps:r,i=t.type,a=t.updateQueue;t.updateQueue=null,null!==a&&m(n,a,i,o,r,t)}return;case Ta:Nt(null!==t.stateNode,"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");var u=t.stateNode,l=t.memoizedProps,s=null!==e?e.memoizedProps:l;return void b(u,s,l);case Ca:case ka:return;default:Nt(!1,"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}function p(e,t){switch(t.tag){case ba:var n=t.stateNode;if(t.effectTag&wa)if(null===e)n.componentDidMount();else{var r=e.memoizedProps,o=e.memoizedState;n.componentDidUpdate(r,o)}return void(t.effectTag&Ea&&null!==t.updateQueue&&Na(t,t.updateQueue,n));case Ca:var i=t.updateQueue;if(null!==i){var a=t.child&&t.child.stateNode;Na(t,i,a)}return;case Pa:var u=t.stateNode;if(null===e&&t.effectTag&wa){var l=t.type,s=t.memoizedProps;v(u,l,s,t)}return;case Ta:case ka:return;default:Nt(!1,"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}function h(e){var t=e.ref;if(null!==t){var n=e.stateNode;switch(e.tag){case Pa:t(R(n));break;default:t(n)}}}function g(e){var t=e.ref;null!==t&&t(null)}var v=e.commitMount,m=e.commitUpdate,y=e.resetTextContent,b=e.commitTextUpdate,C=e.appendChild,P=e.appendChildToContainer,T=e.insertBefore,k=e.insertInContainerBefore,x=e.removeChild,N=e.removeChildFromContainer,R=e.getPublicInstance;return{commitPlacement:u,commitDeletion:c,commitWork:d,commitLifeCycles:p,commitAttachRef:h,commitDetachRef:g}},Ha=vr.createCursor,Fa=vr.pop,Aa=vr.push,Da={},Ua=function(e){function t(e){return Nt(e!==Da,"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),e}function n(){return t(p.current)}function r(e,t){Aa(p,t,e);var n=c(t);Aa(d,e,e),Aa(f,n,e)}function o(e){Fa(f,e),Fa(d,e),Fa(p,e)}function i(){return t(f.current)}function a(e){var n=t(p.current),r=t(f.current),o=s(r,e.type,n);r!==o&&(Aa(d,e,e),Aa(f,o,e))}function u(e){d.current===e&&(Fa(f,e),Fa(d,e))}function l(){f.current=Da,p.current=Da}var s=e.getChildHostContext,c=e.getRootHostContext,f=Ha(Da),d=Ha(Da),p=Ha(Da);return{getHostContext:i,getRootHostContainer:n,popHostContainer:o,popHostContext:u,pushHostContainer:r,pushHostContext:a,resetHostContainer:l}},ja=Sn.HostComponent,Wa=Sn.HostText,La=Sn.HostRoot,Oa=Nn.Deletion,Ma=Nn.Placement,za=fo.createFiberFromHostInstanceForDeletion,Ya=function(e){function t(e){var t=e.stateNode.containerInfo;return T=g(t),P=e,k=!0,!0}function n(e,t){var n=za();n.stateNode=t,n.return=e,n.effectTag=Oa,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function r(e,t){t.effectTag|=Ma}function o(e,t){switch(e.tag){case ja:var n=e.type,r=e.pendingProps;return d(t,n,r);case Wa:var o=e.pendingProps;return p(t,o);default:return!1}}function i(e){if(k){var t=T;if(!t)return r(P,e),k=!1,void(P=e);if(!o(e,t)){if(!(t=h(t))||!o(e,t))return r(P,e),k=!1,void(P=e);n(P,T)}e.stateNode=t,P=e,T=g(t)}}function a(e,t){var n=e.stateNode,r=v(n,e.type,e.memoizedProps,t,e);return e.updateQueue=r,null!==r}function u(e){var t=e.stateNode;return m(t,e.memoizedProps,e)}function l(e){for(var t=e.return;null!==t&&t.tag!==ja&&t.tag!==La;)t=t.return;P=t}function s(e){if(e!==P)return!1;if(!k)return l(e),k=!0,!1;var t=e.type;if(e.tag!==ja||"head"!==t&&"body"!==t&&!f(t,e.memoizedProps))for(var r=T;r;)n(e,r),r=h(r);return l(e),T=P?h(e.stateNode):null,!0}function c(){P=null,T=null,k=!1}var f=e.shouldSetTextContent,d=e.canHydrateInstance,p=e.canHydrateTextInstance,h=e.getNextHydratableSibling,g=e.getFirstHydratableChild,v=e.hydrateInstance,m=e.hydrateTextInstance,y=e.didNotHydrateInstance,b=e.didNotFindHydratableInstance,C=e.didNotFindHydratableTextInstance;if(!(d&&p&&h&&g&&v&&m&&y&&b&&C))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){Nt(!1,"Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.")},prepareToHydrateHostTextInstance:function(){Nt(!1,"Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.")},popHydrationState:function(e){return!1}};var P=null,T=null,k=!1;return{enterHydrationState:t,resetHydrationState:c,tryToClaimNextHydratableInstance:i,prepareToHydrateHostInstance:a,prepareToHydrateHostTextInstance:u,popHydrationState:s}},Ba=Lr.popContextProvider,Qa=vr.reset,Xa=Po.getStackAddendumByWorkInProgressFiber,Va=Bt.logCapturedError,Ga=Vn.ReactCurrentOwner,$a=fo.createWorkInProgress,qa=fo.largerPriority,Ja=ya.onCommitRoot,Ka=Rn.NoWork,Za=Rn.SynchronousPriority,eu=Rn.TaskPriority,tu=Rn.HighPriority,nu=Rn.LowPriority,ru=Rn.OffscreenPriority,ou=Or.AsyncUpdates,iu=Nn.PerformedWork,au=Nn.Placement,uu=Nn.Update,lu=Nn.PlacementAndUpdate,su=Nn.Deletion,cu=Nn.ContentReset,fu=Nn.Callback,du=Nn.Err,pu=Nn.Ref,hu=Sn.HostRoot,gu=Sn.HostComponent,vu=Sn.HostPortal,mu=Sn.ClassComponent,yu=Mn.getUpdatePriority,bu=Lr,Cu=bu.resetContext,Pu=1,Tu=function(e){function t(){Qa(),Cu(),A()}function n(){for(;null!==ae&&ae.current.pendingWorkPriority===Ka;){ae.isScheduled=!1;var e=ae.nextScheduledRoot;if(ae.nextScheduledRoot=null,ae===ue)return ae=null,ue=null,re=Ka,null;ae=e}for(var n=ae,r=null,o=Ka;null!==n;)n.current.pendingWorkPriority!==Ka&&(o===Ka||o>n.current.pendingWorkPriority)&&(o=n.current.pendingWorkPriority,r=n),n=n.nextScheduledRoot;return null!==r?(re=o,t(),void(ne=$a(r.current,o))):(re=Ka,void(ne=null))}function r(){for(;null!==oe;){var t=oe.effectTag;if(t&cu&&e.resetTextContent(oe.stateNode),t&pu){var n=oe.alternate;null!==n&&X(n)}switch(t&~(fu|du|cu|pu|iu)){case au:M(oe),oe.effectTag&=~au;break;case lu:M(oe),oe.effectTag&=~au;var r=oe.alternate;Y(r,oe);break;case uu:var o=oe.alternate;Y(o,oe);break;case su:ge=!0,z(oe),ge=!1}oe=oe.nextEffect}}function o(){for(;null!==oe;){var e=oe.effectTag;if(e&(uu|fu)){var t=oe.alternate;B(t,oe)}e&pu&&Q(oe),e&du&&y(oe);var n=oe.nextEffect;oe.nextEffect=null,oe=n}}function i(e){he=!0,ie=null;var t=e.stateNode;Nt(t.current!==e,"Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue."),re!==Za&&re!==eu||me++,Ga.current=null;var i=void 0;for(e.effectTag>iu?null!==e.lastEffect?(e.lastEffect.nextEffect=e,i=e.firstEffect):i=e:i=e.firstEffect,$(),oe=i;null!==oe;){var a=!1,u=void 0;try{r()}catch(e){a=!0,u=e}a&&(Nt(null!==oe,"Should have next effect. This error is likely caused by a bug in React. Please file an issue."),g(oe,u),null!==oe&&(oe=oe.nextEffect))}for(q(),t.current=e,oe=i;null!==oe;){var l=!1,s=void 0;try{o()}catch(e){l=!0,s=e}l&&(Nt(null!==oe,"Should have next effect. This error is likely caused by a bug in React. Please file an issue."),g(oe,s),null!==oe&&(oe=oe.nextEffect))}he=!1,"function"==typeof Ja&&Ja(e.stateNode),fe&&(fe.forEach(x),fe=null),n()}function a(e,t){if(!(e.pendingWorkPriority!==Ka&&e.pendingWorkPriority>t)){for(var n=yu(e),r=e.child;null!==r;)n=qa(n,r.pendingWorkPriority),r=r.sibling;e.pendingWorkPriority=n}}function u(e){for(;!0;){var t=e.alternate,n=L(t,e,re),r=e.return,o=e.sibling;if(a(e,re),null!==n)return n;if(null!==r&&(null===r.firstEffect&&(r.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==r.lastEffect&&(r.lastEffect.nextEffect=e.firstEffect),r.lastEffect=e.lastEffect),e.effectTag>iu&&(null!==r.lastEffect?r.lastEffect.nextEffect=e:r.firstEffect=e,r.lastEffect=e)),null!==o)return o; +if(null===r)return ie=e,null;e=r}return null}function l(e){var t=e.alternate,n=U(t,e,re);return null===n&&(n=u(e)),Ga.current=null,n}function s(e){var t=e.alternate,n=j(t,e,re);return null===n&&(n=u(e)),Ga.current=null,n}function c(e){h(ru,e)}function f(){if(null!==se&&se.size>0&&re===eu)for(;null!==ne&&(null!==(ne=v(ne)?s(ne):l(ne))||(Nt(null!==ie,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),J=eu,i(ie),J=re,null!==se&&0!==se.size&&re===eu)););}function d(e,t){if(null!==ie?(J=eu,i(ie),f()):null===ne&&n(),!(re===Ka||re>e)){J=re;e:for(;;){if(re<=eu)for(;null!==ne&&!(null===(ne=l(ne))&&(Nt(null!==ie,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),J=eu,i(ie),J=re,f(),re===Ka||re>e||re>eu)););else if(null!==t)for(;null!==ne&&!Z;)if(t.timeRemaining()>Pu){if(null===(ne=l(ne)))if(Nt(null!==ie,"Should have a pending commit. This error is likely caused by a bug in React. Please file an issue."),t.timeRemaining()>Pu){if(J=eu,i(ie),J=re,f(),re===Ka||re>e||reeu&&!le&&(V(c),le=!0);var u=de;if(K=!1,Z=!1,pe=!1,de=null,se=null,ce=null,null!==u)throw u}function g(e,t){Ga.current=null;var n=null,r=!1,o=!1,i=null;if(e.tag===hu)n=e,m(e)&&(pe=!0);else for(var a=e.return;null!==a&&null===n;){if(a.tag===mu){var u=a.stateNode;"function"==typeof u.componentDidCatch&&(r=!0,i=zn(a),n=a,o=!0)}else a.tag===hu&&(n=a);if(m(a)){if(ge)return null;if(null!==fe&&(fe.has(a)||null!==a.alternate&&fe.has(a.alternate)))return null;n=null,o=!1}a=a.return}if(null!==n){null===ce&&(ce=new Set),ce.add(n);var l=Xa(e),s=zn(e);null===se&&(se=new Map);var c={componentName:s,componentStack:l,error:t,errorBoundary:r?n.stateNode:null,errorBoundaryFound:r,errorBoundaryName:i,willRetry:o};se.set(n,c);try{Va(c)}catch(e){console.error(e)}return he?(null===fe&&(fe=new Set),fe.add(n)):x(n),n}return null===de&&(de=t),null}function v(e){return null!==se&&(se.has(e)||null!==e.alternate&&se.has(e.alternate))}function m(e){return null!==ce&&(ce.has(e)||null!==e.alternate&&ce.has(e.alternate))}function y(e){var t=void 0;switch(null!==se&&(t=se.get(e),se.delete(e),null==t&&null!==e.alternate&&(e=e.alternate,t=se.get(e),se.delete(e))),Nt(null!=t,"No error for given unit of work. This error is likely caused by a bug in React. Please file an issue."),e.tag){case mu:var n=e.stateNode,r={componentStack:t.componentStack};return void n.componentDidCatch(t.error,r);case hu:return void(null===de&&(de=t.error));default:Nt(!1,"Invalid type of work. This error is likely caused by a bug in React. Please file an issue.")}}function b(e,t){for(var n=e;null!==n;){switch(n.tag){case mu:Ba(n);break;case gu:F(n);break;case hu:case vu:H(n)}if(n===t||n.alternate===t)break;n=n.return}}function C(e,t){t!==Ka&&(e.isScheduled||(e.isScheduled=!0,ue?(ue.nextScheduledRoot=e,ue=e):(ae=e,ue=e)))}function P(e,t){return T(e,t,!1)}function T(e,t,n){me>ve&&(pe=!0,Nt(!1,"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.")),!K&&t<=re&&(ne=null);for(var r=e,o=!0;null!==r&&o;){if(o=!1,(r.pendingWorkPriority===Ka||r.pendingWorkPriority>t)&&(o=!0,r.pendingWorkPriority=t),null!==r.alternate&&(r.alternate.pendingWorkPriority===Ka||r.alternate.pendingWorkPriority>t)&&(o=!0,r.alternate.pendingWorkPriority=t),null===r.return){if(r.tag!==hu)return;if(C(r.stateNode,t),!K)switch(t){case Za:te?h(Za,null):h(eu,null);break;case eu:Nt(ee,"Task updates can only be scheduled as a nested update or inside batchedUpdates.");break;default:le||(V(c),le=!0)}}r=r.return}}function k(e,t){var n=J;return n===Ka&&(n=!G||e.internalContextTag&ou||t?nu:Za),n===Za&&(K||ee)?eu:n}function x(e){T(e,eu,!0)}function N(e,t){var n=J;J=e;try{t()}finally{J=n}}function R(e,t){var n=ee;ee=!0;try{return e(t)}finally{ee=n,K||ee||h(eu,null)}}function S(e){var t=te,n=ee;te=ee,ee=!1;try{return e()}finally{ee=n,te=t}}function w(e){var t=ee,n=J;ee=!0,J=Za;try{return e()}finally{ee=t,J=n,Nt(!K,"flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering."),h(eu,null)}}function E(e){var t=J;J=nu;try{return e()}finally{J=t}}var I=Ua(e),_=Ya(e),H=I.popHostContainer,F=I.popHostContext,A=I.resetHostContainer,D=Gi(e,I,_,P,k),U=D.beginWork,j=D.beginFailedWork,W=da(e,I,_),L=W.completeWork,O=_a(e,g),M=O.commitPlacement,z=O.commitDeletion,Y=O.commitWork,B=O.commitLifeCycles,Q=O.commitAttachRef,X=O.commitDetachRef,V=e.scheduleDeferredCallback,G=e.useSyncScheduling,$=e.prepareForCommit,q=e.resetAfterCommit,J=Ka,K=!1,Z=!1,ee=!1,te=!1,ne=null,re=Ka,oe=null,ie=null,ae=null,ue=null,le=!1,se=null,ce=null,fe=null,de=null,pe=!1,he=!1,ge=!1,ve=1e3,me=0;return{scheduleUpdate:P,getPriorityContext:k,performWithPriority:N,batchedUpdates:R,unbatchedUpdates:S,flushSync:w,deferredUpdates:E}},ku=function(e){Nt(!1,"Missing injection for fiber getContextForSubtree")};fe._injectFiber=function(e){ku=e};var xu=fe,Nu=Mn.addTopLevelUpdate,Ru=Lr.findCurrentUnmaskedContext,Su=Lr.isContextProvider,wu=Lr.processChildContext,Eu=go.createFiberRoot,Iu=Sn.HostComponent,_u=lr.findCurrentHostFiber,Hu=lr.findCurrentHostFiberWithNoPortals;xu._injectFiber(function(e){var t=Ru(e);return Su(e)?wu(e,t,!1):t});var Fu=function(e){function t(e,t,n){var r=xn.enableAsyncSubtreeAPI&&null!=t&&null!=t.type&&null!=t.type.prototype&&!0===t.type.prototype.unstable_isAsyncReactComponent,a=i(e,r),u={element:t};n=void 0===n?null:n,Nu(e,u,n,a),o(e,a)}var n=e.getPublicInstance,r=Tu(e),o=r.scheduleUpdate,i=r.getPriorityContext,a=r.performWithPriority,u=r.batchedUpdates,l=r.unbatchedUpdates,s=r.flushSync,c=r.deferredUpdates;return{createContainer:function(e){return Eu(e)},updateContainer:function(e,n,r,o){var i=n.current,a=xu(r);null===n.context?n.context=a:n.pendingContext=a,t(i,e,o)},performWithPriority:a,batchedUpdates:u,unbatchedUpdates:l,deferredUpdates:c,flushSync:s,getPublicRootInstance:function(e){var t=e.current;if(!t.child)return null;switch(t.child.tag){case Iu:return n(t.child.stateNode);default:return t.child.stateNode}},findHostInstance:function(e){var t=_u(e);return null===t?null:t.stateNode},findHostInstanceWithNoPortals:function(e){var t=Hu(e);return null===t?null:t.stateNode}}},Au={},Du=1,Uu={},ju=function(){function e(){de(this,e)}return e.register=function(e){var t=++Du;return Au[t]=e,t},e.getByID=function(e){if(!e)return Uu;var t=Au[e];return t||(console.warn("Invalid style with id `"+e+"`. Skipping ..."),Uu)},e}(),Wu=ju,Lu={},Ou=null,Mu=0,zu={create:function(e,t){return Pe(null,e,t)},diff:function(e,t,n){return Ce(null,e,t,n)}},Yu=zu,Bu={mountSafeCallback:ke,throwOnStylesProp:xe,warnForStyleProps:Ne},Qu=Bu.mountSafeCallback,Xu=function(){function e(t,n){Re(this,e),this._nativeTag=t,this._children=[],this.viewConfig=n}return e.prototype.blur=function(){Ht.blurTextInput(this._nativeTag)},e.prototype.focus=function(){Ht.focusTextInput(this._nativeTag)},e.prototype.measure=function(e){Ft.measure(this._nativeTag,Qu(this,e))},e.prototype.measureInWindow=function(e){Ft.measureInWindow(this._nativeTag,Qu(this,e))},e.prototype.measureLayout=function(e,t,n){Ft.measureLayout(this._nativeTag,e,Qu(this,n),Qu(this,t))},e.prototype.setNativeProps=function(e){var t=Yu.create(e,this.viewConfig.validAttributes);Ft.updateView(this._nativeTag,this.viewConfig.uiViewClassName,t)},e}(),Vu=Xu,Gu=1,$u={tagsStartAt:Gu,tagCount:Gu,allocateTag:function(){for(;this.reactTagIsNativeTopRootID($u.tagCount);)$u.tagCount++;var e=$u.tagCount;return $u.tagCount++,e},assertRootTag:function(e){Nt(this.reactTagIsNativeTopRootID(e),"Expect a native root tag, instead got %s",e)},reactTagIsNativeTopRootID:function(e){return e%10==1}},qu=$u,Ju=new Map,Ku={register:function(e){var t=e.uiViewClassName;return Nt(!Ju.has(t),"Tried to register two views with the same name %s",t),Ju.set(t,e),t},get:function(e){var t=Ju.get(e);return Nt(t,"View config not found for name %s",e),t}},Zu=Ku,el=Pn.precacheFiberNode,tl=Pn.uncacheFiberNode,nl=Pn.updateFiberProps,rl=Fu({appendChild:function(e,t){var n="number"==typeof t?t:t._nativeTag,r=e._children,o=r.indexOf(t);o>=0?(r.splice(o,1),r.push(t),Ft.manageChildren(e._nativeTag,[o],[r.length-1],[],[],[])):(r.push(t),Ft.manageChildren(e._nativeTag,[],[],[n],[r.length-1],[]))},appendChildToContainer:function(e,t){var n="number"==typeof t?t:t._nativeTag;Ft.setChildren(e,[n])},appendInitialChild:function(e,t){e._children.push(t)},commitTextUpdate:function(e,t,n){Ft.updateView(e,"RCTRawText",{text:n})},commitMount:function(e,t,n,r){},commitUpdate:function(e,t,n,r,o,i){var a=e.viewConfig;nl(e._nativeTag,o);var u=Yu.diff(r,o,a.validAttributes);Ft.updateView(e._nativeTag,a.uiViewClassName,u)},createInstance:function(e,t,n,r,o){var i=qu.allocateTag(),a=Zu.get(e),u=Yu.create(t,a.validAttributes);Ft.createView(i,a.uiViewClassName,n,u);var l=new Vu(i,a);return el(o,i),nl(i,t),l},createTextInstance:function(e,t,n,r){var o=qu.allocateTag();return Ft.createView(o,"RCTRawText",t,{text:e}),el(r,o),o},finalizeInitialChildren:function(e,t,n,r){if(0===e._children.length)return!1;var o=e._children.map(function(e){return"number"==typeof e?e:e._nativeTag});return Ft.setChildren(e._nativeTag,o),!1},getRootHostContext:function(){return St},getChildHostContext:function(){return St},getPublicInstance:function(e){return e},insertBefore:function(e,t,n){var r=e._children,o=r.indexOf(t);if(o>=0){r.splice(o,1);var i=r.indexOf(n);r.splice(i,0,t),Ft.manageChildren(e._nativeTag,[o],[i],[],[],[])}else{var a=r.indexOf(n);r.splice(a,0,t);var u="number"==typeof t?t:t._nativeTag;Ft.manageChildren(e._nativeTag,[],[],[u],[a],[])}},insertInContainerBefore:function(e,t,n){Nt("number"!=typeof e,"Container does not support insertBefore operation")},prepareForCommit:function(){},prepareUpdate:function(e,t,n,r,o,i){return St},removeChild:function(e,t){Se(t);var n=e._children,r=n.indexOf(t);n.splice(r,1),Ft.manageChildren(e._nativeTag,[],[],[],[],[r])},removeChildFromContainer:function(e,t){Se(t),Ft.manageChildren(e,[],[],[],[],[0])},resetAfterCommit:function(){},resetTextContent:function(e){},shouldDeprioritizeSubtree:function(e,t){return!1},scheduleDeferredCallback:Tn.requestIdleCallback,shouldSetTextContent:function(e,t){return!1},useSyncScheduling:!0}),ol=rl,il=void 0;il=function(){Nt(!1,"getInspectorDataForViewTag() is not available in production")};var al={getInspectorDataForViewTag:il},ul="16.0.0-beta.5",ll=t(40),sl=ll.useFiber?function(e){return ol.findHostInstance(e)}:function(e){return e},cl=we,fl=function(e){var t=cl(e);return null==t||"number"==typeof t?t:t._nativeTag},dl=null,pl={},hl={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){Nt(!dl,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."),dl=Array.prototype.slice.call(e),Ee()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];pl.hasOwnProperty(n)&&pl[n]===r||(Nt(!pl[n],"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",n),pl[n]=r,t=!0)}t&&Ee()}},gl=hl,vl=He,ml=Fe,yl=null,bl=function(e,t){e&&(Jt.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},Cl=function(e){return bl(e,!0)},Pl=function(e){return bl(e,!1)},Tl={injection:{injectEventPluginOrder:gl.injectEventPluginOrder,injectEventPluginsByName:gl.injectEventPluginsByName},getListener:function(e,t){var n;if("number"==typeof e.tag){var r=e.stateNode;if(!r)return null;var o=Jt.getFiberCurrentPropsFromNode(r);if(!o)return null;if(n=o[t],De(t,e.type,o))return null}else{var i=e._currentElement;if("string"==typeof i||"number"==typeof i)return null;if(!e._rootNodeID)return null;var a=i.props;if(n=a[t],De(t,i.type,a))return null}return Nt(!n||"function"==typeof n,"Expected %s listener to be a function, instead got type %s",t,typeof n),n},extractEvents:function(e,t,n,r){for(var o,i=gl.plugins,a=0;a=0))return console.error("Ended a touch event which was not counted in `trackedTouchCount`."),null;gs-=1}as.recordTouchTrack(e,n);var o=gt(e,t,n)?ht(e,t,n,r):null,i=hs&&ls(e),a=hs&&ss(e),u=hs&&cs(e),l=i?ys.responderStart:a?ys.responderMove:u?ys.responderEnd:null;if(l){var s=Kl.getPooled(l,hs,n,r);s.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(s),o=us(o,s)}var c=hs&&"topTouchCancel"===e,f=hs&&!c&&cs(e)&&vt(n),d=c?ys.responderTerminate:f?ys.responderRelease:null;if(d){var p=Kl.getPooled(d,hs,n,r);p.touchHistory=as.touchHistory,wl.accumulateDirectDispatches(p),o=us(o,p),ms(null)}var h=as.touchHistory.numberActiveTouches;return bs.GlobalInteractionHandler&&h!==vs&&bs.GlobalInteractionHandler.onChange(h),vs=h,o},GlobalResponderHandler:null,GlobalInteractionHandler:null,injection:{injectGlobalResponderHandler:function(e){bs.GlobalResponderHandler=e},injectGlobalInteractionHandler:function(e){bs.GlobalInteractionHandler=e}}},Cs=bs;Wt.register(Xl),kl.injection.injectEventPluginOrder(Gl),Jt.injection.injectComponentTree(Pn),Cs.injection.injectGlobalResponderHandler(ql),kl.injection.injectEventPluginsByName({ResponderEventPlugin:Cs,ReactNativeBridgeEventPlugin:Ll});var Ps=null,Ts=t(40),ks=Bu.mountSafeCallback,xs=Ts.useFiber?fl:Ps,Ns=function(e){function t(){return mt(this,t),yt(this,e.apply(this,arguments))}return bt(t,e),t.prototype.blur=function(){Ht.blurTextInput(xs(this))},t.prototype.focus=function(){Ht.focusTextInput(xs(this))},t.prototype.measure=function(e){Ft.measure(xs(this),ks(this,e))},t.prototype.measureInWindow=function(e){Ft.measureInWindow(xs(this),ks(this,e))},t.prototype.measureLayout=function(e,t,n){Ft.measureLayout(xs(this),e,ks(this,n),ks(this,t))},t.prototype.setNativeProps=function(e){Rs(this,e)},t}(wt.Component),Rs=void 0;Rs=Ts.useFiber?Ct:Pt;var Ss=Ns,ws=t(40),Es=Bu.mountSafeCallback,Is=ws.useFiber?fl:Ps,_s={measure:function(e){Ft.measure(Is(this),Es(this,e))},measureInWindow:function(e){Ft.measureInWindow(Is(this),Es(this,e))},measureLayout:function(e,t,n){Ft.measureLayout(Is(this),e,Es(this,n),Es(this,t))},setNativeProps:function(e){Hs(this,e)},focus:function(){Ht.focusTextInput(Is(this))},blur:function(){Ht.blurTextInput(Is(this))}},Hs=void 0;Hs=ws.useFiber?Tt:kt;var Fs=_s,As={centroidDimension:function(e,t,n,r){var o=e.touchBank,i=0,a=0,u=1===e.numberActiveTouches?e.touchBank[e.indexOfSingleActiveTouch]:null;if(null!==u)u.touchActive&&u.currentTimeStamp>t&&(i+=r&&n?u.currentPageX:r&&!n?u.currentPageY:!r&&n?u.previousPageX:u.previousPageY,a=1);else for(var l=0;l=t){var c;c=r&&n?s.currentPageX:r&&!n?s.currentPageY:!r&&n?s.previousPageX:s.previousPageY,i+=c,a++}}return a>0?i/a:As.noCentroid},currentCentroidXOfTouchesChangedAfter:function(e,t){return As.centroidDimension(e,t,!0,!0)},currentCentroidYOfTouchesChangedAfter:function(e,t){return As.centroidDimension(e,t,!1,!0)},previousCentroidXOfTouchesChangedAfter:function(e,t){return As.centroidDimension(e,t,!0,!1)},previousCentroidYOfTouchesChangedAfter:function(e,t){return As.centroidDimension(e,t,!1,!1)},currentCentroidX:function(e){return As.centroidDimension(e,0,!0,!0)},currentCentroidY:function(e){return As.centroidDimension(e,0,!1,!0)},noCentroid:-1},Ds=As,Us=function(e){return Zu.register(e)},js=Us,Ws=t(40),Ls=Ws.useFiber?js:Ps,Os=t(40),Ms=Os.useFiber?fl:Ps,zs=xt,Ys=ya.injectInternals;cn.injection.injectFiberBatchedUpdates(ol.batchedUpdates);var Bs=new Map;Bt.injection.injectDialog(dn.showDialog);var Qs={NativeComponent:Ss,findNodeHandle:fl,render:function(e,t,n){var r=Bs.get(t);return r||(r=ol.createContainer(t),Bs.set(t,r)),ol.updateContainer(e,r,null,n),ol.getPublicRootInstance(r)},unmountComponentAtNode:function(e){var t=Bs.get(e);t&&ol.updateContainer(null,t,null,function(){Bs.delete(e)})},unmountComponentAtNodeAndRemoveContainer:function(e){Qs.unmountComponentAtNode(e),Ft.removeRootView(e)},unstable_createPortal:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return mn.createPortal(e,t,null,n)},unstable_batchedUpdates:cn.batchedUpdates,flushSync:ol.flushSync,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{NativeMethodsMixin:Fs,ReactGlobalSharedState:Vn,ReactNativeComponentTree:Pn,ReactNativePropRegistry:Wu,TouchHistoryMath:Ds,createReactNativeComponentClass:Ls,takeSnapshot:zs}};Ys({findFiberByHostInstance:Pn.getClosestInstanceFromNode,findHostInstanceByFiber:ol.findHostInstance,getInspectorDataForViewTag:al.getInspectorDataForViewTag,bundleType:0,version:ul});var Xs=Qs;n.exports=Xs},41); +__d(function(r,o,e,n){"use strict";function s(r,e){var n=o(15),s=n.ExceptionsManager;if(s){var i=o(43),c=i(r),l=++a;e?s.reportFatalException(r.message,c,l):s.reportSoftException(r.message,c,l)}}function i(r,o){r.message||(r=new Error(r)),console._errorOriginal?console._errorOriginal(r.message):console.error(r.message),s(r,o)}function c(){if(console._errorOriginal.apply(console,arguments),console.reportErrorsAsExceptions)if(arguments[0]&&arguments[0].stack)s(arguments[0],!1);else{var r=o(21),e=Array.prototype.map.call(arguments,r).join(", ");if('"Warning: '===e.slice(0,10))return;var n=new Error("console.error: "+e);n.framesToPop=1,s(n,!1)}}function l(){console._errorOriginal||(console._errorOriginal=console.error.bind(console),console.error=c,void 0===console.reportErrorsAsExceptions&&(console.reportErrorsAsExceptions=!0))}var a=0;e.exports={handleException:i,installConsoleErrorReporter:l}},42); +__d(function(r,t,s,a){"use strict";function e(r){if(!r||!r.stack)return[];for(var s=t(44),a=Array.isArray(r.stack)?r.stack:s.parse(r.stack),e="number"==typeof r.framesToPop?r.framesToPop:0;e--;)a.shift();return a}s.exports=e},43); +__d(function(n,o,t,_){t.exports=o(45)},44); +__d(function(e,n,t,l){var o="",i={parse:function(e){for(var n,t,l=/^\s*at (?:(?:(?:Anonymous function)?|((?:\[object object\])?\S+(?: \[as \S+\])?)) )?\(?((?:file|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i,i=/^(?:\s*([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?\S+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=e.split("\n"),c=[],m=0,f=s.length;m1){for(var s=Array(f),y=0;y1){for(var m=Array(y),d=0;d=n?(this._iteratedObject=void 0,t(void 0,!0)):(this._nextIndex=s+1,u===i?t(s,!1):u===o?t(r[s],!1):u===a?t([s,r[s]],!1):void 0)}},{key:"@@iterator",value:function(){return this}}]),e}(),r=function(){function e(t){if(babelHelpers.classCallCheck(this,e),"string"!=typeof t)throw new TypeError("Object is not a string");this._iteratedString=t,this._nextIndex=0}return babelHelpers.createClass(e,[{key:"next",value:function(){if(!this instanceof e)throw new TypeError("Object is not a StringIterator");if(null==this._iteratedString)return t(void 0,!0);var r=this._nextIndex,n=this._iteratedString,i=n.length;if(r>=i)return this._iteratedString=void 0,t(void 0,!0);var o,a=n.charCodeAt(r);if(a<55296||a>56319||r+1===i)o=n[r];else{var s=n.charCodeAt(r+1);o=s<56320||s>57343?n[r]:n[r]+n[r+1]}return this._nextIndex=r+o.length,t(o,!1)}},{key:"@@iterator",value:function(){return this}}]),e}();return function(t,n){return"string"==typeof t?new r(t):Array.isArray(t)?new e(t,n||o):t[s]()}}()}();babelHelpers.extends(u,{KIND_KEY:i,KIND_VALUE:o,KIND_KEY_VAL:a,ITERATOR_SYMBOL:s}),r.exports=u},65); +__d(function(e,t,n,s){"use strict";var i=t(62),r=t(61),a=t(65);n.exports=function(e){function t(e){e._map=new i,e.size=e._map.size}if(!r("Set"))return e.Set;var n=function(){function e(n){if(babelHelpers.classCallCheck(this,e),null==this||"object"!=typeof this&&"function"!=typeof this)throw new TypeError("Wrong set object type.");if(t(this),null!=n)for(var s,i=a(n);!(s=i.next()).done;)this.add(s.value)}return babelHelpers.createClass(e,[{key:"add",value:function(e){return this._map.set(e,e),this.size=this._map.size,this}},{key:"clear",value:function(){t(this)}},{key:"delete",value:function(e){var t=this._map.delete(e);return this.size=this._map.size,t}},{key:"entries",value:function(){return this._map.entries()}},{key:"forEach",value:function(e){for(var t,n=arguments[1],s=this._map.keys();!(t=s.next()).done;)e.call(n,t.value,t.value,this)}},{key:"has",value:function(e){return this._map.has(e)}},{key:"values",value:function(){return this._map.values()}}]),e}();return n.prototype[a.ITERATOR_SYMBOL]=n.prototype.values,n.prototype.keys=n.prototype.values,n}(Function("return this")())},66); +__d(function(t,r,s,c){"use strict";var e=r(68);s.exports=e},67); +__d(function(t,n,r,e){"use strict";var i=n(69);n(71),i.prototype.finally=function(t){return this.then(t,t)},r.exports=i},68); +__d(function(n,t,e,r){"use strict";function o(n){var t=new f(f._61);return t._65=1,t._55=n,t}var f=t(70);e.exports=f;var i=o(!0),u=o(!1),c=o(null),a=o(void 0),l=o(0),h=o("");f.resolve=function(n){if(n instanceof f)return n;if(null===n)return c;if(void 0===n)return a;if(n===!0)return i;if(n===!1)return u;if(0===n)return l;if(""===n)return h;if("object"==typeof n||"function"==typeof n)try{var t=n.then;if("function"==typeof t)return new f(t.bind(n))}catch(n){return new f(function(t,e){e(n)})}return o(n)},f.all=function(n){var t=Array.prototype.slice.call(n);return new f(function(n,e){function r(i,u){if(u&&("object"==typeof u||"function"==typeof u)){if(u instanceof f&&u.then===f.prototype.then){for(;3===u._65;)u=u._55;return 1===u._65?r(i,u._55):(2===u._65&&e(u._55),void u.then(function(n){r(i,n)},e))}var c=u.then;if("function"==typeof c){var a=new f(c.bind(u));return void a.then(function(n){r(i,n)},e)}}t[i]=u,0===--o&&n(t)}if(0===t.length)return n([]);for(var o=t.length,i=0;i=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var a=d.call(o,"catchLoc"),c=d.call(o,"finallyLoc");if(a&&c){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&d.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),h(e),G}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;h(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,e){return this.delegate={iterator:y(t),resultName:r,nextLoc:e},G}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)},72); +__d(function(e,t,s,r){"use strict";var i=t(74),n=t(78),o=t(83),a=t(13),h=t(27),p=0,d=1,u=2,l=3,_=4,c={arraybuffer:"function"==typeof e.ArrayBuffer,blob:"function"==typeof e.Blob,document:!1,json:!0,text:!0,"":!0},y=["abort","error","load","loadstart","progress","timeout","loadend"],b=y.concat("readystatechange"),v=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),t}(i.apply(void 0,y)),f=function(t){function s(){babelHelpers.classCallCheck(this,s);var e=babelHelpers.possibleConstructorReturn(this,(s.__proto__||Object.getPrototypeOf(s)).call(this));return e.UNSENT=p,e.OPENED=d,e.HEADERS_RECEIVED=u,e.LOADING=l,e.DONE=_,e.readyState=p,e.status=0,e.timeout=0,e.withCredentials=!0,e.upload=new v,e._aborted=!1,e._hasError=!1,e._method=null,e._response="",e._url=null,e._timedOut=!1,e._trackingName="unknown",e._incrementalEvents=!1,e._reset(),e}return babelHelpers.inherits(s,t),babelHelpers.createClass(s,null,[{key:"setInterceptor",value:function(e){s._interceptor=e}}]),babelHelpers.createClass(s,[{key:"_reset",value:function(){this.readyState=this.UNSENT,this.responseHeaders=void 0,this.status=0,delete this.responseURL,this._requestId=null,this._cachedResponse=void 0,this._hasError=!1,this._headers={},this._response="",this._responseType="",this._sent=!1,this._lowerCaseResponseHeaders={},this._clearSubscriptions(),this._timedOut=!1}},{key:"__didCreateRequest",value:function(e){this._requestId=e,s._interceptor&&s._interceptor.requestSent(e,this._url||"",this._method||"GET",this._headers)}},{key:"__didUploadProgress",value:function(e,t,s){e===this._requestId&&this.upload.dispatchEvent({type:"progress",lengthComputable:!0,loaded:t,total:s})}},{key:"__didReceiveResponse",value:function(e,t,r,i){e===this._requestId&&(this.status=t,this.setResponseHeaders(r),this.setReadyState(this.HEADERS_RECEIVED),i||""===i?this.responseURL=i:delete this.responseURL,s._interceptor&&s._interceptor.responseReceived(e,i||this._url||"",t,r||{}))}},{key:"__didReceiveData",value:function(e,t){e===this._requestId&&(this._response=t,this._cachedResponse=void 0,this.setReadyState(this.LOADING),s._interceptor&&s._interceptor.dataReceived(e,t))}},{key:"__didReceiveIncrementalData",value:function(e,t,r,i){e===this._requestId&&(this._response?this._response+=t:this._response=t,s._interceptor&&s._interceptor.dataReceived(e,t),this.setReadyState(this.LOADING),this.__didReceiveDataProgress(e,r,i))}},{key:"__didReceiveDataProgress",value:function(e,t,s){e===this._requestId&&this.dispatchEvent({type:"progress",lengthComputable:s>=0,loaded:t,total:s})}},{key:"__didCompleteResponse",value:function(e,t,r){e===this._requestId&&(t&&(""!==this._responseType&&"text"!==this._responseType||(this._response=t),this._hasError=!0,r&&(this._timedOut=!0)),this._clearSubscriptions(),this._requestId=null,this.setReadyState(this.DONE),t?s._interceptor&&s._interceptor.loadingFailed(e,t):s._interceptor&&s._interceptor.loadingFinished(e,this._response.length))}},{key:"_clearSubscriptions",value:function(){(this._subscriptions||[]).forEach(function(e){e&&e.remove()}),this._subscriptions=[]}},{key:"getAllResponseHeaders",value:function(){if(!this.responseHeaders)return null;var e=this.responseHeaders||{};return Object.keys(e).map(function(t){return t+": "+e[t]}).join("\r\n")}},{key:"getResponseHeader",value:function(e){var t=this._lowerCaseResponseHeaders[e.toLowerCase()];return void 0!==t?t:null}},{key:"setRequestHeader",value:function(e,t){if(this.readyState!==this.OPENED)throw new Error("Request has not been opened");this._headers[e.toLowerCase()]=String(t)}},{key:"setTrackingName",value:function(e){return this._trackingName=e,this}},{key:"open",value:function(e,t,s){if(this.readyState!==this.UNSENT)throw new Error("Cannot open, already sending");if(void 0!==s&&!s)throw new Error("Synchronous http requests are not supported");if(!t)throw new Error("Cannot load an empty url");this._method=e.toUpperCase(),this._url=t,this._aborted=!1,this.setReadyState(this.OPENED)}},{key:"send",value:function(e){var t=this;if(this.readyState!==this.OPENED)throw new Error("Request has not been opened");if(this._sent)throw new Error("Request has already been sent");this._sent=!0;var s=this._incrementalEvents||!!this.onreadystatechange||!!this.onprogress;this._subscriptions.push(n.addListener("didSendNetworkData",function(e){return t.__didUploadProgress.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener("didReceiveNetworkResponse",function(e){return t.__didReceiveResponse.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener("didReceiveNetworkData",function(e){return t.__didReceiveData.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener("didReceiveNetworkIncrementalData",function(e){return t.__didReceiveIncrementalData.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener("didReceiveNetworkDataProgress",function(e){return t.__didReceiveDataProgress.apply(t,babelHelpers.toConsumableArray(e))})),this._subscriptions.push(n.addListener("didCompleteNetworkResponse",function(e){return t.__didCompleteResponse.apply(t,babelHelpers.toConsumableArray(e))}));var r="text";"arraybuffer"!==this._responseType&&"blob"!==this._responseType||(r="base64"),a(this._method,"Request method needs to be defined."),a(this._url,"Request URL needs to be defined."),n.sendRequest(this._method,this._trackingName,this._url,this._headers,e,r,s,this.timeout,this.__didCreateRequest.bind(this),this.withCredentials)}},{key:"abort",value:function(){this._aborted=!0,this._requestId&&n.abortRequest(this._requestId),this.readyState===this.UNSENT||this.readyState===this.OPENED&&!this._sent||this.readyState===this.DONE||(this._reset(),this.setReadyState(this.DONE)),this._reset()}},{key:"setResponseHeaders",value:function(e){this.responseHeaders=e||null;var t=e||{};this._lowerCaseResponseHeaders=Object.keys(t).reduce(function(e,s){return e[s.toLowerCase()]=t[s],e},{})}},{key:"setReadyState",value:function(e){this.readyState=e,this.dispatchEvent({type:"readystatechange"}),e===this.DONE&&(this._aborted?this.dispatchEvent({type:"abort"}):this._hasError?this._timedOut?this.dispatchEvent({type:"timeout"}):this.dispatchEvent({type:"error"}):this.dispatchEvent({type:"load"}),this.dispatchEvent({type:"loadend"}))}},{key:"addEventListener",value:function(e,t){"readystatechange"!==e&&"progress"!==e||(this._incrementalEvents=!0),babelHelpers.get(s.prototype.__proto__||Object.getPrototypeOf(s.prototype),"addEventListener",this).call(this,e,t)}},{key:"responseType",get:function(){return this._responseType},set:function(e){if(this._sent)throw new Error("Failed to set the 'responseType' property on 'XMLHttpRequest': The response type cannot be set after the request has been sent.");return c.hasOwnProperty(e)?(a(c[e]||"document"===e,"The provided value '"+e+"' is unsupported in this environment."),void(this._responseType=e)):void h(!1,"The provided value '"+e+"' is not a valid 'responseType'.")}},{key:"responseText",get:function(){if(""!==this._responseType&&"text"!==this._responseType)throw new Error("The 'responseText' property is only available if 'responseType' "+("is set to '' or 'text', but it is '"+this._responseType+"'."));return this.readyState0){for(var t=Array(arguments.length),n=0;n0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===r[t-2]?2:"="===r[t-1]?1:0}function a(r){return 3*r.length/4-o(r)}function h(r){var t,n,e,a,h,c=r.length;a=o(r),h=new f(3*c/4-a),n=a>0?c-4:c;var u=0;for(t=0;t>16&255,h[u++]=e>>8&255,h[u++]=255&e;return 2===a?(e=d[r.charCodeAt(t)]<<2|d[r.charCodeAt(t+1)]>>4,h[u++]=255&e):1===a&&(e=d[r.charCodeAt(t)]<<10|d[r.charCodeAt(t+1)]<<4|d[r.charCodeAt(t+2)]>>2,h[u++]=e>>8&255,h[u++]=255&e),h}function c(r){return A[r>>18&63]+A[r>>12&63]+A[r>>6&63]+A[63&r]}function u(r,t,n){for(var e,o=[],a=t;ai?i:c+h));return 1===e?(t=r[n-1],o+=A[t>>2],o+=A[t<<4&63],o+="=="):2===e&&(t=(r[n-2]<<8)+r[n-1],o+=A[t>>10],o+=A[t>>4&63],o+=A[t<<2&63],o+="="),a.push(o),a.join("")}e.byteLength=a,e.toByteArray=h,e.fromByteArray=i;for(var A=[],d=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,g=C.length;y-1?e:t}function c(t,e){e=e||{};var r=e.body;if("string"==typeof t)this.url=t;else{if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new n(t.headers)),this.method=t.method,this.mode=t.mode,r||null==t._bodyInit||(r=t._bodyInit,t.bodyUsed=!0)}if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new n(e.headers)),this.method=y(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function l(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),o=r.shift().replace(/\+/g," "),n=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(o),decodeURIComponent(n))}}),e}function p(t){var e=new n;return t.split("\r\n").forEach(function(t){var r=t.split(":"),o=r.shift().trim();if(o){var n=r.join(":").trim();e.append(o,n)}}),e}function b(t,e){e||(e={}),this.type="default",this.status="status"in e?e.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new n(e.headers),this.url=e.url||"",this._initBody(t)}if(!t.fetch){var m={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(m.arrayBuffer)var w=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],v=function(t){return t&&DataView.prototype.isPrototypeOf(t)},_=ArrayBuffer.isView||function(t){return t&&w.indexOf(Object.prototype.toString.call(t))>-1};n.prototype.append=function(t,o){t=e(t),o=r(o);var n=this.map[t];n||(n=[],this.map[t]=n),n.push(o)},n.prototype.delete=function(t){delete this.map[e(t)]},n.prototype.get=function(t){var r=this.map[e(t)];return r?r[0]:null},n.prototype.getAll=function(t){return this.map[e(t)]||[]},n.prototype.has=function(t){return this.map.hasOwnProperty(e(t))},n.prototype.set=function(t,o){this.map[e(t)]=[r(o)]},n.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(r){this.map[r].forEach(function(o){t.call(e,o,r,this)},this)},this)},n.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),o(t)},n.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),o(t)},n.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),o(t)},m.iterable&&(n.prototype["function"==typeof Symbol?Symbol.iterator:"@@iterator"]=n.prototype.entries);var B=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];c.prototype.clone=function(){return new c(this,{body:this._bodyInit})},d.call(c.prototype),d.call(b.prototype),b.prototype.clone=function(){return new b(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new n(this.headers),url:this.url})},b.error=function(){var t=new b(null,{status:0,statusText:""});return t.type="error",t};var A=[301,302,303,307,308];b.redirect=function(t,e){if(A.indexOf(e)===-1)throw new RangeError("Invalid status code");return new b(null,{status:e,headers:{location:t}})},t.Headers=n,t.Request=c,t.Response=b,t.fetch=function(t,e){return new Promise(function(r,o){var n=new c(t,e),i=new XMLHttpRequest;i.onload=function(){var t={status:i.status,statusText:i.statusText,headers:p(i.getAllResponseHeaders()||"")};t.url="responseURL"in i?i.responseURL:t.headers.get("X-Request-URL");var e="response"in i?i.response:i.responseText;r(new b(e,t))},i.onerror=function(){o(new TypeError("Network request failed"))},i.ontimeout=function(){o(new TypeError("Network request failed"))},i.open(n.method,n.url,!0),"include"===n.credentials&&(i.withCredentials=!0),"responseType"in i&&m.blob&&(i.responseType="blob"),n.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),i.send("undefined"==typeof n._bodyInit?null:n._bodyInit)})},t.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},86); +__d(function(e,t,s,r){"use strict";var i=t(88),o=t(74),n=t(80),a=t(15),c=(t(23),t(94)),d=t(83),l=t(82),u=t(13),b=a.WebSocketModule,h=0,p=1,y=2,f=3,_=1e3,v=["close","error","message","open"],E=0,k=function(e){function t(e,s,r){babelHelpers.classCallCheck(this,t);var i=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));i.CONNECTING=h,i.OPEN=p,i.CLOSING=y,i.CLOSED=f,i.readyState=h,"string"==typeof s&&(s=[s]);var o=r||{},a=o.headers,c=void 0===a?{}:a,d=babelHelpers.objectWithoutProperties(o,["headers"]);if(d&&"string"==typeof d.origin&&(console.warn("Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead."),c.origin=d.origin,delete d.origin),Object.keys(d).length>0&&console.warn("Unrecognized WebSocket connection option(s) `"+Object.keys(d).join("`, `")+"`. Did you mean to put these under `headers`?"),Array.isArray(s)||(s=null),!t.isAvailable)throw new Error("Cannot initialize WebSocket module. Native module WebSocketModule is missing.");return i._eventEmitter=new n(b),i._socketId=E++,i._registerEvents(),b.connect(e,s,{headers:c},i._socketId),i}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"close",value:function(e,t){this.readyState!==this.CLOSING&&this.readyState!==this.CLOSED&&(this.readyState=this.CLOSING,this._close(e,t))}},{key:"send",value:function(e){if(this.readyState===this.CONNECTING)throw new Error("INVALID_STATE_ERR");if(e instanceof i){var t=a.BlobModule;return u(t,"Native module BlobModule is required for blob support"),void t.sendBlob(e,this._socketId)}if("string"==typeof e)return void b.send(e,this._socketId);if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return void b.sendBinary(l(e),this._socketId);throw new Error("Unsupported data type")}},{key:"ping",value:function(){if(this.readyState===this.CONNECTING)throw new Error("INVALID_STATE_ERR");b.ping(this._socketId)}},{key:"_close",value:function(e,t){var s="number"==typeof e?e:_,r="string"==typeof t?t:"";b.close(s,r,this._socketId)}},{key:"_unregisterEvents",value:function(){this._subscriptions.forEach(function(e){return e.remove()}),this._subscriptions=[]}},{key:"_registerEvents",value:function(){var e=this;this._subscriptions=[this._eventEmitter.addListener("websocketMessage",function(t){if(t.id===e._socketId){var s=t.data;switch(t.type){case"binary":s=d.toByteArray(t.data).buffer;break;case"blob":s=i.create(t.data)}e.dispatchEvent(new c("message",{data:s}))}}),this._eventEmitter.addListener("websocketOpen",function(t){t.id===e._socketId&&(e.readyState=e.OPEN,e.dispatchEvent(new c("open")))}),this._eventEmitter.addListener("websocketClosed",function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new c("close",{code:t.code,reason:t.reason})),e._unregisterEvents(),e.close())}),this._eventEmitter.addListener("websocketFailed",function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new c("error",{message:t.message})),e.dispatchEvent(new c("close",{message:t.message})),e._unregisterEvents(),e.close())})]}},{key:"binaryType",get:function(){return this._binaryType},set:function(e){if("blob"!==e&&"arraybuffer"!==e)throw new Error("binaryType must be either 'blob' or 'arraybuffer'");if("blob"===this._binaryType||"blob"===e){var t=a.BlobModule;u(t,"Native module BlobModule is required for blob support"),t&&("blob"===e?t.enableBlobSupport(this._socketId):t.disableBlobSupport(this._socketId))}this._binaryType=e}}]),t}(o.apply(void 0,v));k.CONNECTING=h,k.OPEN=p,k.CLOSING=y,k.CLOSED=f,k.isAvailable=!!b,s.exports=k},87); +__d(function(e,t,r,s){"use strict";var l=t(13),o=t(89),a=t(15),n=a.BlobModule,c=function(){function e(t,r){babelHelpers.classCallCheck(this,e);var s=o(),a=0;return t.forEach(function(t){l(t instanceof e,"Can currently only create a Blob from other Blobs"),a+=t.size}),n.createFromParts(t,s),e.create({blobId:s,offset:0,size:a})}return babelHelpers.createClass(e,null,[{key:"create",value:function(t){return babelHelpers.extends(Object.create(e.prototype),t)}}]),babelHelpers.createClass(e,[{key:"slice",value:function(t,r){var s=this.offset,l=this.size;return"number"==typeof t&&(t>l&&(t=l),s+=t,l-=t,"number"==typeof r&&(r<0&&(r=this.size+r),l=r-t)),e.create({blobId:this.blobId,offset:s,size:l})}},{key:"close",value:function(){n.release(this.blobId)}}]),e}();r.exports=c},88); +__d(function(v,n,o,r){var t=n(90),_=n(93),a=_;a.v1=t,a.v4=_,o.exports=a},89); +__d(function(e,o,r,s){function c(e,o,r){var s=o&&r||0,c=o||[];e=e||{};var n=void 0!==e.clockseq?e.clockseq:t,i=void 0!==e.msecs?e.msecs:(new Date).getTime(),f=void 0!==e.nsecs?e.nsecs:u+1,m=i-d+(f-u)/1e4;if(m<0&&void 0===e.clockseq&&(n=n+1&16383),(m<0||i>d)&&void 0===e.nsecs&&(f=0),f>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=i,u=f,t=n,i+=122192928e5;var k=(1e4*(268435455&i)+f)%4294967296;c[s++]=k>>>24&255,c[s++]=k>>>16&255,c[s++]=k>>>8&255,c[s++]=255&k;var l=i/4294967296*1e4&268435455;c[s++]=l>>>8&255,c[s++]=255&l,c[s++]=l>>>24&15|16,c[s++]=l>>>16&255,c[s++]=n>>>8|128,c[s++]=255&n;for(var q=e.node||a,w=0;w<6;++w)c[s+w]=q[w];return o?o:v(c)}var n=o(91),v=o(92),i=n(),a=[1|i[0],i[1],i[2],i[3],i[4],i[5]],t=16383&(i[6]<<8|i[7]),d=0,u=0;r.exports=c},90); +__d(function(r,n,a,t){var o,e=r.crypto||r.msCrypto;if(e&&e.getRandomValues){var u=new Uint8Array(16);o=function(){return e.getRandomValues(u),u}}if(!o){var f=new Array(16);o=function(){for(var r,n=0;n<16;n++)0===(3&n)&&(r=4294967296*Math.random()),f[n]=r>>>((3&n)<<3)&255;return f}}a.exports=o},91); +__d(function(r,t,n,o){function u(r,t){var n=t||0,o=f;return o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+"-"+o[r[n++]]+o[r[n++]]+"-"+o[r[n++]]+o[r[n++]]+"-"+o[r[n++]]+o[r[n++]]+"-"+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]+o[r[n++]]}for(var f=[],i=0;i<256;++i)f[i]=(i+256).toString(16).substr(1);n.exports=u},92); +__d(function(r,n,a,o){function t(r,n,a){var o=n&&a||0;"string"==typeof r&&(n="binary"==r?new Array(16):null,r=null),r=r||{};var t=r.random||(r.rng||f)();if(t[6]=15&t[6]|64,t[8]=63&t[8]|128,n)for(var u=0;u<16;++u)n[o+u]=t[u];return n||i(t)}var f=n(91),i=n(92);a.exports=t},93); +__d(function(e,t,s,i){"use strict";var l=function e(t,s){babelHelpers.classCallCheck(this,e),this.type=t.toString(),babelHelpers.extends(this,s)};s.exports=l},94); +__d(function(e,t,r,o){"use strict";var n=(t(88),t(15)),l=n.BlobModule,s=null;l&&"string"==typeof l.BLOB_URI_SCHEME&&(s=l.BLOB_URI_SCHEME+":","string"==typeof l.BLOB_URI_HOST&&(s+="//"+l.BLOB_URI_HOST+"/"));var u=function(){function e(){throw babelHelpers.classCallCheck(this,e),new Error("Creating BlobURL objects is not supported yet.")}return babelHelpers.createClass(e,null,[{key:"createObjectURL",value:function(e){if(null===s)throw new Error("Cannot create URL for blob!");return""+s+e.blobId+"?offset="+e.offset+"&size="+e.size}},{key:"revokeObjectURL",value:function(e){}}]),e}();r.exports=u},95); +__d(function(e,n,t,s){"use strict";var a=(n(97),n(15)),l=(n(23),function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,n,t,s,a){r.alert(e,n,t,s)}}]),e}()),r=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,n,t,s){var l={title:e||"",message:n||""};s&&(l=babelHelpers.extends({},l,{cancelable:s.cancelable}));var r=t?t.slice(0,3):[{text:"OK"}],o=r.pop(),i=r.pop(),u=r.pop();u&&(l=babelHelpers.extends({},l,{buttonNeutral:u.text||""})),i&&(l=babelHelpers.extends({},l,{buttonNegative:i.text||""})),o&&(l=babelHelpers.extends({},l,{buttonPositive:o.text||""})),a.DialogManagerAndroid.showAlert(l,function(e){return console.warn(e)},function(e,n){e===a.DialogManagerAndroid.buttonClicked?n===a.DialogManagerAndroid.buttonNeutral?u.onPress&&u.onPress():n===a.DialogManagerAndroid.buttonNegative?i.onPress&&i.onPress():n===a.DialogManagerAndroid.buttonPositive&&o.onPress&&o.onPress():e===a.DialogManagerAndroid.dismissed&&s&&s.onDismiss&&s.onDismiss()})}}]),e}();t.exports=l},96); +__d(function(e,t,a,r){"use strict";var n=t(15).AlertManager,l=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"alert",value:function(e,t,a,r){return"undefined"!=typeof r?(console.warn('AlertIOS.alert() with a 4th "type" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.'),void this.prompt(e,t,a,r)):void this.prompt(e,t,a,"default")}},{key:"prompt",value:function(e,t,a){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"plain-text",l=arguments[4],i=arguments[5];if("function"==typeof r){console.warn('You passed a callback function as the "type" argument to AlertIOS.prompt(). React Native is assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue, keyboardType) and the old syntax will be removed in a future version.');var o=r,l=t;return void n.alertWithArgs({title:e,type:"plain-text",defaultValue:l},function(e,t){o(t)})}var s,u,c=[],p=[];"function"==typeof a?c=[a]:a instanceof Array&&a.forEach(function(e,t){if(c[t]=e.onPress,"cancel"===e.style?s=String(t):"destructive"===e.style&&(u=String(t)),e.text||t<(a||[]).length-1){var r={};r[t]=e.text||"",p.push(r)}}),n.alertWithArgs({title:e,message:t||void 0,buttons:p,type:r||void 0,defaultValue:l,cancelButtonKey:s,destructiveButtonKey:u,keyboardType:i},function(e,t){var a=c[e];a&&a(t)})}}]),e}();a.exports=l},97); +__d(function(e,t,n,r){"use strict";var i=t(80),o=t(15).LocationObserver,s=t(13),a=t(99),u=t(27),c=new i(o),v=t(23),f=t(100),g=[],l=!1,h={setRNConfiguration:function(e){o.setConfiguration&&o.setConfiguration(e)},requestAuthorization:function(){o.requestAuthorization()},getCurrentPosition:function(e,t,n){var r,i;return regeneratorRuntime.async(function(u){for(;;)switch(u.prev=u.next){case 0:if(s("function"==typeof e,"Must provide a valid geo_success callback."),r=!0,!(v.Version>=23)){u.next=11;break}return u.next=5,regeneratorRuntime.awrap(f.check(f.PERMISSIONS.ACCESS_FINE_LOCATION));case 5:if(r=u.sent){u.next=11;break}return u.next=9,regeneratorRuntime.awrap(f.request(f.PERMISSIONS.ACCESS_FINE_LOCATION));case 9:i=u.sent,r=i===f.RESULTS.GRANTED;case 11:r&&o.getCurrentPosition(n||{},e,t||a);case 12:case"end":return u.stop()}},null,this)},watchPosition:function(e,t,n){l||(o.startObserving(n||{}),l=!0);var r=g.length;return g.push([c.addListener("geolocationDidChange",e),t?c.addListener("geolocationError",t):null]),r},clearWatch:function(e){var t=g[e];if(t){t[0].remove();var n=t[1];n&&n.remove(),g[e]=void 0;for(var r=!0,i=0;i1?e-1:0),a=1;a1?n-1:0),i=1;i-1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e),!mo.plugins[n]){Et(t.extractEvents,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e),mo.plugins[n]=t;var o=t.eventTypes;for(var r in o)Et(W(o[r],t,r),"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",r,e)}}}function W(e,t,n){Et(!mo.eventNameDispatchConfigs.hasOwnProperty(n),"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",n),mo.eventNameDispatchConfigs[n]=e;var o=e.phasedRegistrationNames;if(o){for(var r in o)if(o.hasOwnProperty(r)){var i=o[r];L(i,t,n)}return!0}return!!e.registrationName&&(L(e.registrationName,t,n),!0)}function L(e,t,n){Et(!mo.registrationNameModules[e],"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e),mo.registrationNameModules[e]=t,mo.registrationNameDependencies[e]=t.eventTypes[n].dependencies}function B(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function Y(e){return"topMouseMove"===e||"topTouchMove"===e}function V(e){return"topMouseDown"===e||"topTouchStart"===e}function X(e,t,n,o){var r=e.type||"unknown-event";e.currentTarget=_o.getNodeFromInstance(o),Mn.invokeGuardedCallbackAndCatchFirstError(r,n,void 0,e),e.currentTarget=null}function G(e,t){var n=e._dispatchListeners,o=e._dispatchInstances;if(Array.isArray(n))for(var r=0;r0;)e=te(e),n--;for(;r-n>0;)t=te(t),r--;for(var a=n;a--;){if(e===t||e===t.alternate)return e;e=te(e),t=te(t)}return null}function oe(e,t){for(;t;){if(e===t||e===t.alternate)return!0;t=te(t)}return!1}function re(e){return te(e)}function ie(e,t,n){for(var o=[];e;)o.push(e),e=te(e);var r;for(r=o.length;r-- >0;)t(o[r],"captured",n);for(r=0;r0;)n(s[u],"captured",r)}function se(e,t,n){var o=t.dispatchConfig.phasedRegistrationNames[n];return xo(e,o)}function ue(e,t,n){var o=se(e,n,t);o&&(n._dispatchListeners=yo(n._dispatchListeners,o),n._dispatchInstances=yo(n._dispatchInstances,e))}function ce(e){e&&e.dispatchConfig.phasedRegistrationNames&&wo.traverseTwoPhase(e._targetInst,ue,e)}function le(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?wo.getParentInstance(t):null;wo.traverseTwoPhase(n,ue,e)}}function pe(e,t,n){if(e&&n&&n.dispatchConfig.registrationName){var o=n.dispatchConfig.registrationName,r=xo(e,o);r&&(n._dispatchListeners=yo(n._dispatchListeners,r),n._dispatchInstances=yo(n._dispatchInstances,e))}}function de(e){e&&e.dispatchConfig.registrationName&&pe(e._targetInst,null,e)}function he(e){bo(e,ce)}function fe(e){bo(e,le)}function me(e,t,n,o){wo.traverseEnterLeave(n,o,pe,e,t)}function ve(e){bo(e,de)}function ge(e,t,n,o){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var r=this.constructor.Interface;for(var i in r)if(r.hasOwnProperty(i)){var a=r[i];a?this[i]=a(n):"target"===i?this.target=o:this[i]=n[i]}var s=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=s?kt.thatReturnsTrue:kt.thatReturnsFalse,this.isPropagationStopped=kt.thatReturnsFalse,this}function _e(e,t,n,o){var r=this;if(r.eventPool.length){var i=r.eventPool.pop();return r.call(i,e,t,n,o),i}return new r(e,t,n,o)}function Ce(e){var t=this;Et(e instanceof t,"Trying to release an event instance into a pool of a different type."),e.destructor(),t.eventPool.lengthCr&&(e+=" (original size: "+yr.length+")"),e}function Me(e,t){return Et(null!=t,"accumulate(...): Accumulated items must be not be null or undefined."),null==e?t:Array.isArray(e)?e.concat(t):Array.isArray(t)?[e].concat(t):[e,t]}function He(e,t,n,o){var r=Ir(e)?jr.startShouldSetResponder:Er(e)?jr.moveShouldSetResponder:"topSelectionChange"===e?jr.selectionChangeShouldSetResponder:jr.scrollShouldSetResponder,i=Ar?wo.getLowestCommonAncestor(Ar,t):t,a=i===Ar,s=mr.getPooled(r,i,n,o);s.touchHistory=Rr.touchHistory,a?Do.accumulateTwoPhaseDispatchesSkipTarget(s):Do.accumulateTwoPhaseDispatches(s);var u=xr(s);if(s.isPersistent()||s.constructor.release(s),!u||u===Ar)return null;var c,l=mr.getPooled(jr.responderGrant,u,n,o);l.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(l);var p=!0===Sr(l);if(Ar){var d=mr.getPooled(jr.responderTerminationRequest,Ar,n,o);d.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(d);var h=!wr(d)||Sr(d);if(d.isPersistent()||d.constructor.release(d),h){var f=mr.getPooled(jr.responderTerminate,Ar,n,o);f.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(f),c=Nr(c,[l,f]),Or(u,p)}else{var m=mr.getPooled(jr.responderReject,u,n,o);m.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(m),c=Nr(c,m)}}else c=Nr(c,l),Or(u,p);return c}function Ue(e,t,n){return t&&("topScroll"===e&&!n.responderIgnoreScroll||Dr>0&&"topSelectionChange"===e||Ir(e)||Er(e))}function Fe(e){var t=e.touches;if(!t||0===t.length)return!0;for(var n=0;n0;)qe(e,t[o],n);else if(t&&fi>0){var r=Ge(t);for(var i in hi)if(hi[i]){var a=r[i];if(void 0!==a){var s=n[i];if(s){if("function"==typeof a&&(a=!0),void 0===a&&(a=null),"object"!=typeof s)e[i]=a;else if("function"==typeof s.diff||"function"==typeof s.process){var u="function"==typeof s.process?s.process(a):a;e[i]=u}hi[i]=!1,fi--}}}}}function ze(e,t,n,o){var r,i=t.length0&&e&&(qe(e,i,r),hi=null);for(s in t)void 0===n[s]&&(r=o[s])&&(e&&void 0!==e[s]||void 0!==(a=t[s])&&("object"!=typeof r||"function"==typeof r.diff||"function"==typeof r.process?((e||(e={}))[s]=null,hi||(hi={}),hi[s]||(hi[s]=!0,fi++)):e=Je(e,a,r)));return e}function Ze(e,t,n){return $e(e,di,t,n)}function et(e,t,n){return $e(e,t,di,n)}function tt(e,t){return function(){if(t){if("boolean"==typeof e.__isMounted){if(!e.__isMounted)return}else if("function"==typeof e.isMounted&&!e.isMounted())return;return t.apply(e,arguments)}}}function nt(e,t){if(void 0!==t.styles){var n=e._owner||null,o=e.constructor.displayName,r="`styles` is not a supported property of `"+o+"`, did you mean `style` (singular)?";throw n&&n.constructor&&n.constructor.displayName&&(r+="\n\nCheck the `"+n.constructor.displayName+"` parent component."),new Error(r)}}function ot(e,t){for(var n in t.style)t[n]||void 0===e[n]||console.error("You are setting the style `{ "+n+": ... }` as a prop. You should nest it in a style object. E.g. `{ style: { "+n+": ... } }`")}function rt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function it(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function at(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function st(e,t){var n=void 0;try{n=ro(e)}catch(e){}if(null!=n){var o=n.viewConfig,r=vi.create(t,o.validAttributes);xt.updateView(n._nativeTag,o.uiViewClassName,r)}}function ut(e,t){var n=ro(e);if(null!=n){var o=void 0;if(void 0!==n.viewConfig)o=n.viewConfig;else if(void 0!==n._instance&&void 0!==n._instance.viewConfig)o=n._instance.viewConfig;else{for(;void 0!==n._renderedComponent;)n=n._renderedComponent;o=n.viewConfig}var r="function"==typeof n.getHostNode?n.getHostNode():n._rootNodeID,i=vi.create(t,o.validAttributes);xt.updateView(r,o.uiViewClassName,i)}}function ct(e,t){var n=void 0;try{n=ro(e)}catch(e){}if(null!=n){var o=n.viewConfig,r=vi.create(t,o.validAttributes);xt.updateView(n._nativeTag,o.uiViewClassName,r)}}function lt(e,t){var n=ro(e);if(null!=n){var o=void 0;if(void 0!==n.viewConfig)o=n.viewConfig;else if(void 0!==n._instance&&void 0!==n._instance.viewConfig)o=n._instance.viewConfig;else{for(;void 0!==n._renderedComponent;)n=n._renderedComponent;o=n.viewConfig}var r="function"==typeof n.getHostNode?n.getHostNode():n._rootNodeID,i=vi.create(t,o.validAttributes);xt.updateView(r,o.uiViewClassName,i)}}function pt(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}function dt(e,t){return e&&"object"==typeof e&&null!=e.key?ji.escape(e.key):t.toString(36)}function ht(e,t,n,o){var r=typeof e;if("undefined"!==r&&"boolean"!==r||(e=null),null===e||"string"===r||"number"===r||"object"===r&&e.$$typeof===Ui)return n(o,e,""===t?Fi+dt(e,0):t),1;var i,a,s=0,u=""===t?Fi:t+Wi;if(Array.isArray(e))for(var c=0;c=0))return console.error("Ended a touch event which was not counted in `trackedTouchCount`."),null;Dr-=1}Rr.recordTouchTrack(e,n);var r=Ue(e,t,n)?He(e,t,n,o):null,i=Ar&&Ir(e),a=Ar&&Er(e),s=Ar&&Pr(e),u=i?jr.responderStart:a?jr.responderMove:s?jr.responderEnd:null;if(u){var c=mr.getPooled(u,Ar,n,o);c.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(c),r=Nr(r,c)}var l=Ar&&"topTouchCancel"===e,p=Ar&&!l&&Pr(e)&&Fe(n),d=l?jr.responderTerminate:p?jr.responderRelease:null;if(d){var h=mr.getPooled(d,Ar,n,o);h.touchHistory=Rr.touchHistory,Do.accumulateDirectDispatches(h),r=Nr(r,h),Or(null)}var f=Rr.touchHistory.numberActiveTouches;return Mr.GlobalInteractionHandler&&f!==kr&&Mr.GlobalInteractionHandler.onChange(f),kr=f,r},GlobalResponderHandler:null,GlobalInteractionHandler:null,injection:{injectGlobalResponderHandler:function(e){Mr.GlobalResponderHandler=e},injectGlobalInteractionHandler:function(e){Mr.GlobalInteractionHandler=e}}},Hr=Mr;Dt.register(ur),Po.injection.injectEventPluginOrder(lr),Co.injection.injectComponentTree(Wt),Hr.injection.injectGlobalResponderHandler(dr),Po.injection.injectEventPluginsByName({ResponderEventPlugin:Hr,ReactNativeBridgeEventPlugin:Yo});var Ur={initialize:kt,close:function(){Br.isBatchingUpdates=!1}},Fr={initialize:kt,close:Rn.flushBatchedUpdates.bind(Rn)},Wr=[Fr,Ur];babelHelpers.extends(We.prototype,fn,{getTransactionWrappers:function(){return Wr}});var Lr=new We,Br={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,o,r,i){var a=Br.isBatchingUpdates;return Br.isBatchingUpdates=!0,a?e(t,n,o,r,i):Lr.perform(e,null,t,n,o,r,i)}},Yr=Br,Vr=function(e,t){if(t.length){for(var n,o,r,i,a,s=Wt.getNodeFromInstance(e),u=0;u component.',this._stringText),this._hostParent=t;var r=Vt.allocateTag();this._rootNodeID=r;var i=n._tag;return xt.createView(r,"RCTRawText",i,{text:this._stringText}),Wt.precacheNode(this,r),r},getHostNode:function(){return this._rootNodeID},receiveComponent:function(e,t,n){if(e!==this._currentElement){this._currentElement=e;var o=""+e;o!==this._stringText&&(this._stringText=o,xt.updateView(this._rootNodeID,"RCTRawText",{text:this._stringText}))}},unmountComponent:function(){Wt.uncacheNode(this),this._currentElement=null,this._stringText=null,this._rootNodeID=0}});var oi=ni,ri=function(e,t){this._currentElement=null,this._renderedComponent=t(e)};babelHelpers.extends(ri.prototype,{mountComponent:function(e,t,n,o,r){return $t.mountComponent(this._renderedComponent,e,t,n,o,r)},receiveComponent:function(){},getHostNode:function(){return $t.getHostNode(this._renderedComponent)},unmountComponent:function(e,t){$t.unmountComponent(this._renderedComponent,e,t),this._renderedComponent=null}});var ii=ri;or.injection.injectStackBatchedUpdates(Rn.batchedUpdates),Rn.injection.injectReconcileTransaction(ti.ReactReconcileTransaction),Rn.injection.injectBatchingStrategy(Yr),An.injection.injectEnvironment(ti);var ai=function(e){var n=t(110);return new ii(Pt.createElement(n,{collapsable:!0,style:{position:"absolute"}}),e)};qn.injection.injectEmptyComponentFactory(ai),$n.injection.injectTextComponentClass(oi),$n.injection.injectGenericComponentClass(function(e){var t="";"string"==typeof e&&/^[a-z]/.test(e)&&(t+=" Each component name should start with an uppercase letter."),Et(!1,"Expected a component class, got %s.%s",e,t)});var si={},ui=1,ci={},li=function(){function e(){Ve(this,e)}return e.register=function(e){var t=++ui;return si[t]=e,t},e.getByID=function(e){if(!e)return ci;var t=si[e];return t||(console.warn("Invalid style with id `"+e+"`. Skipping ..."),ci)},e}(),pi=li,di={},hi=null,fi=0,mi={create:function(e,t){return Ze(null,e,t)},diff:function(e,t,n){return $e(null,e,t,n)}},vi=mi,gi={mountSafeCallback:tt,throwOnStylesProp:nt,warnForStyleProps:ot},_i=t(40),Ci=gi.mountSafeCallback,yi=_i.useFiber?to:po,bi=function(e){function t(){return rt(this,t),it(this,e.apply(this,arguments))}return at(t,e),t.prototype.blur=function(){Mt.blurTextInput(yi(this))},t.prototype.focus=function(){Mt.focusTextInput(yi(this))},t.prototype.measure=function(e){xt.measure(yi(this),Ci(this,e))},t.prototype.measureInWindow=function(e){xt.measureInWindow(yi(this),Ci(this,e))},t.prototype.measureLayout=function(e,t,n){xt.measureLayout(yi(this),e,Ci(this,n),Ci(this,t))},t.prototype.setNativeProps=function(e){Ti(this,e)},t}(Pt.Component),Ti=void 0;Ti=_i.useFiber?st:ut;var Ri=bi,Ni=t(40),Ii=gi.mountSafeCallback,Ei=Ni.useFiber?to:po,Pi={measure:function(e){xt.measure(Ei(this),Ii(this,e))},measureInWindow:function(e){xt.measureInWindow(Ei(this),Ii(this,e))},measureLayout:function(e,t,n){xt.measureLayout(Ei(this),e,Ii(this,n),Ii(this,t))},setNativeProps:function(e){Si(this,e)},focus:function(){Mt.focusTextInput(Ei(this))},blur:function(){Mt.blurTextInput(Ei(this))}},Si=void 0;Si=Ni.useFiber?ct:lt;var wi,xi=Pi,Ai={centroidDimension:function(e,t,n,o){var r=e.touchBank,i=0,a=0,s=1===e.numberActiveTouches?e.touchBank[e.indexOfSingleActiveTouch]:null;if(null!==s)s.touchActive&&s.currentTimeStamp>t&&(i+=o&&n?s.currentPageX:o&&!n?s.currentPageY:!o&&n?s.previousPageX:s.previousPageY,a=1);else for(var u=0;u=t){var l;l=o&&n?c.currentPageX:o&&!n?c.currentPageY:!o&&n?c.previousPageX:c.previousPageY,i+=l,a++}}return a>0?i/a:Ai.noCentroid},currentCentroidXOfTouchesChangedAfter:function(e,t){return Ai.centroidDimension(e,t,!0,!0)},currentCentroidYOfTouchesChangedAfter:function(e,t){return Ai.centroidDimension(e,t,!1,!0)},previousCentroidXOfTouchesChangedAfter:function(e,t){return Ai.centroidDimension(e,t,!0,!1)},previousCentroidYOfTouchesChangedAfter:function(e,t){return Ai.centroidDimension(e,t,!1,!1)},currentCentroidX:function(e){return Ai.centroidDimension(e,0,!0,!0)},currentCentroidY:function(e){return Ai.centroidDimension(e,0,!1,!0)},noCentroid:-1},Di=Ai,ki=kt,Oi={escape:pt,unescapeInDev:ki},ji=Oi,Mi="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.iterator:"@@iterator"),Hi="@@iterator",Ui="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for")&&("function"==typeof Symbol?Symbol.for:"@@for")("react.element")||60103,Fi=".",Wi=":",Li=ft;"undefined"!=typeof process&&process.env&&!1&&(wi=En.ReactComponentTreeHook);var Bi,Yi={instantiateChildren:function(e,t,n,o){if(null==e)return null;var r={};return Li(e,mt,r),r},updateChildren:function(e,t,n,o,r,i,a,s,u){if(t||e){var c,l;for(c in t)if(t.hasOwnProperty(c)){l=e&&e[c];var p=l&&l._currentElement,d=t[c];if(null!=l&&Fn(p,d))$t.receiveComponent(l,d,r,s),t[c]=l;else{var h=eo(d,!0);t[c]=h;var f=$t.mountComponent(h,r,i,a,s,u);n.push(f),l&&(o[c]=$t.getHostNode(l),$t.unmountComponent(l,!1,!1))}}for(c in e)!e.hasOwnProperty(c)||t&&t.hasOwnProperty(c)||(l=e[c],o[c]=$t.getHostNode(l),$t.unmountComponent(l,!1,!1))}},unmountChildren:function(e,t,n){for(var o in e)if(e.hasOwnProperty(o)){var r=e[o];$t.unmountComponent(r,t,n)}}},Vi=Yi;"undefined"!=typeof process&&process.env&&!1&&(Bi=En.ReactComponentTreeHook);var Xi=gt,Gi={_reconcilerInstantiateChildren:function(e,t,n){return Vi.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,o,r,i){var a,s=0;return a=Xi(t,s),Vi.updateChildren(e,a,n,o,r,this,this._hostContainerInfo,i,s),a},mountChildren:function(e,t,n){var o=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=o;var r=[],i=0;for(var a in o)if(o.hasOwnProperty(a)){var s=o[a],u=0,c=$t.mountComponent(s,t,this,this._hostContainerInfo,n,u);s._mountIndex=i++,r.push(c)}return r},updateTextContent:function(e){var t=this._renderedChildren;Vi.unmountChildren(t,!1,!1);for(var n in t)t.hasOwnProperty(n)&&Et(!1,"updateTextContent called on non-empty component.");Nt(this,[Tt(e)])},updateMarkup:function(e){var t=this._renderedChildren;Vi.unmountChildren(t,!1,!1);for(var n in t)t.hasOwnProperty(n)&&Et(!1,"updateTextContent called on non-empty component.");Nt(this,[bt(e)])},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var o=this._renderedChildren,r={},i=[],a=this._reconcilerUpdateChildren(o,e,i,r,t,n);if(a||o){var s,u=null,c=0,l=0,p=0,d=null;for(s in a)if(a.hasOwnProperty(s)){var h=o&&o[s],f=a[s];h===f?(u=Rt(u,this.moveChild(h,d,c,l)),l=Math.max(h._mountIndex,l),h._mountIndex=c):(h&&(l=Math.max(h._mountIndex,l)),u=Rt(u,this._mountChildAtIndex(f,i[p],d,c,t,n)),p++),c++,d=$t.getHostNode(f)}for(s in r)r.hasOwnProperty(s)&&(u=Rt(u,this._unmountChild(o[s],r[s])));u&&Nt(this,u),this._renderedChildren=a}},unmountChildren:function(e,t){var n=this._renderedChildren;Vi.unmountChildren(n,e,t),this._renderedChildren=null},moveChild:function(e,t,n,o){if(e._mountIndex within is not supported on Android."),s.createElement(c,this.props)}}),c=w("RCTView",T,{nativeOnly:{nativeBackgroundAndroid:!0,nativeForegroundAndroid:!0}}),x=c;t.exports=x},110); +__d(function(n,o,t,_){t.exports=o(112)()},111); +__d(function(e,t,r,o){"use strict";var p=t(52),n=t(51),s=t(113);r.exports=function(){function e(e,t,r,o,p,c){c!==s&&n(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return r.checkPropTypes=p,r.PropTypes=r,r}},112); +__d(function(_,t,E,O){"use strict";var S="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";E.exports=S},113); +__d(function(t,s,c,e){"use strict";c.exports=s(47)},114); +__d(function(o,r,e,t){"use strict";var l=r(116),s=r(123),d=r(124),C=r(118),a=r(125),b=r(126),c=r(128),f=babelHelpers.extends({},C(d),C(s),C(l));f.transform={process:b},f.shadowOffset={diff:c};var n={process:a};f.backgroundColor=n,f.borderBottomColor=n,f.borderColor=n,f.borderLeftColor=n,f.borderRightColor=n,f.borderTopColor=n,f.color=n,f.shadowColor=n,f.textDecorationColor=n,f.tintColor=n,f.textShadowColor=n,f.overlayColor=n,e.exports=f},115); +__d(function(e,r,o,i){"use strict";var b=r(36),d=r(117),t=r(119),n=r(111),s=r(120),u=r(121),a=babelHelpers.extends({},t,s,u,{resizeMode:n.oneOf(Object.keys(d)),backfaceVisibility:n.oneOf(["visible","hidden"]),backgroundColor:b,borderColor:b,borderWidth:n.number,borderRadius:n.number,overflow:n.oneOf(["visible","hidden"]),tintColor:b,opacity:n.number,overlayColor:n.string,borderTopLeftRadius:n.number,borderTopRightRadius:n.number,borderBottomLeftRadius:n.number,borderBottomRightRadius:n.number});o.exports=a},116); +__d(function(l,n,t,e){"use strict";var r=n(118),u=r({contain:null,cover:null,stretch:null,center:null,repeat:null});t.exports=u},117); +__d(function(r,n,t,i){"use strict";var o=n(13),a=function(r){var n,t={};r instanceof Object&&!Array.isArray(r)?void 0:o(!1);for(n in r)r.hasOwnProperty(n)&&(t[n]=n);return t};t.exports=a},118); +__d(function(e,n,r,t){"use strict";var i=n(111),o={display:i.oneOf(["none","flex"]),width:i.oneOfType([i.number,i.string]),height:i.oneOfType([i.number,i.string]),top:i.oneOfType([i.number,i.string]),left:i.oneOfType([i.number,i.string]),right:i.oneOfType([i.number,i.string]),bottom:i.oneOfType([i.number,i.string]),minWidth:i.oneOfType([i.number,i.string]),maxWidth:i.oneOfType([i.number,i.string]),minHeight:i.oneOfType([i.number,i.string]),maxHeight:i.oneOfType([i.number,i.string]),margin:i.oneOfType([i.number,i.string]),marginVertical:i.oneOfType([i.number,i.string]),marginHorizontal:i.oneOfType([i.number,i.string]),marginTop:i.oneOfType([i.number,i.string]),marginBottom:i.oneOfType([i.number,i.string]),marginLeft:i.oneOfType([i.number,i.string]),marginRight:i.oneOfType([i.number,i.string]),padding:i.oneOfType([i.number,i.string]),paddingVertical:i.oneOfType([i.number,i.string]),paddingHorizontal:i.oneOfType([i.number,i.string]),paddingTop:i.oneOfType([i.number,i.string]),paddingBottom:i.oneOfType([i.number,i.string]),paddingLeft:i.oneOfType([i.number,i.string]),paddingRight:i.oneOfType([i.number,i.string]),borderWidth:i.number,borderTopWidth:i.number,borderRightWidth:i.number,borderBottomWidth:i.number,borderLeftWidth:i.number,position:i.oneOf(["absolute","relative"]),flexDirection:i.oneOf(["row","row-reverse","column","column-reverse"]),flexWrap:i.oneOf(["wrap","nowrap"]),justifyContent:i.oneOf(["flex-start","flex-end","center","space-between","space-around"]),alignItems:i.oneOf(["flex-start","flex-end","center","stretch","baseline"]),alignSelf:i.oneOf(["auto","flex-start","flex-end","center","stretch","baseline"]),alignContent:i.oneOf(["flex-start","flex-end","center","stretch","space-between","space-around"]),overflow:i.oneOf(["visible","hidden","scroll"]),flex:i.number,flexGrow:i.number,flexShrink:i.number,flexBasis:i.oneOfType([i.number,i.string]),aspectRatio:i.number,zIndex:i.number,direction:i.oneOf(["inherit","ltr","rtl"])};r.exports=o},119); +__d(function(s,e,a,h){"use strict";var o=e(36),r=e(111),t={shadowColor:o,shadowOffset:r.shape({width:r.number,height:r.number}),shadowOpacity:r.number,shadowRadius:r.number};a.exports=t},120); +__d(function(e,r,t,s){"use strict";var a=r(111),n=r(122),o=function(e,r,t){if(e[r])return new Error("The transformMatrix style property is deprecated. Use `transform: [{ matrix: ... }]` instead.")},p=function(e,r,t){if(e[r])return new Error("The decomposedMatrix style property is deprecated. Use `transform: [...]` instead.")},i={transform:a.arrayOf(a.oneOfType([a.shape({perspective:a.number}),a.shape({rotate:a.string}),a.shape({rotateX:a.string}),a.shape({rotateY:a.string}),a.shape({rotateZ:a.string}),a.shape({scale:a.number}),a.shape({scaleX:a.number}),a.shape({scaleY:a.number}),a.shape({translateX:a.number}),a.shape({translateY:a.number}),a.shape({skewX:a.string}),a.shape({skewY:a.string})])),transformMatrix:o,decomposedMatrix:p,scaleX:n(a.number,"Use the transform prop instead."),scaleY:n(a.number,"Use the transform prop instead."),rotation:n(a.number,"Use the transform prop instead."),translateX:n(a.number,"Use the transform prop instead."),translateY:n(a.number,"Use the transform prop instead.")};t.exports=i},121); +__d(function(n,r,e,t){"use strict";function o(n,r){return function(e,t,o){a[o]||void 0===e[t]||console.warn("`"+t+"` supplied to `"+o+"` has been deprecated. "+r);for(var c=arguments.length,i=Array(c>3?c-3:0),u=3;u>>8)>>>0,r|=0}var o=(r(23),r(37));i.exports=u},125); +__d(function(t,n,r,u){"use strict";function c(t){return t}n(127),n(23),n(13),n(21);r.exports=c},126); +__d(function(t,e,a,n){"use strict";var r=e(13),o={createIdentityMatrix:function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},createCopy:function(t){return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},createOrthographic:function(t,e,a,n,r,o){var i=2/(e-t),u=2/(n-a),s=-2/(o-r),c=-(e+t)/(e-t),m=-(n+a)/(n-a),v=-(o+r)/(o-r);return[i,0,0,0,0,u,0,0,0,0,s,0,c,m,v,1]},createFrustum:function(t,e,a,n,r,o){var i=1/(e-t),u=1/(n-a),s=1/(r-o),c=2*(r*i),m=2*(r*u),v=(e+t)*i,l=(n+a)*u,f=(o+r)*s,d=2*(o*r*s);return[c,0,0,0,0,m,0,0,v,l,f,-1,0,0,d,0]},createPerspective:function(t,e,a,n){var r=1/Math.tan(t/2),o=1/(a-n),i=(n+a)*o,u=2*(n*a*o);return[r/e,0,0,0,0,r,0,0,0,0,i,-1,0,0,u,0]},createTranslate2d:function(t,e){var a=o.createIdentityMatrix();return o.reuseTranslate2dCommand(a,t,e),a},reuseTranslate2dCommand:function(t,e,a){t[12]=e,t[13]=a},reuseTranslate3dCommand:function(t,e,a,n){t[12]=e,t[13]=a,t[14]=n},createScale:function(t){var e=o.createIdentityMatrix();return o.reuseScaleCommand(e,t),e},reuseScaleCommand:function(t,e){t[0]=e,t[5]=e},reuseScale3dCommand:function(t,e,a,n){t[0]=e,t[5]=a,t[10]=n},reusePerspectiveCommand:function(t,e){t[11]=-1/e},reuseScaleXCommand:function(t,e){t[0]=e},reuseScaleYCommand:function(t,e){t[5]=e},reuseScaleZCommand:function(t,e){t[10]=e},reuseRotateXCommand:function(t,e){t[5]=Math.cos(e),t[6]=Math.sin(e),t[9]=-Math.sin(e),t[10]=Math.cos(e)},reuseRotateYCommand:function(t,e){t[0]=Math.cos(e),t[2]=-Math.sin(e),t[8]=Math.sin(e),t[10]=Math.cos(e)},reuseRotateZCommand:function(t,e){t[0]=Math.cos(e),t[1]=Math.sin(e),t[4]=-Math.sin(e),t[5]=Math.cos(e)},createRotateZ:function(t){var e=o.createIdentityMatrix();return o.reuseRotateZCommand(e,t),e},reuseSkewXCommand:function(t,e){t[4]=Math.tan(e)},reuseSkewYCommand:function(t,e){t[1]=Math.tan(e)},multiplyInto:function(t,e,a){var n=e[0],r=e[1],o=e[2],i=e[3],u=e[4],s=e[5],c=e[6],m=e[7],v=e[8],l=e[9],f=e[10],d=e[11],h=e[12],M=e[13],C=e[14],p=e[15],T=a[0],x=a[1],y=a[2],b=a[3];t[0]=T*n+x*u+y*v+b*h,t[1]=T*r+x*s+y*l+b*M,t[2]=T*o+x*c+y*f+b*C,t[3]=T*i+x*m+y*d+b*p,T=a[4],x=a[5],y=a[6],b=a[7],t[4]=T*n+x*u+y*v+b*h,t[5]=T*r+x*s+y*l+b*M,t[6]=T*o+x*c+y*f+b*C,t[7]=T*i+x*m+y*d+b*p,T=a[8],x=a[9],y=a[10],b=a[11],t[8]=T*n+x*u+y*v+b*h,t[9]=T*r+x*s+y*l+b*M,t[10]=T*o+x*c+y*f+b*C,t[11]=T*i+x*m+y*d+b*p,T=a[12],x=a[13],y=a[14],b=a[15],t[12]=T*n+x*u+y*v+b*h,t[13]=T*r+x*s+y*l+b*M,t[14]=T*o+x*c+y*f+b*C,t[15]=T*i+x*m+y*d+b*p},determinant:function(t){var e=babelHelpers.slicedToArray(t,16),a=e[0],n=e[1],r=e[2],o=e[3],i=e[4],u=e[5],s=e[6],c=e[7],m=e[8],v=e[9],l=e[10],f=e[11],d=e[12],h=e[13],M=e[14],C=e[15];return o*s*v*d-r*c*v*d-o*u*l*d+n*c*l*d+r*u*f*d-n*s*f*d-o*s*m*h+r*c*m*h+o*i*l*h-a*c*l*h-r*i*f*h+a*s*f*h+o*u*m*M-n*c*m*M-o*i*v*M+a*c*v*M+n*i*f*M-a*u*f*M-r*u*m*C+n*s*m*C+r*i*v*C-a*s*v*C-n*i*l*C+a*u*l*C},inverse:function(t){var e=o.determinant(t);if(!e)return t;var a=babelHelpers.slicedToArray(t,16),n=a[0],r=a[1],i=a[2],u=a[3],s=a[4],c=a[5],m=a[6],v=a[7],l=a[8],f=a[9],d=a[10],h=a[11],M=a[12],C=a[13],p=a[14],T=a[15];return[(m*h*C-v*d*C+v*f*p-c*h*p-m*f*T+c*d*T)/e,(u*d*C-i*h*C-u*f*p+r*h*p+i*f*T-r*d*T)/e,(i*v*C-u*m*C+u*c*p-r*v*p-i*c*T+r*m*T)/e,(u*m*f-i*v*f-u*c*d+r*v*d+i*c*h-r*m*h)/e,(v*d*M-m*h*M-v*l*p+s*h*p+m*l*T-s*d*T)/e,(i*h*M-u*d*M+u*l*p-n*h*p-i*l*T+n*d*T)/e,(u*m*M-i*v*M-u*s*p+n*v*p+i*s*T-n*m*T)/e,(i*v*l-u*m*l+u*s*d-n*v*d-i*s*h+n*m*h)/e,(c*h*M-v*f*M+v*l*C-s*h*C-c*l*T+s*f*T)/e,(u*f*M-r*h*M-u*l*C+n*h*C+r*l*T-n*f*T)/e,(r*v*M-u*c*M+u*s*C-n*v*C-r*s*T+n*c*T)/e,(u*c*l-r*v*l-u*s*f+n*v*f+r*s*h-n*c*h)/e,(m*f*M-c*d*M-m*l*C+s*d*C+c*l*p-s*f*p)/e,(r*d*M-i*f*M+i*l*C-n*d*C-r*l*p+n*f*p)/e,(i*c*M-r*m*M-i*s*C+n*m*C+r*s*p-n*c*p)/e,(r*m*l-i*c*l+i*s*f-n*m*f-r*s*d+n*c*d)/e]},transpose:function(t){return[t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]]},multiplyVectorByMatrix:function(t,e){var a=babelHelpers.slicedToArray(t,4),n=a[0],r=a[1],o=a[2],i=a[3];return[n*e[0]+r*e[4]+o*e[8]+i*e[12],n*e[1]+r*e[5]+o*e[9]+i*e[13],n*e[2]+r*e[6]+o*e[10]+i*e[14],n*e[3]+r*e[7]+o*e[11]+i*e[15]]},v3Length:function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])},v3Normalize:function(t,e){var a=1/(e||o.v3Length(t));return[t[0]*a,t[1]*a,t[2]*a]},v3Dot:function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},v3Combine:function(t,e,a,n){return[a*t[0]+n*e[0],a*t[1]+n*e[1],a*t[2]+n*e[2]]},v3Cross:function(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]},quaternionToDegreesXYZ:function(t,e,a){var n=babelHelpers.slicedToArray(t,4),r=n[0],i=n[1],u=n[2],s=n[3],c=s*s,m=r*r,v=i*i,l=u*u,f=r*i+u*s,d=c+m+v+l,h=180/Math.PI;return f>.49999*d?[0,2*Math.atan2(r,s)*h,90]:f<-.49999*d?[0,-2*Math.atan2(r,s)*h,-90]:[o.roundTo3Places(Math.atan2(2*r*s-2*i*u,1-2*m-2*l)*h),o.roundTo3Places(Math.atan2(2*i*s-2*r*u,1-2*v-2*l)*h),o.roundTo3Places(Math.asin(2*r*i+2*u*s)*h)]},roundTo3Places:function(t){var e=t.toString().split("e");return.001*Math.round(e[0]+"e"+(e[1]?+e[1]-3:3))},decomposeMatrix:function(t){r(16===t.length,"Matrix decomposition needs a list of 3d matrix values, received %s",t);var e=[],a=[],n=[],i=[],u=[];if(t[15]){for(var s=[],c=[],m=0;m<4;m++){s.push([]);for(var v=0;v<4;v++){var l=t[4*m+v]/t[15];s[m].push(l),c.push(3===v?0:l)}}if(c[15]=1,o.determinant(c)){if(0!==s[0][3]||0!==s[1][3]||0!==s[2][3])var f=[s[0][3],s[1][3],s[2][3],s[3][3]],d=o.inverse(c),h=o.transpose(d),e=o.multiplyVectorByMatrix(f,h);else e[0]=e[1]=e[2]=0,e[3]=1;for(var m=0;m<3;m++)u[m]=s[3][m];var M=[];for(m=0;m<3;m++)M[m]=[s[m][0],s[m][1],s[m][2]];n[0]=o.v3Length(M[0]),M[0]=o.v3Normalize(M[0],n[0]),i[0]=o.v3Dot(M[0],M[1]),M[1]=o.v3Combine(M[1],M[0],1,-i[0]),i[0]=o.v3Dot(M[0],M[1]),M[1]=o.v3Combine(M[1],M[0],1,-i[0]),n[1]=o.v3Length(M[1]),M[1]=o.v3Normalize(M[1],n[1]),i[0]/=n[1],i[1]=o.v3Dot(M[0],M[2]),M[2]=o.v3Combine(M[2],M[0],1,-i[1]),i[2]=o.v3Dot(M[1],M[2]),M[2]=o.v3Combine(M[2],M[1],1,-i[2]),n[2]=o.v3Length(M[2]),M[2]=o.v3Normalize(M[2],n[2]),i[1]/=n[2],i[2]/=n[2];var C=o.v3Cross(M[1],M[2]);if(o.v3Dot(M[0],C)<0)for(m=0;m<3;m++)n[m]*=-1,M[m][0]*=-1,M[m][1]*=-1,M[m][2]*=-1;a[0]=.5*Math.sqrt(Math.max(1+M[0][0]-M[1][1]-M[2][2],0)),a[1]=.5*Math.sqrt(Math.max(1-M[0][0]+M[1][1]-M[2][2],0)),a[2]=.5*Math.sqrt(Math.max(1-M[0][0]-M[1][1]+M[2][2],0)),a[3]=.5*Math.sqrt(Math.max(1+M[0][0]+M[1][1]+M[2][2],0)),M[2][1]>M[1][2]&&(a[0]=-a[0]),M[0][2]>M[2][0]&&(a[1]=-a[1]),M[1][0]>M[0][1]&&(a[2]=-a[2]);var p;return p=a[0]<.001&&a[0]>=0&&a[1]<.001&&a[1]>=0?[0,0,o.roundTo3Places(180*Math.atan2(M[0][1],M[0][0])/Math.PI)]:o.quaternionToDegreesXYZ(a,s,M),{rotationDegrees:p,perspective:e,quaternion:a,scale:n,skew:i,translation:u,rotate:p[2],rotateX:p[0],rotateY:p[1],scaleX:n[0],scaleY:n[1],translateX:u[0],translateY:u[1]}}}}};a.exports=o},127); +__d(function(t,i,h,d){"use strict";var e={width:void 0,height:void 0},n=function(t,i){return t=t||e,i=i||e,t!==i&&(t.width!==i.width||t.height!==i.height)};h.exports=n},128); +__d(function(e,i,s,t){"use strict";var a=i(115),c={};c.UIView={pointerEvents:!0,accessible:!0,accessibilityLabel:!0,accessibilityComponentType:!0,accessibilityLiveRegion:!0,accessibilityTraits:!0,importantForAccessibility:!0,nativeID:!0,testID:!0,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:!0,onAccessibilityTap:!0,onMagicTap:!0,collapsable:!0,needsOffscreenAlphaCompositing:!0,style:a},c.RCTView=babelHelpers.extends({},c.UIView,{removeClippedSubviews:!0}),s.exports=c},129); +__d(function(e,o,n,s){"use strict";var i=o(131),t=o(136),c=o(111),r=o(137),a=o(124),l=o(138),p=l.AccessibilityComponentTypes,d=l.AccessibilityTraits,u=r(a);n.exports=babelHelpers.extends({},t,{accessible:c.bool,accessibilityLabel:c.node,accessibilityComponentType:c.oneOf(p),accessibilityLiveRegion:c.oneOf(["none","polite","assertive"]),importantForAccessibility:c.oneOf(["auto","yes","no","no-hide-descendants"]),accessibilityTraits:c.oneOfType([c.oneOf(d),c.arrayOf(c.oneOf(d))]),accessibilityViewIsModal:c.bool,onAccessibilityTap:c.func,onMagicTap:c.func,testID:c.string,nativeID:c.string,onResponderGrant:c.func,onResponderMove:c.func,onResponderReject:c.func,onResponderRelease:c.func,onResponderTerminate:c.func,onResponderTerminationRequest:c.func,onStartShouldSetResponder:c.func,onStartShouldSetResponderCapture:c.func,onMoveShouldSetResponder:c.func,onMoveShouldSetResponderCapture:c.func,hitSlop:i,onLayout:c.func,pointerEvents:c.oneOf(["box-none","none","box-only","auto"]),style:u,removeClippedSubviews:c.bool,renderToHardwareTextureAndroid:c.bool,shouldRasterizeIOS:c.bool,collapsable:c.bool,needsOffscreenAlphaCompositing:c.bool})},130); +__d(function(t,r,e,n){"use strict";var u=r(111),b=r(132),m=b({top:u.number,left:u.number,bottom:u.number,right:u.number});e.exports=m},131); +__d(function(n,e,t,i){"use strict";function r(n){function e(e,t,i,r,c){if(!t[i])return void(e&&o(!1,"Required object `"+i+"` was not specified in "+("`"+r+"`.")));var l=t[i],u=typeof l,d=c||"(unknown)";"object"!==u&&o(!1,"Invalid "+d+" `"+i+"` of type `"+u+"` "+("supplied to `"+r+"`, expected `object`."));for(var s=a(t[i],n),p=arguments.length,f=Array(p>5?p-5:0),v=5;v4?o-4:0),c=4;c4?e-4:0),v=4;v=t)return e[r];return e[e.length-1]||1}}]),e}();r.exports=l},154); +__d(function(r,e,t,n){"use strict";function a(r){switch(r){case.75:return"ldpi";case 1:return"mdpi";case 1.5:return"hdpi";case 2:return"xhdpi";case 3:return"xxhdpi";case 4:return"xxxhdpi"}throw new Error("no such scale")}function s(r,e){var t=a(e);if(!t)throw new Error("Don't know which android drawable suffix to use for asset: "+JSON.stringify(r));var n="drawable-"+t;return n}function i(r){var e=o(r);return(e+"/"+r.name).toLowerCase().replace(/\//g,"_").replace(/([^a-z0-9_])/g,"").replace(/^assets_/,"")}function o(r){var e=r.httpServerLocation;return"/"===e[0]&&(e=e.substr(1)),e}t.exports={getAndroidAssetSuffix:a,getAndroidDrawableFolderName:s,getAndroidResourceIdentifier:i,getBasePath:o}},155); +__d(function(e,o,r,a){"use strict";function n(e,o,r){if(o){var a=e.displayName||e.name||"unknown",n=e.__propTypesSecretDontUseThesePlease||e.propTypes;if(!n)throw new Error("`"+a+"` has no propTypes defined`");var p=o.NativeProps;for(var s in p)if(!(n[s]||t[s]||r&&r[s])){var i;throw i=n.hasOwnProperty(s)?"`"+a+"` has incorrectly defined propType for native prop `"+o.uiViewClassName+"."+s+"` of native type `"+p[s]:"`"+a+"` has no propType for native prop `"+o.uiViewClassName+"."+s+"` of native type `"+p[s]+"`",i+="\nIf you haven't changed this prop yourself, this usually means that your versions of the native code and JavaScript code are out of sync. Updating both should make this error go away.",new Error(i)}}}var t=o(115);r.exports=n},156); +__d(function(e,t,n,r){"use strict";function i(e,t){if(null==e||null==t)return!0;if(e.length!==t.length)return!0;for(var n=0;n must be a child of a "),A.createElement(X,{opacity:u(e),transform:a(e)},this.props.children)}}]),t}(A.Component);$.contextTypes={isInSurface:P.bool.isRequired};var B=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=s(e.x,0),n=s(e.y,0),r=s(e.width,0),i=s(e.height,0),l=[t,n,r,i],o=I(e);return delete o.x,delete o.y,A.createElement(X,{clipping:l,opacity:u(e),transform:a(o)},this.props.children)}}]),t}(A.Component),K=0,Q=1,Z=2,ee=3,te=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=e.d||o(e.children),n=(t instanceof T?t:new T(t)).toJSON();return A.createElement(Y,{fill:y(e.fill,e),opacity:u(e),stroke:g(e.stroke),strokeCap:m(e.strokeCap),strokeDash:e.strokeDash||null,strokeJoin:v(e.strokeJoin),strokeWidth:s(e.strokeWidth,1),transform:a(e),d:n})}}]),t}(A.Component),ne={},re=/^[\s"']*/,ie=/[\s"']*$/,le=/\n/g,oe=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=e.path,n=t?(t instanceof T?t:new T(t)).toJSON():null,r=S(e.font,o(e.children));return A.createElement(q,{fill:y(e.fill,e),opacity:u(e),stroke:g(e.stroke),strokeCap:m(e.strokeCap),strokeDash:e.strokeDash||null,strokeJoin:v(e.strokeJoin),strokeWidth:s(e.strokeWidth,1),transform:a(e),alignment:w(e.alignment),frame:r,path:n})}}]),t}(A.Component),se={LinearGradient:H,RadialGradient:x,Pattern:O,Transform:W,Path:T,Surface:L,Group:$,ClippingRectangle:B,Shape:te,Text:oe};n.exports=se},157); +__d(function(t,r,e,n){var a={maroon:"#800000",red:"#ff0000",orange:"#ffA500",yellow:"#ffff00",olive:"#808000",purple:"#800080",fuchsia:"#ff00ff",white:"#ffffff",lime:"#00ff00",green:"#008000",navy:"#000080",blue:"#0000ff",aqua:"#00ffff",teal:"#008080",black:"#000000",silver:"#c0c0c0",gray:"#808080"},h=function(t,r){for(var e=[],n=0,a=t.length;nY?(p-=v,c-=X):l>0&&0!=Y&&(p-=l/Y*v,c-=l/Y*X),a=p*p+c*c,p=s-t,c=h-i,l=p*v+c*X,l>Y?(p-=v,c-=X):l>0&&0!=Y&&(p-=l/Y*v,c-=l/Y*X),u=p*p+c*c,a<.01&&u<.01)return void this.onLine(t,i,o,r);if(isNaN(a)||isNaN(u))throw new Error("Bad input");var f=.5*(n+s),M=.5*(e+h),b=.5*(n+t),T=.5*(e+i),k=.5*(b+f),w=.5*(T+M),_=.5*(o+s),D=.5*(r+h),z=.5*(_+f),C=.5*(D+M),m=.5*(k+z),B=.5*(w+C);this.onBezierCurve(t,i,b,T,k,w,m,B),this.onBezierCurve(m,B,z,C,_,D,o,r)},onArc:function(t,i,n,e,s,h,o,r,a,u,p,c){var l=c?c*Math.PI/180:0,v=Math.cos(l),X=Math.sin(l),Y=v*o,f=-X*r,M=X*o,b=v*r,T=u-a;T<0&&!p?T+=2*Math.PI:T>0&&p&&(T-=2*Math.PI);for(var k=Math.ceil(Math.abs(T/(Math.PI/2))),w=T/k,_=1.3333333333333333*Math.tan(w/4),D=Math.cos(a),z=Math.sin(a),C=0;Ci.yy/i.xy?-1:1;return(i.xx<0?i.xy>=0:i.xy<0)&&(n=-n),this.rotate(t-180*Math.atan2(n*i.yx,n*i.xx)/Math.PI,x,y)},scaleTo:function(t,x){var y=this,i=Math.sqrt(y.xx*y.xx+y.yx*y.yx);return y.xx/=i,y.yx/=i,i=Math.sqrt(y.yy*y.yy+y.xy*y.xy),y.yy/=i,y.xy/=i,this.scale(t,x)},resizeTo:function(t,x){var y=this.width,i=this.height;return y&&i?this.scaleTo(t/y,x/i):this},inversePoint:function(t,x){var y=this.xx,i=this.yx,n=this.xy,r=this.yy,s=this.x,h=this.y,o=i*n-y*r;return 0==o?null:{x:(r*(s-t)+n*(x-h))/o,y:(y*(h-x)+i*(t-s))/o}},point:function(t,x){var y=this;return{x:y.xx*t+y.xy*x+y.x,y:y.yx*t+y.yy*x+y.y}}})},162); +__d(function(e,t,s,r){"use strict";var i=t(36),o=(t(23),t(114)),l=t(111),a=t(143),n=t(164),b=t(172),c=(t(176),t(110)),u=t(13),d=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){var e=this.props,t=e.accessibilityLabel,s=e.color,r=e.onPress,i=e.title,l=e.disabled,a=e.testID,d=[p.button],h=[p.text];s&&d.push({backgroundColor:s});var y=["button"];l&&(d.push(p.buttonDisabled),h.push(p.textDisabled),y.push("disabled")),u("string"==typeof i,"The title prop of a Button must be a string");var f=i.toUpperCase(),g=b;return o.createElement(g,{accessibilityComponentType:"button",accessibilityLabel:t,accessibilityTraits:y,testID:a,disabled:l,onPress:r},o.createElement(c,{style:d},o.createElement(n,{style:h,disabled:l},f)))}}]),t}(o.Component);d.propTypes={title:l.string.isRequired,accessibilityLabel:l.string,color:i,disabled:l.bool,onPress:l.func.isRequired,testID:l.string};var p=a.create({button:{elevation:4,backgroundColor:"#2196F3",borderRadius:2},text:{color:"white",textAlign:"center",padding:8,fontWeight:"500"},buttonDisabled:{elevation:0,backgroundColor:"#dfdfdf"},textDisabled:{color:"#a1a1a1"}});s.exports=d},163); +__d(function(e,t,s,n){"use strict";var o=t(36),i=t(131),r=t(38),l=(t(23),t(114)),a=t(111),p=t(129),h=t(137),d=t(123),u=t(165),c=t(139),b=t(148),g=t(171),f=t(125),R=h(d),H={validAttributes:g(p.UIView,{isHighlighted:!0,numberOfLines:!0,ellipsizeMode:!0,allowFontScaling:!0,disabled:!0,selectable:!0,selectionColor:!0,adjustsFontSizeToFit:!0,minimumFontScale:!0,textBreakStrategy:!0}),uiViewClassName:"RCTText"},P=c({displayName:"Text",propTypes:{ellipsizeMode:a.oneOf(["head","middle","tail","clip"]),numberOfLines:a.number,textBreakStrategy:a.oneOf(["simple","highQuality","balanced"]),onLayout:a.func,onPress:a.func,onLongPress:a.func,pressRetentionOffset:i,selectable:a.bool,selectionColor:o,suppressHighlighting:a.bool,style:R,testID:a.string,nativeID:a.string,allowFontScaling:a.bool,accessible:a.bool,adjustsFontSizeToFit:a.bool,minimumFontScale:a.number,disabled:a.bool},getDefaultProps:function(){return{accessible:!0,allowFontScaling:!0,ellipsizeMode:"tail",disabled:!1}},getInitialState:function(){return g(u.Mixin.touchableGetInitialState(),{isHighlighted:!1})},mixins:[r],viewConfig:H,getChildContext:function(){return{isInAParentText:!0}},childContextTypes:{isInAParentText:a.bool},contextTypes:{isInAParentText:a.bool},_handlers:null,_hasPressHandler:function(){return!!this.props.onPress||!!this.props.onLongPress},touchableHandleActivePressIn:null,touchableHandleActivePressOut:null,touchableHandlePress:null,touchableHandleLongPress:null,touchableGetPressRectOffset:null,render:function(){var e=this,t=this.props;return(this.props.onStartShouldSetResponder||this._hasPressHandler())&&(this._handlers||(this._handlers={onStartShouldSetResponder:function(){var t=e.props.onStartShouldSetResponder&&e.props.onStartShouldSetResponder(),s=t||e._hasPressHandler();if(s&&!e.touchableHandleActivePressIn){for(var n in u.Mixin)"function"==typeof u.Mixin[n]&&(e[n]=u.Mixin[n].bind(e));e.touchableHandleActivePressIn=function(){!e.props.suppressHighlighting&&e._hasPressHandler()&&e.setState({isHighlighted:!0})},e.touchableHandleActivePressOut=function(){!e.props.suppressHighlighting&&e._hasPressHandler()&&e.setState({isHighlighted:!1})},e.touchableHandlePress=function(t){e.props.onPress&&e.props.onPress(t)},e.touchableHandleLongPress=function(t){e.props.onLongPress&&e.props.onLongPress(t)},e.touchableGetPressRectOffset=function(){return this.props.pressRetentionOffset||m}}return s},onResponderGrant:function(e,t){this.touchableHandleResponderGrant(e,t),this.props.onResponderGrant&&this.props.onResponderGrant.apply(this,arguments)}.bind(this),onResponderMove:function(e){this.touchableHandleResponderMove(e),this.props.onResponderMove&&this.props.onResponderMove.apply(this,arguments)}.bind(this),onResponderRelease:function(e){this.touchableHandleResponderRelease(e),this.props.onResponderRelease&&this.props.onResponderRelease.apply(this,arguments)}.bind(this),onResponderTerminate:function(e){this.touchableHandleResponderTerminate(e),this.props.onResponderTerminate&&this.props.onResponderTerminate.apply(this,arguments)}.bind(this),onResponderTerminationRequest:function(){var e=this.touchableHandleResponderTerminationRequest();return e&&this.props.onResponderTerminationRequest&&(e=this.props.onResponderTerminationRequest.apply(this,arguments)),e}.bind(this)}),t=babelHelpers.extends({},this.props,this._handlers,{isHighlighted:this.state.isHighlighted})),null!=t.selectionColor&&(t=babelHelpers.extends({},t,{selectionColor:f(t.selectionColor)})),u.TOUCH_TARGET_DEBUG&&t.onPress&&(t=babelHelpers.extends({},t,{style:[this.props.style,{color:"magenta"}]})),this.context.isInAParentText?l.createElement(T,t):l.createElement(S,t)}}),m={top:20,left:20,right:20,bottom:30},S=b(H),T=S;T=b({validAttributes:g(p.UIView,{isHighlighted:!0}),uiViewClassName:"RCTVirtualText"}),s.exports=P},164); +__d(function(E,t,e,R){"use strict";var i=t(166),_=t(23),s=t(168),S=(t(114),t(39)),o=t(169),n=t(170),a=t(58),l=(t(110),t(118)),N=(t(37),l({NOT_RESPONDER:null,RESPONDER_INACTIVE_PRESS_IN:null,RESPONDER_INACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_PRESS_IN:null,RESPONDER_ACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_LONG_PRESS_IN:null,RESPONDER_ACTIVE_LONG_PRESS_OUT:null,ERROR:null})),T={RESPONDER_ACTIVE_PRESS_OUT:!0,RESPONDER_ACTIVE_PRESS_IN:!0},h={RESPONDER_INACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_LONG_PRESS_IN:!0},P={RESPONDER_ACTIVE_LONG_PRESS_IN:!0},O=l({DELAY:null,RESPONDER_GRANT:null,RESPONDER_RELEASE:null,RESPONDER_TERMINATED:null,ENTER_PRESS_RECT:null,LEAVE_PRESS_RECT:null,LONG_PRESS_DETECTED:null}),u={NOT_RESPONDER:{DELAY:N.ERROR,RESPONDER_GRANT:N.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:N.ERROR,RESPONDER_TERMINATED:N.ERROR,ENTER_PRESS_RECT:N.ERROR,LEAVE_PRESS_RECT:N.ERROR,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_INACTIVE_PRESS_IN:{DELAY:N.RESPONDER_ACTIVE_PRESS_IN,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_INACTIVE_PRESS_OUT:{DELAY:N.RESPONDER_ACTIVE_PRESS_OUT,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_ACTIVE_PRESS_IN:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_PRESS_OUT:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},RESPONDER_ACTIVE_LONG_PRESS_IN:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:N.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_LONG_PRESS_OUT:{DELAY:N.ERROR,RESPONDER_GRANT:N.ERROR,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:N.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:N.ERROR},error:{DELAY:N.NOT_RESPONDER,RESPONDER_GRANT:N.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:N.NOT_RESPONDER,RESPONDER_TERMINATED:N.NOT_RESPONDER,ENTER_PRESS_RECT:N.NOT_RESPONDER,LEAVE_PRESS_RECT:N.NOT_RESPONDER,LONG_PRESS_DETECTED:N.NOT_RESPONDER}},r=130,D=20,c=500,A=c-r,I=10,d={componentDidMount:function(){_.isTVOS&&(this._tvEventHandler=new o,this._tvEventHandler.enable(this,function(E,t){var e=S.findNodeHandle(E);t.dispatchConfig={},e===t.tag&&("focus"===t.eventType?E.touchableHandleActivePressIn&&E.touchableHandleActivePressIn(t):"blur"===t.eventType?E.touchableHandleActivePressOut&&E.touchableHandleActivePressOut(t):"select"===t.eventType&&E.touchableHandlePress&&E.touchableHandlePress(t))}))},componentWillUnmount:function(){this._tvEventHandler&&(this._tvEventHandler.disable(),delete this._tvEventHandler),this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout),this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout)},touchableGetInitialState:function(){return{touchable:{touchState:void 0,responderID:null}}},touchableHandleResponderTerminationRequest:function(){return!this.props.rejectResponderTermination},touchableHandleStartShouldSetResponder:function(){return!this.props.disabled},touchableLongPressCancelsPress:function(){return!0},touchableHandleResponderGrant:function(E){var t=E.currentTarget;E.persist(),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout),this.pressOutDelayTimeout=null,this.state.touchable.touchState=N.NOT_RESPONDER,this.state.touchable.responderID=t,this._receiveSignal(O.RESPONDER_GRANT,E);var e=void 0!==this.touchableGetHighlightDelayMS?Math.max(this.touchableGetHighlightDelayMS(),0):r;e=isNaN(e)?r:e,0!==e?this.touchableDelayTimeout=setTimeout(this._handleDelay.bind(this,E),e):this._handleDelay(E);var R=void 0!==this.touchableGetLongPressDelayMS?Math.max(this.touchableGetLongPressDelayMS(),10):A;R=isNaN(R)?A:R,this.longPressDelayTimeout=setTimeout(this._handleLongDelay.bind(this,E),R+e)},touchableHandleResponderRelease:function(E){this._receiveSignal(O.RESPONDER_RELEASE,E)},touchableHandleResponderTerminate:function(E){this._receiveSignal(O.RESPONDER_TERMINATED,E)},touchableHandleResponderMove:function(E){if(this.state.touchable.touchState!==N.RESPONDER_INACTIVE_PRESS_IN&&this.state.touchable.positionOnActivate){var t=this.state.touchable.positionOnActivate,e=this.state.touchable.dimensionsOnActivate,R=this.touchableGetPressRectOffset?this.touchableGetPressRectOffset():{left:D,right:D,top:D,bottom:D},i=R.left,_=R.top,s=R.right,S=R.bottom,o=this.touchableGetHitSlop?this.touchableGetHitSlop():null;o&&(i+=o.left,_+=o.top,s+=o.right,S+=o.bottom);var a=n.extractSingleTouch(E.nativeEvent),l=a&&a.pageX,T=a&&a.pageY;if(this.pressInLocation){var h=this._getDistanceBetweenPoints(l,T,this.pressInLocation.pageX,this.pressInLocation.pageY);h>I&&this._cancelLongPressDelayTimeout()}var P=l>t.left-i&&T>t.top-_&&l0,r=n&&n.length>0;return!c&&r?n[0]:c?e[0]:t}};n.exports=r},170); +__d(function(r,n,t,i){"use strict";var o=function(r,n){var t={};for(var i in r)t[i]=r[i];for(var o in n)t[o]=n[o];return t};t.exports=o},171); +__d(function(e,t,o,s){"use strict";var r=t(23),n=t(114),i=t(111),a=t(39),p=t(165),l=t(173),d=t(58),c=t(139),u=t(175),h=t(125),b=i.shape({type:i.oneOf(["RippleAndroid"]),color:i.number,borderless:i.bool}),f=i.shape({type:i.oneOf(["ThemeAttrAndroid"]),attribute:i.string.isRequired}),y=i.oneOfType([b,f]),P={top:20,left:20,right:20,bottom:30},g=c({displayName:"TouchableNativeFeedback",propTypes:babelHelpers.extends({},l.propTypes,{background:y,useForeground:i.bool}),statics:{SelectableBackground:function(){return{type:"ThemeAttrAndroid",attribute:"selectableItemBackground"}},SelectableBackgroundBorderless:function(){return{type:"ThemeAttrAndroid",attribute:"selectableItemBackgroundBorderless"}},Ripple:function(e,t){return{type:"RippleAndroid",color:h(e),borderless:t}},canUseNativeForeground:function(){return r.Version>=23}},mixins:[p.Mixin],getDefaultProps:function(){return{background:this.SelectableBackground()}},getInitialState:function(){return this.touchableGetInitialState()},componentDidMount:function(){u(this.props)},componentWillReceiveProps:function(e){u(e)},touchableHandleActivePressIn:function(e){this.props.onPressIn&&this.props.onPressIn(e),this._dispatchPressedStateChange(!0),this._dispatchHotspotUpdate(this.pressInLocation.locationX,this.pressInLocation.locationY)},touchableHandleActivePressOut:function(e){this.props.onPressOut&&this.props.onPressOut(e),this._dispatchPressedStateChange(!1)},touchableHandlePress:function(e){this.props.onPress&&this.props.onPress(e)},touchableHandleLongPress:function(e){this.props.onLongPress&&this.props.onLongPress(e)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||P},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn},touchableGetLongPressDelayMS:function(){return this.props.delayLongPress},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut},_handleResponderMove:function(e){this.touchableHandleResponderMove(e),this._dispatchHotspotUpdate(e.nativeEvent.locationX,e.nativeEvent.locationY)},_dispatchHotspotUpdate:function(e,t){d.dispatchViewManagerCommand(a.findNodeHandle(this),d.RCTView.Commands.hotspotUpdate,[e||0,t||0])},_dispatchPressedStateChange:function(e){d.dispatchViewManagerCommand(a.findNodeHandle(this),d.RCTView.Commands.setPressed,[e])},render:function(){var e,t=n.Children.only(this.props.children),o=t.props.children;p.TOUCH_TARGET_DEBUG&&"View"===t.type.displayName&&(Array.isArray(o)||(o=[o]),o.push(p.renderDebugView({color:"brown",hitSlop:this.props.hitSlop}))),this.props.useForeground&&!g.canUseNativeForeground()&&console.warn("Requested foreground ripple, but it is not available on this version of Android. Consider calling TouchableNativeFeedback.canUseNativeForeground() and using a different Touchable if the result is false.");var s=this.props.useForeground&&g.canUseNativeForeground()?"nativeForegroundAndroid":"nativeBackgroundAndroid",r=babelHelpers.extends({},t.props,(e={},babelHelpers.defineProperty(e,s,this.props.background),babelHelpers.defineProperty(e,"accessible",this.props.accessible!==!1),babelHelpers.defineProperty(e,"accessibilityLabel",this.props.accessibilityLabel),babelHelpers.defineProperty(e,"accessibilityComponentType",this.props.accessibilityComponentType),babelHelpers.defineProperty(e,"accessibilityTraits",this.props.accessibilityTraits),babelHelpers.defineProperty(e,"children",o),babelHelpers.defineProperty(e,"testID",this.props.testID),babelHelpers.defineProperty(e,"onLayout",this.props.onLayout),babelHelpers.defineProperty(e,"hitSlop",this.props.hitSlop),babelHelpers.defineProperty(e,"onStartShouldSetResponder",this.touchableHandleStartShouldSetResponder),babelHelpers.defineProperty(e,"onResponderTerminationRequest",this.touchableHandleResponderTerminationRequest),babelHelpers.defineProperty(e,"onResponderGrant",this.touchableHandleResponderGrant),babelHelpers.defineProperty(e,"onResponderMove",this._handleResponderMove),babelHelpers.defineProperty(e,"onResponderRelease",this.touchableHandleResponderRelease),babelHelpers.defineProperty(e,"onResponderTerminate",this.touchableHandleResponderTerminate),e));return n.cloneElement(t,r)}});o.exports=g},172); +__d(function(e,s,t,o){"use strict";var n=s(131),i=s(114),r=s(111),p=s(174),a=s(165),l=s(139),c=s(175),h=s(27),u=s(138),d=u.AccessibilityComponentTypes,y=u.AccessibilityTraits,b={top:20,left:20,right:20,bottom:30},f=l({displayName:"TouchableWithoutFeedback",mixins:[p,a.Mixin],propTypes:{accessible:r.bool,accessibilityComponentType:r.oneOf(d),accessibilityTraits:r.oneOfType([r.oneOf(y),r.arrayOf(r.oneOf(y))]),disabled:r.bool,onPress:r.func,onPressIn:r.func,onPressOut:r.func,onLayout:r.func,onLongPress:r.func,delayPressIn:r.number,delayPressOut:r.number,delayLongPress:r.number,pressRetentionOffset:n,hitSlop:n},getInitialState:function(){return this.touchableGetInitialState()},componentDidMount:function(){c(this.props)},componentWillReceiveProps:function(e){c(e)},touchableHandlePress:function(e){this.props.onPress&&this.props.onPress(e)},touchableHandleActivePressIn:function(e){this.props.onPressIn&&this.props.onPressIn(e)},touchableHandleActivePressOut:function(e){this.props.onPressOut&&this.props.onPressOut(e)},touchableHandleLongPress:function(e){this.props.onLongPress&&this.props.onLongPress(e)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||b},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn||0},touchableGetLongPressDelayMS:function(){return 0===this.props.delayLongPress?0:this.props.delayLongPress||500},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut||0},render:function(){var e=i.Children.only(this.props.children),s=e.props.children;h(!e.type||"Text"!==e.type.displayName,"TouchableWithoutFeedback does not work well with Text children. Wrap children in a View instead. See "+(e._owner&&e._owner.getName&&e._owner.getName()||"")),a.TOUCH_TARGET_DEBUG&&e.type&&"View"===e.type.displayName&&(s=i.Children.toArray(s),s.push(a.renderDebugView({color:"red",hitSlop:this.props.hitSlop})));var t=a.TOUCH_TARGET_DEBUG&&e.type&&"Text"===e.type.displayName?[e.props.style,{color:"red"}]:e.props.style;return i.cloneElement(e,{accessible:this.props.accessible!==!1,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,accessibilityTraits:this.props.accessibilityTraits,nativeID:this.props.nativeID,testID:this.props.testID,onLayout:this.props.onLayout,hitSlop:this.props.hitSlop,onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,onResponderGrant:this.touchableHandleResponderGrant,onResponderMove:this.touchableHandleResponderMove,onResponderRelease:this.touchableHandleResponderRelease,onResponderTerminate:this.touchableHandleResponderTerminate,style:t,children:s})}});t.exports=f},173); +__d(function(i,t,e,n){"use strict";var a="undefined"==typeof window?i:window,r=function(i,t,e){return function(n,a){var r=i(function(){t.call(this,r),n.apply(this,arguments)}.bind(this),a);return this[e]?this[e].push(r):this[e]=[r],r}},s=function(i,t){return function(e){if(this[t]){var n=this[t].indexOf(e);n!==-1&&this[t].splice(n,1)}i(e)}},c="TimerMixin_timeouts",m=s(a.clearTimeout,c),o=r(a.setTimeout,m,c),l="TimerMixin_intervals",u=s(a.clearInterval,l),h=r(a.setInterval,function(){},l),f="TimerMixin_immediates",d=s(a.clearImmediate,f),I=r(a.setImmediate,d,f),v="TimerMixin_rafs",T=s(a.cancelAnimationFrame,v),p=r(a.requestAnimationFrame,T,v),x={componentWillUnmount:function(){this[c]&&this[c].forEach(function(i){a.clearTimeout(i)}),this[c]=null,this[l]&&this[l].forEach(function(i){a.clearInterval(i)}),this[l]=null,this[f]&&this[f].forEach(function(i){a.clearImmediate(i)}),this[f]=null,this[v]&&this[v].forEach(function(i){a.cancelAnimationFrame(i)}),this[v]=null},setTimeout:o,clearTimeout:m,setInterval:h,clearInterval:u,setImmediate:I,clearImmediate:d,requestAnimationFrame:p,cancelAnimationFrame:T};e.exports=x},174); +__d(function(e,n,s,t){"use strict";var a=n(13),o=function(e){a(!(e.delayPressIn<0||e.delayPressOut<0||e.delayLongPress<0),"Touchable components cannot have negative delay properties")};s.exports=o},175); +__d(function(t,e,s,i){"use strict";var o=e(177),n=e(202),a=e(38),r=e(114),p=e(111),c=e(174),l=e(165),h=e(173),u=e(139),y=e(175),d=e(55),b={top:20,left:20,right:20,bottom:30},f=u({displayName:"TouchableOpacity",mixins:[c,l.Mixin,a],propTypes:babelHelpers.extends({},h.propTypes,{activeOpacity:p.number,tvParallaxProperties:p.object}),getDefaultProps:function(){return{activeOpacity:.2}},getInitialState:function(){return babelHelpers.extends({},this.touchableGetInitialState(),{anim:new o.Value(this._getChildStyleOpacityWithDefault())})},componentDidMount:function(){y(this.props)},componentWillReceiveProps:function(t){y(t)},setOpacityTo:function(t,e){o.timing(this.state.anim,{toValue:t,duration:e,easing:n.inOut(n.quad),useNativeDriver:!0}).start()},touchableHandleActivePressIn:function(t){"onResponderGrant"===t.dispatchConfig.registrationName?this._opacityActive(0):this._opacityActive(150),this.props.onPressIn&&this.props.onPressIn(t)},touchableHandleActivePressOut:function(t){this._opacityInactive(250),this.props.onPressOut&&this.props.onPressOut(t)},touchableHandlePress:function(t){this.props.onPress&&this.props.onPress(t)},touchableHandleLongPress:function(t){this.props.onLongPress&&this.props.onLongPress(t)},touchableGetPressRectOffset:function(){return this.props.pressRetentionOffset||b},touchableGetHitSlop:function(){return this.props.hitSlop},touchableGetHighlightDelayMS:function(){return this.props.delayPressIn||0},touchableGetLongPressDelayMS:function(){return 0===this.props.delayLongPress?0:this.props.delayLongPress||500},touchableGetPressOutDelayMS:function(){return this.props.delayPressOut},_opacityActive:function(t){this.setOpacityTo(this.props.activeOpacity,t)},_opacityInactive:function(t){this.setOpacityTo(this._getChildStyleOpacityWithDefault(),t)},_getChildStyleOpacityWithDefault:function(){var t=d(this.props.style)||{};return void 0==t.opacity?1:t.opacity},render:function(){return r.createElement(o.View,{accessible:this.props.accessible!==!1,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,accessibilityTraits:this.props.accessibilityTraits,style:[this.props.style,{opacity:this.state.anim}],nativeID:this.props.nativeID,testID:this.props.testID,onLayout:this.props.onLayout,isTVSelectable:!0,tvParallaxProperties:this.props.tvParallaxProperties,hitSlop:this.props.hitSlop,onStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,onResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,onResponderGrant:this.touchableHandleResponderGrant,onResponderMove:this.touchableHandleResponderMove,onResponderRelease:this.touchableHandleResponderRelease,onResponderTerminate:this.touchableHandleResponderTerminate},this.props.children,l.renderDebugView({color:"cyan",hitSlop:this.props.hitSlop}))}});s.exports=f},176); +__d(function(e,t,n,o){"use strict";var a=t(178),r=t(205),c=t(164),i=t(110),m=void 0,d={View:a.createAnimatedComponent(i),Text:a.createAnimatedComponent(c),Image:a.createAnimatedComponent(r),get ScrollView(){return m||(m=a.createAnimatedComponent(t(207))),m}};babelHelpers.extends(d,a),n.exports=d},177); +__d(function(n,t,e,i){"use strict";function r(n,t){return n?n instanceof u?(n.__addListener(t),n):function(){"function"==typeof n&&n.apply(void 0,arguments),t.apply(void 0,arguments)}:t}function o(n,t){n&&n instanceof u&&n.__removeListener(t)}var a=t(179),u=a.AnimatedEvent,s=a.attachNativeEvent,c=t(187),f=t(188),v=t(189),p=t(181),l=t(190),d=t(191),g=t(182),h=t(192),m=t(195),_=t(180),N=t(196),w=t(197),y=t(199),E=t(201),L=t(204),A=function(n,t){return new c(n,t)},D=function(n,t){return new v(n,t)},b=function(n,t){return new d(n,t)},x=function(n,t){return new l(n,t)},U=function(n,t,e){return new f(n,t,e)},k=function(n,t){return n&&t.onComplete?function(){t.onComplete&&t.onComplete.apply(t,arguments),n&&n.apply(void 0,arguments)}:n||t.onComplete},V=function(n,t,e){if(n instanceof N){var i=babelHelpers.extends({},t),r=babelHelpers.extends({},t);for(var o in t){var a=t[o],u=a.x,s=a.y;void 0!==u&&void 0!==s&&(i[o]=u,r[o]=s)}var c=e(n.x,i),f=e(n.y,r);return q([c,f],{stopTogether:!1})}return null},C=function n(t,e){var i=function(n,t,e){e=k(e,t);var i=n,r=t;i.stopTracking(),t.toValue instanceof g?i.track(new m(i,t.toValue,y,r,e)):i.animate(new y(r),e)};return V(t,e,n)||{start:function(n){function t(t){return n.apply(this,arguments)}return t.toString=function(){return n.toString()},t}(function(n){i(t,e,n)}),stop:function(){t.stopAnimation()},reset:function(){t.resetAnimation()},_startNativeLoop:function(n){var r=babelHelpers.extends({},e,{iterations:n});i(t,r)},_isUsingNativeDriver:function(){return e.useNativeDriver||!1}}},H=function n(t,e){var i=function(n,t,e){e=k(e,t);var i=n,r=t;i.stopTracking(),t.toValue instanceof g?i.track(new m(i,t.toValue,E,r,e)):i.animate(new E(r),e)};return V(t,e,n)||{start:function(n){function t(t){return n.apply(this,arguments)}return t.toString=function(){return n.toString()},t}(function(n){i(t,e,n)}),stop:function(){t.stopAnimation()},reset:function(){t.resetAnimation()},_startNativeLoop:function(n){var r=babelHelpers.extends({},e,{iterations:n});i(t,r)},_isUsingNativeDriver:function(){return e.useNativeDriver||!1}}},S=function n(t,e){var i=function(n,t,e){e=k(e,t);var i=n,r=t;i.stopTracking(),i.animate(new w(r),e)};return V(t,e,n)||{start:function(n){function t(t){return n.apply(this,arguments)}return t.toString=function(){return n.toString()},t}(function(n){i(t,e,n)}),stop:function(){t.stopAnimation()},reset:function(){t.resetAnimation()},_startNativeLoop:function(n){var r=babelHelpers.extends({},e,{iterations:n});i(t,r)},_isUsingNativeDriver:function(){return e.useNativeDriver||!1}}},T=function(n){var t=0;return{start:function(e){var i=function i(r){return r.finished?(t++,t===n.length?void(e&&e(r)):void n[t].start(i)):void(e&&e(r))};0===n.length?e&&e({finished:!0}):n[t].start(i)},stop:function(){t1&&void 0!==arguments[1]?arguments[1]:{},e=t.iterations,i=void 0===e?-1:e,r=!1,o=0;return{start:function(t){var e=function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{finished:!0};r||o===i||a.finished===!1?t&&t(a):(o++,n.reset(),n.start(e))};n&&0!==i?n._isUsingNativeDriver()?n._startNativeLoop(i):e():t&&t({finished:!0})},stop:function(){r=!0,n.stop()},reset:function(){o=0,r=!1,n.reset()},_startNativeLoop:function(){throw new Error("Loops run using the native driver cannot contain Animated.loop animations")},_isUsingNativeDriver:function(){return n._isUsingNativeDriver()}}},P=function(n,t){var e=new u(n,t);return e.__isNative?e:e.__getHandler()};e.exports={Value:_,ValueXY:N,Interpolation:p,Node:g,decay:S,timing:H,spring:C,add:A,divide:D,multiply:b,modulo:x,diffClamp:U,delay:F,sequence:T,parallel:q,stagger:I,loop:O,event:P,createAnimatedComponent:L,attachNativeEvent:s,forkEvent:r,unforkEvent:o,__PropsOnlyForTests:h}},178); +__d(function(e,t,n,i){"use strict";function a(e,t,n){var i=[],a=function e(t,n){if(t instanceof s)t.__makeNative(),i.push({nativeEventPath:n,animatedValueTag:t.__getNativeTag()});else if("object"==typeof t)for(var a in t)e(t[a],n.concat(a))};l(n[0]&&n[0].nativeEvent,"Native driven events only support animated values contained inside `nativeEvent`."),a(n[0].nativeEvent,[]);var o=v.findNodeHandle(e);return i.forEach(function(e){r.API.addAnimatedEventToView(o,t,e)}),{detach:function(){i.forEach(function(e){r.API.removeAnimatedEventFromView(o,t,e.animatedValueTag)})}}}var s=t(180),r=t(183),v=t(39),l=t(13),o=t(183),c=o.shouldUseNativeDriver,_=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};babelHelpers.classCallCheck(this,e),this._listeners=[],this._argMapping=t,n.listener&&this.__addListener(n.listener),this._callListeners=this._callListeners.bind(this),this._attachedEvent=null,this.__isNative=c(n)}return babelHelpers.createClass(e,[{key:"__addListener",value:function(e){this._listeners.push(e)}},{key:"__removeListener",value:function(e){this._listeners=this._listeners.filter(function(t){return t!==e})}},{key:"__attach",value:function(e,t){l(this.__isNative,"Only native driven events need to be attached."),this._attachedEvent=a(e,t,this._argMapping)}},{key:"__detach",value:function(e,t){l(this.__isNative,"Only native driven events need to be detached."),this._attachedEvent&&this._attachedEvent.detach()}},{key:"__getHandler",value:function(){var e=this;return this.__isNative?this._callListeners:function(){for(var t=arguments.length,n=Array(t),i=0;in){if("identity"===u)return p;"clamp"===u&&(p=n)}return a===r?a:e===n?t<=e?a:r:(e===-(1/0)?p=-p:n===1/0?p-=e:p=(p-e)/(n-e),p=i(p),a===-(1/0)?p=-p:r===1/0?p+=a:p=p*(r-a)+a,p)}function o(t){var e=_(t);if(null===e)return t;e=e||0;var n=(4278190080&e)>>>24,a=(16711680&e)>>>16,r=(65280&e)>>>8,i=(255&e)/255;return"rgba("+n+", "+a+", "+r+", "+i+")"}function u(t){var e=t.outputRange;g(e.length>=2,"Bad output range"),e=e.map(o),l(e);var n=e[0].match(m).map(function(){return[]});e.forEach(function(t){t.match(m).forEach(function(t,e){n[e].push(+t)})});var a=e[0].match(m).map(function(e,a){return r(babelHelpers.extends({},t,{outputRange:n[a]}))}),i=p(e[0]);return function(t){var n=0;return e[0].replace(m,function(){var e=+a[n++](t),r=i&&n<4?Math.round(e):Math.round(1e3*e)/1e3;return String(r)})}}function p(t){return"string"==typeof t&&t.startsWith("rgb")}function l(t){for(var e=t[0].replace(m,""),n=1;n=t);++n);return n-1}function f(t){g(t.length>=2,"inputRange must have at least 2 elements");for(var e=1;e=t[e-1],"inputRange must be monotonically increasing "+t)}function s(t,e){g(e.length>=2,t+" must have at least 2 elements"),g(2!==e.length||e[0]!==-(1/0)||e[1]!==1/0,t+"cannot be ]-infinity;+infinity[ "+e)}var h=(e(182),e(184)),g=(e(183),e(13)),_=e(37),v=function(t){return t},m=/[0-9\.-]+/g,y=function(t){function e(t,n){babelHelpers.classCallCheck(this,e);var a=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a._parent=t,a._config=n,a._interpolation=r(n),a}return babelHelpers.inherits(e,t),babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._parent.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var t=this._parent.__getValue();return g("number"==typeof t,"Cannot interpolate an input which is not a number."),this._interpolation(t)}},{key:"interpolate",value:function(t){return new e(this,t)}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__transformDataType",value:function(t){return t.map(function(t){if("string"!=typeof t)return t;if(/deg$/.test(t)){var e=parseFloat(t)||0,n=e*Math.PI/180;return n}return parseFloat(t)||0})}},{key:"__getNativeConfig",value:function(){return{inputRange:this._config.inputRange,outputRange:this.__transformDataType(this._config.outputRange),extrapolateLeft:this._config.extrapolateLeft||this._config.extrapolate||"extend",extrapolateRight:this._config.extrapolateRight||this._config.extrapolate||"extend",type:"interpolation"}}}]),e}(h);y.__createInterpolation=r,n.exports=y},181); +__d(function(e,t,a,n){"use strict";var i=t(183),_=t(13),o=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,[{key:"__attach",value:function(){}},{key:"__detach",value:function(){this.__isNative&&null!=this.__nativeTag&&(i.API.dropAnimatedNode(this.__nativeTag),this.__nativeTag=void 0)}},{key:"__getValue",value:function(){}},{key:"__getAnimatedValue",value:function(){return this.__getValue()}},{key:"__addChild",value:function(e){}},{key:"__removeChild",value:function(e){}},{key:"__getChildren",value:function(){return[]}},{key:"__makeNative",value:function(){if(!this.__isNative)throw new Error('This node cannot be made a "native" animated node')}},{key:"__getNativeTag",value:function(){if(i.assertNativeAnimatedModule(),_(this.__isNative,'Attempt to get native tag from node not marked as "native"'),null==this.__nativeTag){var e=i.generateNewNodeTag();i.API.createAnimatedNode(e,this.__getNativeConfig()),this.__nativeTag=e}return this.__nativeTag}},{key:"__getNativeConfig",value:function(){throw new Error("This JS animated node type cannot be used as native animated node")}},{key:"toJSON",value:function(){return this.__getValue()}}]),e}();a.exports=o},182); +__d(function(e,t,n,o){"use strict";function i(e){e.forEach(function(e){if(!g.hasOwnProperty(e.property))throw new Error("Property '"+e.property+"' is not supported by native animated module")})}function a(e){for(var t in e)if(!w.hasOwnProperty(t))throw new Error("Style property '"+t+"' is not supported by native animated module")}function r(e){var t={inputRange:!0,outputRange:!0,extrapolate:!0,extrapolateRight:!0,extrapolateLeft:!0};for(var n in e)if(!t.hasOwnProperty(n))throw new Error("Interpolation property '"+n+"' is not supported by native animated module")}function d(){return p++}function s(){return A++}function c(){l(u,"Native animated module is not available")}function m(e){return e.useNativeDriver&&!u?(h||(console.warn("Animated: `useNativeDriver` is not supported because the native animated module is missing. Falling back to JS-based animation. To resolve this, add `RCTAnimation` module to this app, or remove `useNativeDriver`. More info: https://github.com/facebook/react-native/issues/11094#issuecomment-263240420"),h=!0),!1):e.useNativeDriver||!1}var u=t(15).NativeAnimatedModule,f=t(80),l=t(13),p=1,A=1,N=void 0,v={createAnimatedNode:function(e,t){c(),u.createAnimatedNode(e,t)},startListeningToAnimatedNodeValue:function(e){c(),u.startListeningToAnimatedNodeValue(e)},stopListeningToAnimatedNodeValue:function(e){c(),u.stopListeningToAnimatedNodeValue(e)},connectAnimatedNodes:function(e,t){c(),u.connectAnimatedNodes(e,t)},disconnectAnimatedNodes:function(e,t){c(),u.disconnectAnimatedNodes(e,t)},startAnimatingNode:function(e,t,n,o){c(),u.startAnimatingNode(e,t,n,o)},stopAnimation:function(e){c(),u.stopAnimation(e)},setAnimatedNodeValue:function(e,t){c(),u.setAnimatedNodeValue(e,t)},setAnimatedNodeOffset:function(e,t){c(),u.setAnimatedNodeOffset(e,t)},flattenAnimatedNodeOffset:function(e){c(),u.flattenAnimatedNodeOffset(e)},extractAnimatedNodeOffset:function(e){c(),u.extractAnimatedNodeOffset(e)},connectAnimatedNodeToView:function(e,t){c(),u.connectAnimatedNodeToView(e,t)},disconnectAnimatedNodeFromView:function(e,t){c(),u.disconnectAnimatedNodeFromView(e,t)},dropAnimatedNode:function(e){c(),u.dropAnimatedNode(e)},addAnimatedEventToView:function(e,t,n){c(),u.addAnimatedEventToView(e,t,n)},removeAnimatedEventFromView:function(e,t,n){c(),u.removeAnimatedEventFromView(e,t,n)}},w={opacity:!0,transform:!0,scaleX:!0,scaleY:!0,translateX:!0,translateY:!0},g={translateX:!0,translateY:!0,scale:!0,scaleX:!0,scaleY:!0,rotate:!0,rotateX:!0,rotateY:!0,perspective:!0},h=!1;n.exports={API:v,validateStyles:a,validateTransform:i,validateInterpolation:r,generateNewNodeTag:d,generateNewAnimationId:s,assertNativeAnimatedModule:c,shouldUseNativeDriver:m,get nativeEventEmitter(){return N||(N=new f(u)),N}}},183); +__d(function(e,t,i,a){"use strict";var _=t(182),n=t(183),r=function(e){function t(){babelHelpers.classCallCheck(this,t);var e=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e._children=[],e}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"__makeNative",value:function(){if(!this.__isNative){this.__isNative=!0;for(var e=this._children,t=Array.isArray(e),i=0,e=t?e:e["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var a;if(t){if(i>=e.length)break;a=e[i++]}else{if(i=e.next(),i.done)break;a=i.value}var _=a;_.__makeNative(),n.API.connectAnimatedNodes(this.__getNativeTag(),_.__getNativeTag())}}}},{key:"__addChild",value:function(e){0===this._children.length&&this.__attach(),this._children.push(e),this.__isNative&&(e.__makeNative(),n.API.connectAnimatedNodes(this.__getNativeTag(),e.__getNativeTag()))}},{key:"__removeChild",value:function(e){var t=this._children.indexOf(e);return t===-1?void console.warn("Trying to remove a child that doesn't exist"):(this.__isNative&&e.__isNative&&n.API.disconnectAnimatedNodes(this.__getNativeTag(),e.__getNativeTag()),this._children.splice(t,1),void(0===this._children.length&&this.__detach()))}},{key:"__getChildren",value:function(){return this._children}}]),t}(_);i.exports=r},184); +__d(function(e,n,t,r){"use strict";function a(){b||(b=L>0?setTimeout(o,0+p):setImmediate(o))}function o(){b=0;var e=w.size;T.forEach(function(e){return w.add(e)}),E.forEach(function(e){return w.delete(e)});var n=w.size;if(0!==e&&0===n?m.emit(h.Events.interactionComplete):0===e&&0!==n&&m.emit(h.Events.interactionStart),0===n)for(;k.hasTasksToProcess();)if(k.processNext(),L>0&&i.getEventLoopRunningTime()>=L){a();break}T.clear(),E.clear()}var i=n(16),c=n(31),s=n(66),d=n(186),u=n(106),l=n(13),f=n(118),m=new c,p=0,v=!1,h={Events:f({interactionStart:!0,interactionComplete:!0}),runAfterInteractions:function(e){var n=[],t=new Promise(function(t){a(),e&&n.push(e),n.push({run:t,name:"resolve "+(e&&e.name||"?")}),k.enqueueTasks(n)});return{then:t.then.bind(t),done:function(){return t.done?t.done.apply(t,arguments):void console.warn("Tried to call done when not supported by current Promise implementation.")},cancel:function(){k.cancelTasks(n)}}},createInteractionHandle:function(){v&&u("create interaction handle"),a();var e=++I;return T.add(e),e},clearInteractionHandle:function(e){v&&u("clear interaction handle"),l(!!e,"Must provide a handle to clear."),a(),T.delete(e),E.add(e)},addListener:m.addListener.bind(m),setDeadline:function(e){L=e}},w=new s,T=new s,E=new s,k=new d({onMoreTasks:a}),b=0,I=0,L=-1;t.exports=h},185); +__d(function(e,t,s,u){"use strict";var n=t(106),a=t(13),r=!1,i=function(){function e(t){var s=t.onMoreTasks;babelHelpers.classCallCheck(this,e),this._onMoreTasks=s,this._queueStack=[{tasks:[],popable:!1}]}return babelHelpers.createClass(e,[{key:"enqueue",value:function(e){this._getCurrentQueue().push(e)}},{key:"enqueueTasks",value:function(e){var t=this;e.forEach(function(e){return t.enqueue(e)})}},{key:"cancelTasks",value:function(e){this._queueStack=this._queueStack.map(function(t){return babelHelpers.extends({},t,{tasks:t.tasks.filter(function(t){return e.indexOf(t)===-1})})}).filter(function(e,t){return e.tasks.length>0||0===t})}},{key:"hasTasksToProcess",value:function(){return this._getCurrentQueue().length>0}},{key:"processNext",value:function(){var e=this._getCurrentQueue();if(e.length){var t=e.shift();try{t.gen?(r&&n("genPromise for task "+t.name),this._genPromise(t)):t.run?(r&&n("run task "+t.name),t.run()):(a("function"==typeof t,"Expected Function, SimpleTask, or PromiseTask, but got:\n"+JSON.stringify(t,null,2)),r&&n("run anonymous task"),t())}catch(e){throw e.message="TaskQueue: Error with task "+(t.name||"")+": "+e.message,e}}}},{key:"_getCurrentQueue",value:function(){var e=this._queueStack.length-1,t=this._queueStack[e];return t.popable&&0===t.tasks.length&&this._queueStack.length>1?(this._queueStack.pop(),r&&n("popped queue: ",{stackIdx:e,queueStackSize:this._queueStack.length}),this._getCurrentQueue()):t.tasks}},{key:"_genPromise",value:function(e){var t=this;this._queueStack.push({tasks:[],popable:!1});var s=this._queueStack.length-1;r&&n("push new queue: ",{stackIdx:s}),r&&n("exec gen task "+e.name),e.gen().then(function(){r&&n("onThen for gen task "+e.name,{stackIdx:s,queueStackSize:t._queueStack.length}),t._queueStack[s].popable=!0,t.hasTasksToProcess()&&t._onMoreTasks()}).catch(function(t){throw t.message="TaskQueue: Error resolving Promise in task "+e.name+": "+t.message,t}).done()}}]),e}();s.exports=i},186); +__d(function(e,t,_,a){"use strict";var i=t(181),o=(t(182),t(180)),r=t(184),s=function(e){function t(e,_){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a._a="number"==typeof e?new o(e):e,a._b="number"==typeof _?new o(_):_,a}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()+this._b.__getValue()}},{key:"interpolate",value:function(e){return new i(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:"addition",input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t}(r);_.exports=s},187); +__d(function(t,e,a,_){"use strict";var i=e(181),l=(e(182),e(184)),s=function(t){function e(t,a,_){babelHelpers.classCallCheck(this,e);var i=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i._a=t,i._min=a,i._max=_,i._value=i._lastValue=i._a.__getValue(),i}return babelHelpers.inherits(e,t),babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._a.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"interpolate",value:function(t){return new i(this,t)}},{key:"__getValue",value:function(){var t=this._a.__getValue(),e=t-this._lastValue;return this._lastValue=t,this._value=Math.min(Math.max(this._value+e,this._min),this._max),this._value}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:"diffclamp",input:this._a.__getNativeTag(),min:this._min,max:this._max}}}]),e}(l);a.exports=s},188); +__d(function(e,t,i,_){"use strict";var a=t(181),o=(t(182),t(180)),r=t(184),s=function(e){function t(e,i){babelHelpers.classCallCheck(this,t);var _=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return _._a="number"==typeof e?new o(e):e,_._b="number"==typeof i?new o(i):i,_}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var e=this._a.__getValue(),t=this._b.__getValue();return 0===t&&console.error("Detected division by zero in AnimatedDivision"),e/t}},{key:"interpolate",value:function(e){return new a(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:"division",input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t}(r);i.exports=s},189); +__d(function(t,e,_,a){"use strict";var o=e(181),s=(e(182),e(184)),i=function(t){function e(t,_){babelHelpers.classCallCheck(this,e);var a=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a._a=t,a._modulus=_,a}return babelHelpers.inherits(e,t),babelHelpers.createClass(e,[{key:"__makeNative",value:function(){this._a.__makeNative(),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return(this._a.__getValue()%this._modulus+this._modulus)%this._modulus}},{key:"interpolate",value:function(t){return new o(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:"modulus",input:this._a.__getNativeTag(),modulus:this._modulus}}}]),e}(s);_.exports=i},190); +__d(function(e,t,_,i){"use strict";var a=t(181),o=(t(182),t(180)),r=t(184),l=function(e){function t(e,_){babelHelpers.classCallCheck(this,t);var i=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i._a="number"==typeof e?new o(e):e,i._b="number"==typeof _?new o(_):_,i}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()*this._b.__getValue()}},{key:"interpolate",value:function(e){return new a(this,e)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:"multiplication",input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),t}(r);_.exports=l},191); +__d(function(e,t,i,a){"use strict";var n=t(179),s=n.AnimatedEvent,_=t(182),o=t(193),r=t(183),c=t(39),l=t(13),v=function(e){function t(e,i){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.style&&(e=babelHelpers.extends({},e,{style:new o(e.style)})),a._props=e,a._callback=i,a.__attach(),a}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"__getValue",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof _?(!i.__isNative||i instanceof o)&&(e[t]=i.__getValue()):i instanceof s?e[t]=i.__getHandler():e[t]=i}return e}},{key:"__getAnimatedValue",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof _&&(e[t]=i.__getAnimatedValue())}return e}},{key:"__attach",value:function(){for(var e in this._props){var t=this._props[e];t instanceof _&&t.__addChild(this)}}},{key:"__detach",value:function(){this.__isNative&&this._animatedView&&this.__disconnectAnimatedView();for(var e in this._props){var i=this._props[e];i instanceof _&&i.__removeChild(this)}babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._callback()}},{key:"__makeNative",value:function(){if(!this.__isNative){this.__isNative=!0;for(var e in this._props){var t=this._props[e];t instanceof _&&t.__makeNative()}this._animatedView&&this.__connectAnimatedView()}}},{key:"setNativeView",value:function(e){this._animatedView!==e&&(this._animatedView=e,this.__isNative&&this.__connectAnimatedView())}},{key:"__connectAnimatedView",value:function(){l(this.__isNative,'Expected node to be marked as "native"');var e=c.findNodeHandle(this._animatedView);l(null!=e,"Unable to locate attached view in the native tree"),r.API.connectAnimatedNodeToView(this.__getNativeTag(),e)}},{key:"__disconnectAnimatedView",value:function(){l(this.__isNative,'Expected node to be marked as "native"');var e=c.findNodeHandle(this._animatedView);l(null!=e,"Unable to locate attached view in the native tree"),r.API.disconnectAnimatedNodeFromView(this.__getNativeTag(),e)}},{key:"__getNativeConfig",value:function(){var e={};for(var t in this._props){var i=this._props[t];i instanceof _&&(e[t]=i.__getNativeTag())}return{type:"props",props:e}}}]),t}(_);i.exports=v},192); +__d(function(e,t,a,s){"use strict";var r=t(182),l=t(194),i=t(184),n=t(183),_=t(55),o=function(e){function t(e){babelHelpers.classCallCheck(this,t);var a=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e=_(e)||{},e.transform&&(e=babelHelpers.extends({},e,{transform:new l(e.transform)})),a._style=e,a}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"_walkStyleAndGetValues",value:function(e){var t={};for(var a in e){var s=e[a];s instanceof r?s.__isNative||(t[a]=s.__getValue()):s&&!Array.isArray(s)&&"object"==typeof s?t[a]=this._walkStyleAndGetValues(s):t[a]=s}return t}},{key:"__getValue",value:function(){return this._walkStyleAndGetValues(this._style)}},{key:"_walkStyleAndGetAnimatedValues",value:function(e){var t={};for(var a in e){var s=e[a];s instanceof r?t[a]=s.__getAnimatedValue():s&&!Array.isArray(s)&&"object"==typeof s&&(t[a]=this._walkStyleAndGetAnimatedValues(s))}return t}},{key:"__getAnimatedValue",value:function(){return this._walkStyleAndGetAnimatedValues(this._style)}},{key:"__attach",value:function(){for(var e in this._style){var t=this._style[e];t instanceof r&&t.__addChild(this)}}},{key:"__detach",value:function(){for(var e in this._style){var a=this._style[e];a instanceof r&&a.__removeChild(this)}babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__detach",this).call(this)}},{key:"__makeNative",value:function(){babelHelpers.get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"__makeNative",this).call(this);for(var e in this._style){var a=this._style[e];a instanceof r&&a.__makeNative()}}},{key:"__getNativeConfig",value:function(){var e={};for(var t in this._style)this._style[t]instanceof r&&(e[t]=this._style[t].__getNativeTag());return n.validateStyles(e),{type:"style",style:e}}}]),t}(i);a.exports=o},193); +__d(function(t,e,r,a){"use strict";var n=e(182),o=e(184),i=e(183),s=function(t){function e(t){babelHelpers.classCallCheck(this,e);var r=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r._transforms=t,r}return babelHelpers.inherits(e,t),babelHelpers.createClass(e,[{key:"__makeNative",value:function(){babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__makeNative",this).call(this),this._transforms.forEach(function(t){for(var e in t){var r=t[e];r instanceof n&&r.__makeNative()}})}},{key:"__getValue",value:function(){return this._transforms.map(function(t){var e={};for(var r in t){var a=t[r];a instanceof n?e[r]=a.__getValue():e[r]=a}return e})}},{key:"__getAnimatedValue",value:function(){return this._transforms.map(function(t){var e={};for(var r in t){var a=t[r];a instanceof n?e[r]=a.__getAnimatedValue():e[r]=a}return e})}},{key:"__attach",value:function(){var t=this;this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n&&a.__addChild(t)}})}},{key:"__detach",value:function(){var t=this;this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n&&a.__removeChild(t)}}),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){var t=[];return this._transforms.forEach(function(e){for(var r in e){var a=e[r];a instanceof n?t.push({type:"animated",property:r,nodeTag:a.__getNativeTag()}):t.push({type:"static",property:r,value:a})}}),i.validateTransform(t),{type:"transform",transforms:t}}}]),e}(o);r.exports=s},194); +__d(function(t,e,a,i){"use strict";var _=(e(180),e(182)),l=function(t){function e(t,a,i,_,l){babelHelpers.classCallCheck(this,e);var n=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return n._value=t,n._parent=a,n._animationClass=i,n._animationConfig=_,n._callback=l,n.__attach(),n}return babelHelpers.inherits(e,t),babelHelpers.createClass(e,[{key:"__getValue",value:function(){return this._parent.__getValue()}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._value.animate(new this._animationClass(babelHelpers.extends({},this._animationConfig,{toValue:this._animationConfig.toValue.__getValue()})),this._callback)}}]),e}(_);a.exports=l},195); +__d(function(e,t,s,i){"use strict";var n=t(180),a=t(184),r=t(13),l=1,u=function(e){function t(e){babelHelpers.classCallCheck(this,t);var s=babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),i=e||{x:0,y:0};return"number"==typeof i.x&&"number"==typeof i.y?(s.x=new n(i.x),s.y=new n(i.y)):(r(i.x instanceof n&&i.y instanceof n,"AnimatedValueXY must be initalized with an object of numbers or AnimatedValues."),s.x=i.x,s.y=i.y),s._listeners={},s}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"setValue",value:function(e){this.x.setValue(e.x),this.y.setValue(e.y)}},{key:"setOffset",value:function(e){this.x.setOffset(e.x),this.y.setOffset(e.y)}},{key:"flattenOffset",value:function(){this.x.flattenOffset(),this.y.flattenOffset()}},{key:"extractOffset",value:function(){this.x.extractOffset(),this.y.extractOffset()}},{key:"__getValue",value:function(){return{x:this.x.__getValue(),y:this.y.__getValue()}}},{key:"resetAnimation",value:function(e){this.x.resetAnimation(),this.y.resetAnimation(),e&&e(this.__getValue())}},{key:"stopAnimation",value:function(e){this.x.stopAnimation(),this.y.stopAnimation(),e&&e(this.__getValue())}},{key:"addListener",value:function(e){var t=this,s=String(l++),i=function(s){s.value;e(t.__getValue())};return this._listeners[s]={x:this.x.addListener(i),y:this.y.addListener(i)},s}},{key:"removeListener",value:function(e){this.x.removeListener(this._listeners[e].x),this.y.removeListener(this._listeners[e].y),delete this._listeners[e]}},{key:"removeAllListeners",value:function(){this.x.removeAllListeners(),this.y.removeAllListeners(),this._listeners={}}},{key:"getLayout",value:function(){return{left:this.x,top:this.y}}},{key:"getTranslateTransform",value:function(){return[{translateX:this.x},{translateY:this.y}]}}]),t}(a);s.exports=u},196); +__d(function(t,e,i,a){"use strict";var s=e(198),n=e(183),o=n.shouldUseNativeDriver,r=function(e){function i(t){babelHelpers.classCallCheck(this,i);var e=babelHelpers.possibleConstructorReturn(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e._deceleration=void 0!==t.deceleration?t.deceleration:.998,e._velocity=t.velocity,e._useNativeDriver=o(t),e.__isInteraction=void 0===t.isInteraction||t.isInteraction,e.__iterations=void 0!==t.iterations?t.iterations:1,e}return babelHelpers.inherits(i,e),babelHelpers.createClass(i,[{key:"__getNativeAnimationConfig",value:function(){return{type:"decay",deceleration:this._deceleration,velocity:this._velocity,iterations:this.__iterations}}},{key:"start",value:function(t,e,i,a,s){this.__active=!0,this._lastValue=t,this._fromValue=t,this._onUpdate=e,this.__onEnd=i,this._startTime=Date.now(),this._useNativeDriver?this.__startNativeAnimation(s):this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))}},{key:"onUpdate",value:function(){var t=Date.now(),e=this._fromValue+this._velocity/(1-this._deceleration)*(1-Math.exp(-(1-this._deceleration)*(t-this._startTime)));return this._onUpdate(e),Math.abs(this._lastValue-e)<.1?void this.__debouncedOnEnd({finished:!0}):(this._lastValue=e,void(this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this)))))}},{key:"stop",value:function(){babelHelpers.get(i.prototype.__proto__||Object.getPrototypeOf(i.prototype),"stop",this).call(this),this.__active=!1,t.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),i}(s);i.exports=r},197); +__d(function(t,n,e,i){"use strict";var a=n(183),o=function(){function t(){babelHelpers.classCallCheck(this,t)}return babelHelpers.createClass(t,[{key:"start",value:function(t,n,e,i,a){}},{key:"stop",value:function(){this.__nativeId&&a.API.stopAnimation(this.__nativeId)}},{key:"__getNativeAnimationConfig",value:function(){throw new Error("This animation type cannot be offloaded to native")}},{key:"__debouncedOnEnd",value:function(t){var n=this.__onEnd;this.__onEnd=null,n&&n(t)}},{key:"__startNativeAnimation",value:function(t){t.__makeNative(),this.__nativeId=a.generateNewAnimationId(),a.API.startAnimatingNode(this.__nativeId,t.__getNativeTag(),this.__getNativeAnimationConfig(),this.__debouncedOnEnd.bind(this))}}]),t}();e.exports=o},198); +__d(function(t,i,e,s){"use strict";function o(t,i){return void 0===t||null===t?i:t}var n=(i(180),i(196),i(198)),a=i(200),l=i(13),r=i(183),h=r.shouldUseNativeDriver,_=function(i){function e(t){babelHelpers.classCallCheck(this,e);var i=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));i._overshootClamping=o(t.overshootClamping,!1),i._restDisplacementThreshold=o(t.restDisplacementThreshold,.001),i._restSpeedThreshold=o(t.restSpeedThreshold,.001),i._initialVelocity=t.velocity,i._lastVelocity=o(t.velocity,0),i._toValue=t.toValue,i._delay=o(t.delay,0),i._useNativeDriver=h(t),i.__isInteraction=void 0===t.isInteraction||t.isInteraction,i.__iterations=void 0!==t.iterations?t.iterations:1;var s=void 0;return void 0!==t.bounciness||void 0!==t.speed?(l(void 0===t.tension&&void 0===t.friction,"You can only define bounciness/speed or tension/friction but not both"),s=a.fromBouncinessAndSpeed(o(t.bounciness,8),o(t.speed,12))):s=a.fromOrigamiTensionAndFriction(o(t.tension,40),o(t.friction,7)),i._tension=s.tension,i._friction=s.friction,i}return babelHelpers.inherits(e,i),babelHelpers.createClass(e,[{key:"__getNativeAnimationConfig",value:function(){return{type:"spring",overshootClamping:this._overshootClamping,restDisplacementThreshold:this._restDisplacementThreshold,restSpeedThreshold:this._restSpeedThreshold,tension:this._tension,friction:this._friction,initialVelocity:o(this._initialVelocity,this._lastVelocity),toValue:this._toValue,iterations:this.__iterations}}},{key:"start",value:function t(i,s,o,n,a){var l=this;if(this.__active=!0,this._startPosition=i,this._lastPosition=this._startPosition,this._onUpdate=s,this.__onEnd=o,this._lastTime=Date.now(),n instanceof e){var r=n.getInternalState();this._lastPosition=r.lastPosition,this._lastVelocity=r.lastVelocity,this._lastTime=r.lastTime}void 0!==this._initialVelocity&&null!==this._initialVelocity&&(this._lastVelocity=this._initialVelocity);var t=function(){l._useNativeDriver?l.__startNativeAnimation(a):l.onUpdate()};this._delay?this._timeout=setTimeout(t,this._delay):t()}},{key:"getInternalState",value:function(){return{lastPosition:this._lastPosition,lastVelocity:this._lastVelocity,lastTime:this._lastTime}}},{key:"onUpdate",value:function(){var t=this._lastPosition,i=this._lastVelocity,e=this._lastPosition,s=this._lastVelocity,o=64,n=Date.now();n>this._lastTime+o&&(n=this._lastTime+o);for(var a=1,l=Math.floor((n-this._lastTime)/a),r=0;rthis._toValue:t18&&n<=44?a(n):p(n)}var h=r(n/1.7,0,20);h=o(h,0,.8);var w=r(t/1.7,0,20),M=o(w,.5,200),d=c(h,s(M),.01);return{tension:u(M),friction:i(d)}}r.exports={fromOrigamiTensionAndFriction:e,fromBouncinessAndSpeed:c}},200); +__d(function(t,i,e,a){"use strict";function s(){if(!_){var t=i(202);_=t.inOut(t.ease)}return _}var n=(i(180),i(196),i(198)),o=i(183),r=o.shouldUseNativeDriver,_=void 0,u=function(i){function e(t){babelHelpers.classCallCheck(this,e);var i=babelHelpers.possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i._toValue=t.toValue,i._easing=void 0!==t.easing?t.easing:s(),i._duration=void 0!==t.duration?t.duration:500,i._delay=void 0!==t.delay?t.delay:0,i.__iterations=void 0!==t.iterations?t.iterations:1,i.__isInteraction=void 0===t.isInteraction||t.isInteraction,i._useNativeDriver=r(t),i}return babelHelpers.inherits(e,i),babelHelpers.createClass(e,[{key:"__getNativeAnimationConfig",value:function(){for(var t=16.666666666666668,i=[],e=0;e=this._startTime+this._duration?(0===this._duration?this._onUpdate(this._toValue):this._onUpdate(this._fromValue+this._easing(1)*(this._toValue-this._fromValue)),void this.__debouncedOnEnd({finished:!0})):(this._onUpdate(this._fromValue+this._easing((t-this._startTime)/this._duration)*(this._toValue-this._fromValue)),void(this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this)))))}},{key:"stop",value:function(){babelHelpers.get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"stop",this).call(this),this.__active=!1,clearTimeout(this._timeout),t.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),e}(n);e.exports=u},201); +__d(function(e,n,u,t){"use strict";var r=void 0,a=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"step0",value:function(e){return e>0?1:0}},{key:"step1",value:function(e){return e>=1?1:0}},{key:"linear",value:function(e){return e}},{key:"ease",value:function(n){return r||(r=e.bezier(.42,0,1,1)),r(n)}},{key:"quad",value:function(e){return e*e}},{key:"cubic",value:function(e){return e*e*e}},{key:"poly",value:function(e){return function(n){return Math.pow(n,e)}}},{key:"sin",value:function(e){return 1-Math.cos(e*Math.PI/2)}},{key:"circle",value:function(e){return 1-Math.sqrt(1-e*e)}},{key:"exp",value:function(e){return Math.pow(2,10*(e-1))}},{key:"elastic",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=e*Math.PI;return function(e){return 1-Math.pow(Math.cos(e*Math.PI/2),3)*Math.cos(e*n)}}},{key:"back",value:function(e){return void 0===e&&(e=1.70158),function(n){return n*n*((e+1)*n-e)}}},{key:"bounce",value:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?(e-=.5454545454545454,7.5625*e*e+.75):e<.9090909090909091?(e-=.8181818181818182,7.5625*e*e+.9375):(e-=.9545454545454546,7.5625*e*e+.984375)}},{key:"bezier",value:function(e,u,t,r){var a=n(203);return a(e,u,t,r)}},{key:"in",value:function(e){return e}},{key:"out",value:function(e){return function(n){return 1-e(1-n)}}},{key:"inOut",value:function(e){return function(n){return n<.5?e(2*n)/2:1-e(2*(1-n))/2}}}]),e}();u.exports=a},202); +__d(function(r,n,t,u){"use strict";function e(r,n){return 1-3*n+3*r}function o(r,n){return 3*n-6*r}function f(r){return 3*r}function i(r,n,t){return((e(n,t)*r+o(n,t))*r+f(n))*r}function a(r,n,t){return 3*e(n,t)*r*r+2*o(n,t)*r+f(n)}function c(r,n,t,u,e){var o,f,a=0;do f=n+(t-n)/2,o=i(f,u,e)-r,o>0?t=f:n=f;while(Math.abs(o)>l&&++a=w?v(n,s,r,t):0===l?s:c(n,u,u+h,r,t)}if(!(0<=r&&r<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");var o=A?new Float32Array(b):new Array(b);if(r!==n||t!==u)for(var f=0;f component requires a `source` property rather than `src`."),e&&(e.uri||Array.isArray(e))){var t=void 0,n=void 0;if(e.uri){var i=e.width,o=e.height;t=y([{width:i,height:o},z.base,this.props.style]),n=[{uri:e.uri}]}else t=y([z.base,this.props.style]),n=e;var s=this.props,a=s.onLoadStart,u=s.onLoad,d=s.onLoadEnd,l=s.onError,h=I(this.props,{style:t,shouldNotifyLoadEvents:!!(a||u||d||l),src:n,headers:e.headers,loadingIndicatorSrc:r?r.uri:null});if(h.children){var p=v(t,function(e,r){return!L.has(r)}),f=v(t,function(e,r){return L.has(r)}),m=I(h,{style:[f,z.absoluteImage],children:void 0});return c.createElement(g,{style:p},c.createElement(A,m),this.props.children)}return this.context.isInAParentText?c.createElement(N,h):c.createElement(A,h)}return null}}),z=p.create({base:{overflow:"hidden"},absoluteImage:{left:0,right:0,top:0,bottom:0,position:"absolute"}}),O={nativeOnly:{src:!0,headers:!0,loadingIndicatorSrc:!0,shouldNotifyLoadEvents:!0}},A=C("RCTImageView",S,O),N=C("RCTTextInlineImage",S,O);t.exports=S},205); +__d(function(r,t,n,e){"use strict";function o(r,t,n){if(!r)return null;var e={};for(var o in r)a.call(r,o)&&t.call(n,r[o],o,r)&&(e[o]=r[o]);return e}var a=Object.prototype.hasOwnProperty;n.exports=o},206); +__d(function(e,o,n,t){"use strict";var l=o(177),r=o(36),s=o(131),i=(o(23),o(208)),a=o(111),c=o(114),d=o(39),h=o(209),p=o(216),u=o(143),m=o(137),f=o(110),S=o(130),y=o(124),R=o(139),v=o(212),b=(o(55),o(13)),_=o(217),w=o(141),H=(o(27),R({displayName:"ScrollView",propTypes:babelHelpers.extends({},S,{automaticallyAdjustContentInsets:a.bool,contentInset:s,contentOffset:i,bounces:a.bool,bouncesZoom:a.bool,alwaysBounceHorizontal:a.bool,alwaysBounceVertical:a.bool,centerContent:a.bool,contentContainerStyle:m(y),decelerationRate:a.oneOfType([a.oneOf(["fast","normal"]),a.number]),horizontal:a.bool,indicatorStyle:a.oneOf(["default","black","white"]),directionalLockEnabled:a.bool,canCancelContentTouches:a.bool,keyboardDismissMode:a.oneOf(["none","on-drag","interactive"]),keyboardShouldPersistTaps:a.oneOf(["always","never","handled",!1,!0]),maximumZoomScale:a.number,minimumZoomScale:a.number,onMomentumScrollBegin:a.func,onMomentumScrollEnd:a.func,onScroll:a.func,onContentSizeChange:a.func,pagingEnabled:a.bool,pinchGestureEnabled:a.bool,scrollEnabled:a.bool,scrollEventThrottle:a.number,scrollIndicatorInsets:s,scrollsToTop:a.bool,showsHorizontalScrollIndicator:a.bool,showsVerticalScrollIndicator:a.bool,stickyHeaderIndices:a.arrayOf(a.number),style:m(y),snapToInterval:a.number,snapToAlignment:a.oneOf(["start","center","end"]),removeClippedSubviews:a.bool,zoomScale:a.number,contentInsetAdjustmentBehavior:a.oneOf(["automatic","scrollableAxes","never","always"]),refreshControl:a.element,endFillColor:r,scrollPerfTag:a.string,overScrollMode:a.oneOf(["auto","always","never"]),DEPRECATED_sendUpdatedChildFrames:a.bool}),mixins:[h.Mixin],_scrollAnimatedValue:new l.Value(0),_scrollAnimatedValueAttachment:null,_stickyHeaderRefs:new Map,_headerLayoutYs:new Map,getInitialState:function(){return this.scrollResponderMixinGetInitialState()},componentWillMount:function(){this._scrollAnimatedValue=new l.Value(0),this._stickyHeaderRefs=new Map,this._headerLayoutYs=new Map},componentDidMount:function(){this._updateAnimatedNodeAttachment()},componentDidUpdate:function(){this._updateAnimatedNodeAttachment()},componentWillUnmount:function(){this._scrollAnimatedValueAttachment&&this._scrollAnimatedValueAttachment.detach()},setNativeProps:function(e){this._scrollViewRef&&this._scrollViewRef.setNativeProps(e)},getScrollResponder:function(){return this},getScrollableNode:function(){return d.findNodeHandle(this._scrollViewRef)},getInnerViewNode:function(){return d.findNodeHandle(this._innerViewRef)},scrollTo:function(e,o,n){if("number"==typeof e)console.warn("`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, animated: true})` instead.");else{var t=e||{};o=t.x,e=t.y,n=t.animated}this.getScrollResponder().scrollResponderScrollTo({x:o||0,y:e||0,animated:n!==!1})},scrollToEnd:function(e){var o=(e&&e.animated)!==!1;this.getScrollResponder().scrollResponderScrollToEnd({animated:o})},scrollWithoutAnimationTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;console.warn("`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead"),this.scrollTo({x:o,y:e,animated:!1})},flashScrollIndicators:function(){this.getScrollResponder().scrollResponderFlashScrollIndicators()},_getKeyForIndex:function(e,o){var n=o[e];return n&&n.key},_updateAnimatedNodeAttachment:function(){this._scrollAnimatedValueAttachment&&this._scrollAnimatedValueAttachment.detach(),this.props.stickyHeaderIndices&&this.props.stickyHeaderIndices.length>0&&(this._scrollAnimatedValueAttachment=l.attachNativeEvent(this._scrollViewRef,"onScroll",[{nativeEvent:{contentOffset:{y:this._scrollAnimatedValue}}}]))},_setStickyHeaderRef:function(e,o){o?this._stickyHeaderRefs.set(e,o):this._stickyHeaderRefs.delete(e)},_onStickyHeaderLayout:function(e,o,n){if(this.props.stickyHeaderIndices){var t=c.Children.toArray(this.props.children);if(n===this._getKeyForIndex(e,t)){var l=o.nativeEvent.layout.y;this._headerLayoutYs.set(n,l);var r=this.props.stickyHeaderIndices.indexOf(e),s=this.props.stickyHeaderIndices[r-1];if(null!=s){var i=this._stickyHeaderRefs.get(this._getKeyForIndex(s,t));i&&i.setNextHeaderY(l)}}}},_handleScroll:function(e){"on-drag"===this.props.keyboardDismissMode&&v(),this.scrollResponderHandleScroll(e)},_handleContentOnLayout:function(e){var o=e.nativeEvent.layout,n=o.width,t=o.height;this.props.onContentSizeChange&&this.props.onContentSizeChange(n,t)},_scrollViewRef:null,_setScrollViewRef:function(e){this._scrollViewRef=e},_innerViewRef:null,_setInnerViewRef:function(e){this._innerViewRef=e},render:function(){var e=this,o=void 0,n=void 0;o=this.props.horizontal?E:V,n=f,b(void 0!==o,"ScrollViewClass must not be undefined"),b(void 0!==n,"ScrollContentContainerViewClass must not be undefined");var t=[this.props.horizontal&&C.contentContainerHorizontal,this.props.contentContainerStyle],l={};this.props.onContentSizeChange&&(l={onLayout:this._handleContentOnLayout});var r=this.props.stickyHeaderIndices,s=r&&r.length>0,i=s&&c.Children.toArray(this.props.children),a=s?i.map(function(o,n){var t=o?r.indexOf(n):-1;if(t>-1){var l=o.key,s=r[t+1];return c.createElement(p,{key:l,ref:function(o){return e._setStickyHeaderRef(l,o)},nextHeaderLayoutY:e._headerLayoutYs.get(e._getKeyForIndex(s,i)),onLayout:function(o){return e._onStickyHeaderLayout(n,o,l)},scrollAnimatedValue:e._scrollAnimatedValue},o)}return o}):this.props.children,d=c.createElement(n,babelHelpers.extends({},l,{ref:this._setInnerViewRef,style:t,removeClippedSubviews:!s&&this.props.removeClippedSubviews,collapsable:!1}),a),h=void 0!==this.props.alwaysBounceHorizontal?this.props.alwaysBounceHorizontal:this.props.horizontal,u=void 0!==this.props.alwaysBounceVertical?this.props.alwaysBounceVertical:!this.props.horizontal,m=!!this.props.DEPRECATED_sendUpdatedChildFrames,S=this.props.horizontal?C.baseHorizontal:C.baseVertical,y=babelHelpers.extends({},this.props,{alwaysBounceHorizontal:h,alwaysBounceVertical:u,style:[S,this.props.style],onContentSizeChange:null,onMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin,onMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd,onResponderGrant:this.scrollResponderHandleResponderGrant,onResponderReject:this.scrollResponderHandleResponderReject,onResponderRelease:this.scrollResponderHandleResponderRelease,onResponderTerminate:this.scrollResponderHandleTerminate,onResponderTerminationRequest:this.scrollResponderHandleTerminationRequest,onScroll:this._handleScroll,onScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag,onScrollEndDrag:this.scrollResponderHandleScrollEndDrag,onScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder,onStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder,onStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture,onTouchEnd:this.scrollResponderHandleTouchEnd,onTouchMove:this.scrollResponderHandleTouchMove,onTouchStart:this.scrollResponderHandleTouchStart,scrollEventThrottle:s?1:this.props.scrollEventThrottle,sendMomentumEvents:!(!this.props.onMomentumScrollBegin&&!this.props.onMomentumScrollEnd),DEPRECATED_sendUpdatedChildFrames:m}),R=this.props.decelerationRate;R&&(y.decelerationRate=_(R));var v=this.props.refreshControl;return v?c.cloneElement(v,{style:y.style},c.createElement(o,babelHelpers.extends({},y,{style:S,ref:this._setScrollViewRef}),d)):c.createElement(o,babelHelpers.extends({},y,{ref:this._setScrollViewRef}),d)}})),C=u.create({baseVertical:{flexGrow:1,flexShrink:1,flexDirection:"column",overflow:"scroll"},baseHorizontal:{flexGrow:1,flexShrink:1,flexDirection:"row",overflow:"scroll"},contentContainerHorizontal:{flexDirection:"row"}}),g=void 0,V=void 0,E=void 0;g={nativeOnly:{sendMomentumEvents:!0}},V=w("RCTScrollView",H,g),E=w("AndroidHorizontalScrollView",H,g),n.exports=H},207); +__d(function(r,e,n,t){"use strict";var u=e(111),s=e(132),b=s({x:u.number,y:u.number});n.exports=b},208); +__d(function(e,o,n,r){"use strict";function s(e){var o=f(e);return o&&o.viewConfig&&("AndroidTextInput"===o.viewConfig.uiViewClassName||"RCTTextView"===o.viewConfig.uiViewClassName||"RCTTextField"===o.viewConfig.uiViewClassName)}var l=o(145),t=o(210),i=o(211),d=o(39),a=o(213),c=o(57),p=o(58),h=o(13),u=o(214),S=o(24),m=o(27),R=o(15),T=R.ScrollViewManager,b=o(215),f=b.getInstanceFromNode,g=16,y={mixins:[a.Mixin],scrollResponderMixinGetInitialState:function(){return{isTouching:!1,lastMomentumScrollBeginTime:0,lastMomentumScrollEndTime:0,observedScrollSinceBecomingResponder:!1,becameResponderWhileAnimating:!1}},scrollResponderHandleScrollShouldSetResponder:function(){return this.state.isTouching},scrollResponderHandleStartShouldSetResponder:function(e){var o=c.currentlyFocusedField();return"handled"===this.props.keyboardShouldPersistTaps&&null!=o&&e.target!==o},scrollResponderHandleStartShouldSetResponderCapture:function(e){var o=c.currentlyFocusedField(),n=this.props.keyboardShouldPersistTaps,r=!n||"never"===n;return!(!r||null==o||s(e.target))||this.scrollResponderIsAnimating()},scrollResponderHandleResponderReject:function(){},scrollResponderHandleTerminationRequest:function(){return!this.state.observedScrollSinceBecomingResponder},scrollResponderHandleTouchEnd:function(e){var o=e.nativeEvent;this.state.isTouching=0!==o.touches.length,this.props.onTouchEnd&&this.props.onTouchEnd(e)},scrollResponderHandleResponderRelease:function(e){this.props.onResponderRelease&&this.props.onResponderRelease(e);var o=c.currentlyFocusedField();this.props.keyboardShouldPersistTaps===!0||"always"===this.props.keyboardShouldPersistTaps||null==o||e.target===o||this.state.observedScrollSinceBecomingResponder||this.state.becameResponderWhileAnimating||(this.props.onScrollResponderKeyboardDismissed&&this.props.onScrollResponderKeyboardDismissed(e),c.blurTextInput(o))},scrollResponderHandleScroll:function(e){this.state.observedScrollSinceBecomingResponder=!0,this.props.onScroll&&this.props.onScroll(e)},scrollResponderHandleResponderGrant:function(e){this.state.observedScrollSinceBecomingResponder=!1,this.props.onResponderGrant&&this.props.onResponderGrant(e),this.state.becameResponderWhileAnimating=this.scrollResponderIsAnimating()},scrollResponderHandleScrollBeginDrag:function(e){t.beginScroll(),this.props.onScrollBeginDrag&&this.props.onScrollBeginDrag(e)},scrollResponderHandleScrollEndDrag:function(e){var o=e.nativeEvent.velocity;this.scrollResponderIsAnimating()||o&&(0!==o.x||0!==o.y)||t.endScroll(),this.props.onScrollEndDrag&&this.props.onScrollEndDrag(e)},scrollResponderHandleMomentumScrollBegin:function(e){this.state.lastMomentumScrollBeginTime=S(),this.props.onMomentumScrollBegin&&this.props.onMomentumScrollBegin(e)},scrollResponderHandleMomentumScrollEnd:function(e){t.endScroll(),this.state.lastMomentumScrollEndTime=S(),this.props.onMomentumScrollEnd&&this.props.onMomentumScrollEnd(e)},scrollResponderHandleTouchStart:function(e){this.state.isTouching=!0,this.props.onTouchStart&&this.props.onTouchStart(e)},scrollResponderHandleTouchMove:function(e){this.props.onTouchMove&&this.props.onTouchMove(e)},scrollResponderIsAnimating:function(){var e=S(),o=e-this.state.lastMomentumScrollEndTime,n=o=o?(l.push(p,p+1),i.push(p-o,p-o)):(l.push(o+1),i.push(1))}var y=this.props.scrollAnimatedValue.interpolate({inputRange:l,outputRange:i}),h=n.Children.only(this.props.children);return n.createElement(r.View,{collapsable:!1,onLayout:this._onLayout,style:[h.props.style,u.header,{transform:[{translateY:y}]}]},n.cloneElement(h,{style:u.fill,onLayout:void 0}))}}]),t}(n.Component),u=s.create({header:{zIndex:10},fill:{flex:1}});a.exports=l},216); +__d(function(t,n,r,o){"use strict";function s(t){return"normal"===t?t=.998:"fast"===t&&(t=.99),t}r.exports=s},217); +__d(function(e,n,t,o){"use strict";var s=n(38),r=n(111),a=n(114),i=n(143),h=n(130),p=n(139),l=n(141),u=p({displayName:"CheckBox",propTypes:babelHelpers.extends({},h,{value:r.bool,disabled:r.bool,onChange:r.func,onValueChange:r.func,testID:r.string}),getDefaultProps:function(){return{value:!1,disabled:!1}},mixins:[s],_rctCheckBox:{},_onChange:function(e){this._rctCheckBox.setNativeProps({value:this.props.value}),this.props.onChange&&this.props.onChange(e),this.props.onValueChange&&this.props.onValueChange(e.nativeEvent.value)},render:function(){var e=this,n=babelHelpers.extends({},this.props);return n.onStartShouldSetResponder=function(){return!0},n.onResponderTerminationRequest=function(){return!1},n.enabled=!this.props.disabled,n.on=this.props.value,n.style=[c.rctCheckBox,this.props.style],a.createElement(d,babelHelpers.extends({},n,{ref:function(n){e._rctCheckBox=n},onChange:this._onChange}))}}),c=i.create({rctCheckBox:{height:32,width:32}}),d=l("AndroidCheckBox",u,{nativeOnly:{onChange:!0,on:!0,enabled:!0}});t.exports=u},218); +__d(function(e,t,r,n){"use strict";var o=t(114),s=t(143),i=t(164),l=t(110),a=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){return o.createElement(l,{style:[c.dummyDatePickerIOS,this.props.style]},o.createElement(i,{style:c.datePickerText},"DatePickerIOS is not supported on this platform!"))}}]),t}(o.Component),c=s.create({dummyDatePickerIOS:{height:100,width:300,backgroundColor:"#ffbcbc",borderWidth:1,borderColor:"red",alignItems:"center",justifyContent:"center",margin:10},datePickerText:{color:"#333333",margin:20}});r.exports=a},219); +__d(function(e,r,o,t){"use strict";var a=r(36),n=r(38),s=r(23),i=r(114),d=r(111),l=r(39),w=r(221),p=r(143),u=r(58),c=r(110),h=r(130),g=u.AndroidDrawerLayout.Constants,D=r(139),f=r(212),C=r(141),b="drawerlayout",m="innerView",S=["Idle","Dragging","Settling"],k=D({displayName:"DrawerLayoutAndroid",statics:{positions:g.DrawerPosition},propTypes:babelHelpers.extends({},h,{keyboardDismissMode:d.oneOf(["none","on-drag"]),drawerBackgroundColor:a,drawerPosition:d.oneOf([g.DrawerPosition.Left,g.DrawerPosition.Right]),drawerWidth:d.number,drawerLockMode:d.oneOf(["unlocked","locked-closed","locked-open"]),onDrawerSlide:d.func,onDrawerStateChanged:d.func,onDrawerOpen:d.func,onDrawerClose:d.func,renderNavigationView:d.func.isRequired,statusBarBackgroundColor:a}),mixins:[n],getDefaultProps:function(){return{drawerBackgroundColor:"white"}},getInitialState:function(){return{statusBarBackgroundColor:void 0}},getInnerViewNode:function(){return this.refs[m].getInnerViewNode()},render:function(){var e=s.Version>=21&&this.props.statusBarBackgroundColor,r=i.createElement(c,{style:[y.drawerSubview,{width:this.props.drawerWidth,backgroundColor:this.props.drawerBackgroundColor}],collapsable:!1},this.props.renderNavigationView(),e&&i.createElement(c,{style:y.drawerStatusBar})),o=i.createElement(c,{ref:m,style:y.mainSubview,collapsable:!1},e&&i.createElement(w,{translucent:!0,backgroundColor:this.props.statusBarBackgroundColor}),e&&i.createElement(c,{style:[y.statusBar,{backgroundColor:this.props.statusBarBackgroundColor}]}),this.props.children);return i.createElement(B,babelHelpers.extends({},this.props,{ref:b,drawerWidth:this.props.drawerWidth,drawerPosition:this.props.drawerPosition,drawerLockMode:this.props.drawerLockMode,style:[y.base,this.props.style],onDrawerSlide:this._onDrawerSlide,onDrawerOpen:this._onDrawerOpen,onDrawerClose:this._onDrawerClose,onDrawerStateChanged:this._onDrawerStateChanged}),o,r)},_onDrawerSlide:function(e){this.props.onDrawerSlide&&this.props.onDrawerSlide(e),"on-drag"===this.props.keyboardDismissMode&&f()},_onDrawerOpen:function(){this.props.onDrawerOpen&&this.props.onDrawerOpen()},_onDrawerClose:function(){this.props.onDrawerClose&&this.props.onDrawerClose()},_onDrawerStateChanged:function(e){this.props.onDrawerStateChanged&&this.props.onDrawerStateChanged(S[e.nativeEvent.drawerState])},openDrawer:function(){u.dispatchViewManagerCommand(this._getDrawerLayoutHandle(),u.AndroidDrawerLayout.Commands.openDrawer,null)},closeDrawer:function(){u.dispatchViewManagerCommand(this._getDrawerLayoutHandle(),u.AndroidDrawerLayout.Commands.closeDrawer,null)},_getDrawerLayoutHandle:function(){return l.findNodeHandle(this.refs[b])}}),y=p.create({base:{flex:1,elevation:16},mainSubview:{position:"absolute",top:0,left:0,right:0,bottom:0},drawerSubview:{position:"absolute",top:0,bottom:0},statusBar:{height:w.currentHeight},drawerStatusBar:{position:"absolute",top:0,left:0,right:0,height:w.currentHeight,backgroundColor:"rgba(0, 0, 0, 0.251)"}}),B=C("AndroidDrawerLayout",k);o.exports=k},220); +__d(function(e,t,n,a){"use strict";function r(e,t){return e.reduce(function(e,t){for(var n in t)null!=t[n]&&(e[n]=t[n]);return e},babelHelpers.extends({},t))}function o(e){return{backgroundColor:null!=e.backgroundColor?{value:e.backgroundColor,animated:e.animated}:null,barStyle:null!=e.barStyle?{value:e.barStyle,animated:e.animated}:null,translucent:e.translucent,hidden:null!=e.hidden?{value:e.hidden,animated:e.animated,transition:e.showHideTransition}:null,networkActivityIndicatorVisible:e.networkActivityIndicatorVisible}}var l=t(114),i=t(111),u=t(36),s=(t(23),t(125)),c=t(15).StatusBarManager,d=function(e){function t(){var e,n,a,o;babelHelpers.classCallCheck(this,t);for(var l=arguments.length,i=Array(l),u=0;u1){for(var o=[],s=0;s1?(a(Array.isArray(e),"FlatList: Encountered internal consistency error, expected each item to consist of an array with 1-%s columns; instead, received a single item.",s),e.map(function(e,n){return o(e,t*s+n)}).join(":")):o(e,t)},r._onViewableItemsChanged=function(e){var t=r.props,n=t.numColumns,o=t.onViewableItemsChanged;if(o)if(n>1){var s=[],l=[];e.viewableItems.forEach(function(e){return r._pushMultiColumnViewable(l,e)}),e.changed.forEach(function(e){return r._pushMultiColumnViewable(s,e)}),o({viewableItems:l,changed:s})}else o(e)},r._renderItem=function(e){var t=r.props,n=t.renderItem,o=t.numColumns,i=t.columnWrapperStyle;if(o>1){var u=e.item,c=e.index;return a(Array.isArray(u),"Expected array of items with numColumns > 1"),s.createElement(l,{style:[{flexDirection:"row"},i]},u.map(function(t,r){var l=n({item:t,index:c*o+r,separators:e.separators});return l&&s.cloneElement(l,{key:r})}))}return n(e)},o=n,babelHelpers.possibleConstructorReturn(r,o)}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"scrollToEnd",value:function(e){this._listRef.scrollToEnd(e)}},{key:"scrollToIndex",value:function(e){this._listRef.scrollToIndex(e)}},{key:"scrollToItem",value:function(e){this._listRef.scrollToItem(e)}},{key:"scrollToOffset",value:function(e){this._listRef.scrollToOffset(e)}},{key:"recordInteraction",value:function(){this._listRef.recordInteraction()}},{key:"flashScrollIndicators",value:function(){this._listRef.flashScrollIndicators()}},{key:"getScrollResponder",value:function(){if(this._listRef)return this._listRef.getScrollResponder()}},{key:"getScrollableNode",value:function(){if(this._listRef)return this._listRef.getScrollableNode()}},{key:"setNativeProps",value:function(e){this._listRef&&this._listRef.setNativeProps(e)}},{key:"componentWillMount",value:function(){this._checkProps(this.props)}},{key:"componentWillReceiveProps",value:function(e){a(e.numColumns===this.props.numColumns,"Changing numColumns on the fly is not supported. Change the key prop on FlatList when changing the number of columns to force a fresh render of the component."),this._checkProps(e)}},{key:"_checkProps",value:function(e){var t=e.getItem,n=e.getItemCount,r=e.horizontal,o=e.legacyImplementation,s=e.numColumns,l=e.columnWrapperStyle;a(!t&&!n,"FlatList does not support custom data formats."),s>1?a(!r,"numColumns does not support horizontal."):a(!l,"columnWrapperStyle not supported for single column lists"),o&&(a(1===s,"Legacy list does not support multiple columns."),this._hasWarnedLegacy||(console.warn("FlatList: Using legacyImplementation - some features not supported and performance may suffer"),this._hasWarnedLegacy=!0))}},{key:"_pushMultiColumnViewable",value:function(e,t){var n=this.props,r=n.numColumns,o=n.keyExtractor;t.item.forEach(function(n,s){a(null!=t.index,"Missing index!");var l=t.index*r+s;e.push(babelHelpers.extends({},t,{item:n,key:o(n,l),index:l}))})}},{key:"render",value:function(){return this.props.legacyImplementation?s.createElement(o,babelHelpers.extends({},this.props,{items:this.props.data,ref:this._captureRef})):s.createElement(i,babelHelpers.extends({},this.props,{renderItem:this._renderItem,getItem:this._getItem,getItemCount:this._getItemCount,keyExtractor:this._keyExtractor,ref:this._captureRef,onViewableItemsChanged:this.props.onViewableItemsChanged&&this._onViewableItemsChanged}))}}]),t}(s.PureComponent);c.defaultProps=u,n.exports=c},222); +__d(function(e,t,r,o){"use strict";var n=t(224),s=t(114),a=t(229),i=t(207),c=t(13),l=function(e){function t(){var e,r,o,a,i=this;babelHelpers.classCallCheck(this,t);for(var l=arguments.length,p=Array(l),u=0;u=this._prevRenderedRowsCount&&o.rowShouldUpdate(p,C),E=r.createElement(c,{key:"r_"+b,shouldUpdate:!!y,render:this.props.renderRow.bind(null,o.getRowData(p,C),g,_,this._onRowHighlighted)});if(e.push(E),h++,this.props.renderSeparator&&(C!==w.length-1||p===n.length-1)){var L=this.state.highlightedRow.sectionID===g&&(this.state.highlightedRow.rowID===_||this.state.highlightedRow.rowID===w[C+1]),I=this.props.renderSeparator(g,_,L);I&&(e.push(r.createElement(u,{key:"s_"+b},I)),h++)}if(++s===this.state.curRenderedRowsCount)break}if(s>=this.state.curRenderedRowsCount)break}var P=this.props,H=P.renderScrollComponent,D=babelHelpers.objectWithoutProperties(P,["renderScrollComponent"]);return D.scrollEventThrottle||(D.scrollEventThrottle=v),void 0===D.removeClippedSubviews&&(D.removeClippedSubviews=!0),babelHelpers.extends(D,{onScroll:this._onScroll,stickyHeaderIndices:this.props.stickyHeaderIndices.concat(i),onKeyboardWillShow:void 0,onKeyboardWillHide:void 0,onKeyboardDidShow:void 0,onKeyboardDidHide:void 0}),R(H(D),{ref:this._setScrollComponentRef,onContentSizeChange:this._onContentSizeChange,onLayout:this._onLayout,DEPRECATED_sendUpdatedChildFrames:void 0!==typeof D.onChangeVisibleRows},d,e,a)},_measureAndUpdateScrollProps:function(){var e=this.getScrollResponder();e&&e.getInnerViewNode&&d&&d.calculateChildFrames&&d.calculateChildFrames(l.findNodeHandle(e),this._updateVisibleRows)},_setScrollComponentRef:function(e){this._scrollComponent=e},_onContentSizeChange:function(e,t){var o=this.props.horizontal?e:t;o!==this.scrollProperties.contentLength&&(this.scrollProperties.contentLength=o,this._updateVisibleRows(),this._renderMoreRowsIfNeeded()),this.props.onContentSizeChange&&this.props.onContentSizeChange(e,t)},_onLayout:function(e){var t=e.nativeEvent.layout,o=t.width,n=t.height,s=this.props.horizontal?o:n;s!==this.scrollProperties.visibleLength&&(this.scrollProperties.visibleLength=s,this._updateVisibleRows(),this._renderMoreRowsIfNeeded()),this.props.onLayout&&this.props.onLayout(e)},_maybeCallOnEndReached:function(e){return!!(this.props.onEndReached&&this.scrollProperties.contentLength!==this._sentEndForContentLength&&this._getDistanceFromEnd(this.scrollProperties)r||vthis.props.onEndReachedThreshold&&(this._sentEndForContentLength=null),this.props.onScroll&&this.props.onScroll(e)}});o.exports=b},224); +__d(function(t,e,i,n){"use strict";function s(t,e,i){return t[e][i]}function a(t,e){return t[e]}function o(t){for(var e=0,i=0;i=this.rowIdentities[i].length))return this.rowIdentities[i][e];e-=this.rowIdentities[i].length}return null}},{key:"getSectionIDForFlatIndex",value:function(t){for(var e=t,i=0;i=this.rowIdentities[i].length))return this.sectionIdentities[i];e-=this.rowIdentities[i].length}return null}},{key:"getSectionLengths",value:function(){for(var t=[],e=0;e2?c-2:0),a=2;a=0&&l0){v=!1;var _=i?"width":"height",g=this.props.initialScrollIndex?-1:this.props.initialNumToRender-1,y=this.state,b=y.first,C=y.last;this._pushCells(p,u,c,0,g,h);var x=Math.max(g+1,b);if(!a&&b>g+1){var S=!1;if(c.size>0)for(var M=s?1:0,R=x-1;R>g;R--)if(c.has(R+M)){var E=this._getFrameMetricsApprox(g),k=this._getFrameMetricsApprox(R),I=k.offset-(E.offset+E.length);p.push(l.createElement(d,{key:"$sticky_lead",style:babelHelpers.defineProperty({},_,I)})),this._pushCells(p,u,c,R,R,h);var T=this._getFrameMetricsApprox(b).offset-(k.offset+k.length);p.push(l.createElement(d,{key:"$sticky_trail",style:babelHelpers.defineProperty({},_,T)})),S=!0;break}if(!S){var w=this._getFrameMetricsApprox(g),H=this._getFrameMetricsApprox(b).offset-(w.offset+w.length);p.push(l.createElement(d,{key:"$lead_spacer",style:babelHelpers.defineProperty({},_,H)}))}}if(this._pushCells(p,u,c,x,C,h),!this._hasWarned.keys&&v&&(console.warn("VirtualizedList: missing keys for items, make sure to specify a key property on each item or provide a custom keyExtractor."),this._hasWarned.keys=!0),!a&&C0||r2&&p500&&e._scrollMetrics.dt>500&&o>5*s&&!e._hasWarned.perf&&(f("VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc.",{dt:i,prevDt:e._scrollMetrics.dt,contentLength:o}),e._hasWarned.perf=!0);var l=n-e._scrollMetrics.offset,a=l/i;e._scrollMetrics={contentLength:o,dt:i,dOffset:l,offset:n,timestamp:r,velocity:a,visibleLength:s},e._updateViewableItems(e.props.data),e.props&&(e._maybeCallOnEndReached(),0!==a&&e._fillRateHelper.activate(),e._computeBlankness(),e._scheduleCellsToRenderUpdate())},this._onScrollBeginDrag=function(t){e._viewabilityHelper.recordInteraction(),e.props.onScrollBeginDrag&&e.props.onScrollBeginDrag(t)},this._onScrollEndDrag=function(t){var r=t.nativeEvent.velocity;r&&(e._scrollMetrics.velocity=e._selectOffset(r)),e._computeBlankness(),e.props.onScrollEndDrag&&e.props.onScrollEndDrag(t)},this._onMomentumScrollEnd=function(t){e._scrollMetrics.velocity=0,e._computeBlankness(),e.props.onMomentumScrollEnd&&e.props.onMomentumScrollEnd(t)},this._updateCellsToRender=function(){var t=e.props,r=t.data,s=t.getItemCount,o=t.onEndReachedThreshold,n=e._isVirtualizationDisabled();e._updateViewableItems(r),r&&e.setState(function(t){var i=void 0;if(n){var l=e._scrollMetrics,a=l.contentLength,h=l.offset,p=l.visibleLength,c=a-p-h,d=ct,"Tried to get frame for out of range index "+t);var a=o(s,t),h=a&&e._frames[l(a,t)];return h&&h.index===t||i&&(h=i(s,t)),h}},C=function(e){function t(){var e,r,s,o;babelHelpers.classCallCheck(this,t);for(var n=arguments.length,i=Array(n),l=0;l0&&void 0!==arguments[0]?arguments[0]:{abort:!1};this._taskHandle&&(this._taskHandle.cancel(),t.abort||this._callback(),this._taskHandle=null)}},{key:"schedule",value:function(){var t=this;if(!this._taskHandle){var a=setTimeout(function(){t._taskHandle=n.runAfterInteractions(function(){t._taskHandle=null,t._callback()})},this._delay);this._taskHandle={cancel:function(){return clearTimeout(a)}}}}}]),t}();e.exports=s},231); +__d(function(t,e,a,n){"use strict";var s=e(24),i=e(27),l=function t(){babelHelpers.classCallCheck(this,t),this.any_blank_count=0,this.any_blank_ms=0,this.any_blank_speed_sum=0,this.mostly_blank_count=0,this.mostly_blank_ms=0,this.pixels_blank=0,this.pixels_sampled=0,this.pixels_scrolled=0,this.total_time_spent=0,this.sample_count=0},_=!1,o=[],r=10,h=_?1:null,u=function(){function t(e){babelHelpers.classCallCheck(this,t),this._anyBlankStartTime=null,this._enabled=!1,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null,this._getFrameMetrics=e,this._enabled=(h||0)>Math.random(),this._resetData()}return babelHelpers.createClass(t,null,[{key:"addListener",value:function(t){return i(null!==h,"Call `FillRateHelper.setSampleRate` before `addListener`."),o.push(t),{remove:function(){o=o.filter(function(e){return t!==e})}}}},{key:"setSampleRate",value:function(t){h=t}},{key:"setMinSampleCount",value:function(t){r=t}}]),babelHelpers.createClass(t,[{key:"activate",value:function(){this._enabled&&null==this._samplesStartTime&&(_&&console.debug("FillRateHelper: activate"),this._samplesStartTime=s())}},{key:"deactivateAndFlush",value:function(){if(this._enabled){var t=this._samplesStartTime;if(null==t)return void(_&&console.debug("FillRateHelper: bail on deactivate with no start time"));if(this._info.sample_count0&&(h=Math.min(_,Math.max(0,m.offset-i)));for(var f=0,c=e.last,b=this._getFrameMetrics(c);c>=e.first&&(!b||!b.inLayout);)b=this._getFrameMetrics(c),c--;if(b&&c0?(this._anyBlankStartTime=r,this._info.any_blank_speed_sum+=o,this._info.any_blank_count++,this._info.pixels_blank+=d,p>.5&&(this._mostlyBlankStartTime=r,this._info.mostly_blank_count++)):(o<.01||Math.abs(n)<1)&&this.deactivateAndFlush(),p}},{key:"enabled",value:function(){return this._enabled}},{key:"_resetData",value:function(){this._anyBlankStartTime=null,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null}}]),t}();a.exports=u},232); +__d(function(e,t,i,r){"use strict";function a(e,t,i,r,a,l){if(s(i,r,a))return!0;var o=n(i,r,a),h=100*(e?o/a:o/l);return h>=t}function n(e,t,i){var r=Math.min(t,i)-Math.max(e,0);return Math.max(0,r)}function s(e,t,i){return e>=0&&t<=i&&t>e}var l=t(13),o=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{viewAreaCoveragePercentThreshold:0};babelHelpers.classCallCheck(this,e),this._hasInteracted=!1,this._lastUpdateTime=0,this._timers=new Set,this._viewableIndices=[],this._viewableItems=new Map,this._config=t}return babelHelpers.createClass(e,[{key:"dispose",value:function(){this._timers.forEach(clearTimeout)}},{key:"computeViewableItems",value:function(e,t,i,r,n){var s=this._config,o=s.itemVisiblePercentThreshold,h=s.viewAreaCoveragePercentThreshold,c=null!=h,u=c?h:o;l(null!=u&&null!=o!=(null!=h),"Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold");var f=[];if(0===e)return f;var v=-1,m=n||{first:0,last:e-1},d=m.first,b=m.last;l(b0)v=_,a(c,u,y,w,i,p.length)&&f.push(_);else if(v>=0)break}}return f}},{key:"onUpdate",value:function(e,t,i,r,a,n,s){var l=this,o=Date.now();0===this._lastUpdateTime&&e>0&&r(0)&&(this._lastUpdateTime=o);var h=this._lastUpdateTime?o-this._lastUpdateTime:0;if(!this._config.waitForInteraction||this._hasInteracted){var c=[];if(e&&(c=this.computeViewableItems(e,t,i,r,s)),this._viewableIndices.length!==c.length||!this._viewableIndices.every(function(e,t){return e===c[t]}))if(this._viewableIndices=c,this._lastUpdateTime=o,this._config.minimumViewTime&&h=l.length)break;c=l[h++]}else{if(h=l.next(),h.done)break;c=h.value}var u=c,f=babelHelpers.slicedToArray(u,2),v=f[0],m=f[1];a.has(v)||s.push(m)}for(var d=a,b=Array.isArray(d),_=0,d=b?d:d["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var p;if(b){if(_>=d.length)break;p=d[_++]}else{if(_=d.next(),_.done)break;p=_.value}var y=p,w=babelHelpers.slicedToArray(y,2),g=w[0],T=w[1];n.has(g)||s.push(babelHelpers.extends({},T,{isViewable:!1}))}s.length>0&&(this._viewableItems=n,t({viewableItems:Array.from(n.values()),changed:s}))}}]),e}();i.exports=o},233); +__d(function(t,e,r,a){"use strict";function n(t,e,r){for(var a=[],n=0;n=t[l]&&(a[l]=n,l===t.length-1))return f(a.length===t.length,"bad offsets input, should be in increasing order "+JSON.stringify(t)),a;return a}function i(t,e){return e.last-e.first+1-Math.max(0,1+Math.min(e.last,t.last)-Math.max(e.first,t.first))}function s(t,e,r,a){var s=t.data,f=t.getItemCount,l=t.maxToRenderPerBatch,o=t.windowSize,u=f(s);if(0===u)return e;var h=a.offset,m=a.velocity,c=a.visibleLength,d=Math.max(0,h),v=d+c,g=(o-1)*c,b=.5,w=m>1?"after":m<-1?"before":"none",x=Math.max(0,d-(1-b)*g),M=Math.max(0,v+b*g),p=n([x,d,v,M],t.getItemCount(t.data),r),y=babelHelpers.slicedToArray(p,4),C=y[0],O=y[1],L=y[2],R=y[3];C=null==C?0:C,O=null==O?Math.max(0,C):O,R=null==R?u-1:R,L=null==L?Math.min(R,O+l-1):L;for(var S={first:O,last:L},T=i(e,S);;){if(O<=C&&L>=R)break;var k=T>=l,B=O<=e.first||O>e.last,I=O>C&&(!k||!B),J=L>=e.last||L=O&&O>=0&&L=C&&L<=R&&O<=S.first&&L>=S.last))throw new Error("Bad window calculation "+JSON.stringify({first:O,last:L,itemCount:u,overscanFirst:C,overscanLast:R,visible:S}));return{first:O,last:L}}var f=e(13),l={computeWindowedRenderLimits:s,elementsThatOverlapOffsets:n,newRangeCount:i};r.exports=l},234); +__d(function(e,t,r,l){"use strict";var s=t(205),i=t(114),a=t(143),n=t(110),o=t(236),c=function(e){function t(){var e,r,l,s;babelHelpers.classCallCheck(this,t);for(var i=arguments.length,a=Array(i),n=0;n=0){var i=n.Children.toArray(e.props.children),o=i[s].props.value;e.props.onValueChange(o,s)}else e.props.onValueChange(null,s)}e._lastNativePosition=t.nativeEvent.position,e.forceUpdate()}},_=l.create({pickerAndroid:{height:50}}),y={nativeOnly:{items:!0,selected:!0}},x=h("AndroidDropdownPicker",f,y),C=h("AndroidDialogPicker",f,y);s.exports=f},248); +__d(function(e,t,r,n){"use strict";var o=t(35),s=t(36),a=t(111),i=t(114),l=t(39),p=t(130),c=["Horizontal","Normal","Small","Large","Inverse","SmallInverse","LargeInverse"],u=function(e,t,r){for(var n=function(){var r=e[t],n=e.styleAttr;if(!r&&"Horizontal"!==n)return new Error("indeterminate=false is only valid for styleAttr=Horizontal")},o=arguments.length,s=Array(o>3?o-3:0),i=3;i=a.data.length+1)){if(t===-1)return{section:a,key:i+":header",index:null,header:!0,trailingSection:this.props.sections[n+1]};if(t===a.data.length)return{section:a,key:i+":footer",index:null,header:!1,trailingSection:this.props.sections[n+1]};var o=a.keyExtractor||r;return{section:a,key:i+":"+o(a.data[t],t),index:t,leadingItem:a.data[t-1],leadingSection:this.props.sections[n-1],trailingItem:a.data[t+1],trailingSection:this.props.sections[n+1]}}t-=a.data.length+1}}},{key:"_getSeparatorComponent",value:function(e,t){if(t=t||this._subExtractor(e),!t)return null;var r=t.section.ItemSeparatorComponent||this.props.ItemSeparatorComponent,n=this.props.SectionSeparatorComponent,a=e===this.state.childProps.getItemCount()-1,i=t.index===t.section.data.length-1;return n&&i?n:!r||i||a?null:r}},{key:"_computeState",value:function(e){var t=e.ListHeaderComponent?1:0,r=[],n=e.sections.reduce(function(e,n){return r.push(e+t),e+n.data.length+2},0);return{childProps:babelHelpers.extends({},e,{renderItem:this._renderItem,ItemSeparatorComponent:void 0,data:e.sections,getItemCount:function(){return n},getItem:a,keyExtractor:this._keyExtractor,onViewableItemsChanged:e.onViewableItemsChanged?this._onViewableItemsChanged:void 0,stickyHeaderIndices:e.stickySectionHeadersEnabled?r:void 0})}}}]),babelHelpers.createClass(t,[{key:"componentWillReceiveProps",value:function(e){this.setState(this._computeState(e))}},{key:"render",value:function(){return i.createElement(s,babelHelpers.extends({},this.state.childProps,{ref:this._captureRef}))}}]),t}(i.PureComponent);p.defaultProps=babelHelpers.extends({},s.defaultProps,{data:[]});var c=function(e){function t(){var e,r,n,a;babelHelpers.classCallCheck(this,t);for(var i=arguments.length,o=Array(i),s=0;s0},_swipeFullSpeed:function(e){this.state.currentLeft.setValue(this._previousLeft+e.dx)},_swipeSlowSpeed:function(e){this.state.currentLeft.setValue(this._previousLeft+e.dx/R)},_isSwipingExcessivelyRightFromClosedPosition:function(e){var i=_?-e.dx:e.dx;return this._isSwipingRightFromClosed(e)&&i>x},_onPanResponderTerminationRequest:function(e,i){return!1},_animateTo:function(e){var i=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:S,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c;o.timing(this.state.currentLeft,{duration:n,toValue:e,useNativeDriver:!0}).start(function(){i._previousLeft=e,t()})},_animateToOpenPosition:function(){var e=_?-this.props.maxSwipeDistance:this.props.maxSwipeDistance;this._animateTo(-e)},_animateToOpenPositionWith:function(e,i){e=e>f?e:f;var n=Math.abs((this.props.maxSwipeDistance-Math.abs(i))/e),t=_?-this.props.maxSwipeDistance:this.props.maxSwipeDistance;this._animateTo(-t,n)},_animateToClosedPosition:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:S;this._animateTo(m,e)},_animateToClosedPositionDuringBounce:function(){this._animateToClosedPosition(T)},_animateBounceBack:function(e){var i=_?-g:g;this._animateTo(-i,e,this._animateToClosedPositionDuringBounce)},_isValidSwipe:function(e){return!(this.props.preventSwipeRight&&this._previousLeft===m&&e.dx>0)&&Math.abs(e.dx)>w},_shouldAnimateRemainder:function(e){return Math.abs(e.dx)>this.props.swipeThreshold||e.vx>f},_handlePanResponderEnd:function(e,i){var n=_?-i.dx:i.dx;this._isSwipingRightFromClosed(i)?(this.props.onOpen(),this._animateBounceBack(T)):this._shouldAnimateRemainder(i)?n<0?(this.props.onOpen(),this._animateToOpenPositionWith(i.vx,n)):(this.props.onClose(),this._animateToClosedPosition()):this._previousLeft===m?this._animateToClosedPosition():this._animateToOpenPosition(),this.props.onSwipeEnd()}}),O=u.create({slideOutContainer:{bottom:0,left:0,position:"absolute",right:0,top:0}});n.exports=C},259); +__d(function(e,n,o,t){"use strict";function r(e,n,o,t){e.handle&&(a.clearInteractionHandle(e.handle),e.handle=null),n&&n(o,t)}var a=n(185),u=n(261),s=u.currentCentroidXOfTouchesChangedAfter,d=u.currentCentroidYOfTouchesChangedAfter,i=u.previousCentroidXOfTouchesChangedAfter,c=u.previousCentroidYOfTouchesChangedAfter,p=u.currentCentroidX,v=u.currentCentroidY,h={_initializeGestureState:function(e){e.moveX=0,e.moveY=0,e.x0=0,e.y0=0,e.dx=0,e.dy=0,e.vx=0,e.vy=0,e.numberActiveTouches=0,e._accountsForMovesUpTo=0},_updateGestureStateOnMove:function(e,n){e.numberActiveTouches=n.numberActiveTouches,e.moveX=s(n,e._accountsForMovesUpTo),e.moveY=d(n,e._accountsForMovesUpTo);var o=e._accountsForMovesUpTo,t=i(n,o),r=s(n,o),a=c(n,o),u=d(n,o),p=e.dx+(r-t),v=e.dy+(u-a),h=n.mostRecentTimeStamp-e._accountsForMovesUpTo;e.vx=(p-e.dx)/h,e.vy=(v-e.dy)/h,e.dx=p,e.dy=v,e._accountsForMovesUpTo=n.mostRecentTimeStamp},create:function(e){var n={handle:null},o={stateID:Math.random()};h._initializeGestureState(o);var t={onStartShouldSetResponder:function(n){return void 0!==e.onStartShouldSetPanResponder&&e.onStartShouldSetPanResponder(n,o)},onMoveShouldSetResponder:function(n){return void 0!==e.onMoveShouldSetPanResponder&&e.onMoveShouldSetPanResponder(n,o)},onStartShouldSetResponderCapture:function(n){return 1===n.nativeEvent.touches.length&&h._initializeGestureState(o),o.numberActiveTouches=n.touchHistory.numberActiveTouches,void 0!==e.onStartShouldSetPanResponderCapture&&e.onStartShouldSetPanResponderCapture(n,o)},onMoveShouldSetResponderCapture:function(n){var t=n.touchHistory;return o._accountsForMovesUpTo!==t.mostRecentTimeStamp&&(h._updateGestureStateOnMove(o,t),!!e.onMoveShouldSetPanResponderCapture&&e.onMoveShouldSetPanResponderCapture(n,o))},onResponderGrant:function(t){return n.handle||(n.handle=a.createInteractionHandle()),o.x0=p(t.touchHistory),o.y0=v(t.touchHistory),o.dx=0,o.dy=0,e.onPanResponderGrant&&e.onPanResponderGrant(t,o),void 0===e.onShouldBlockNativeResponder||e.onShouldBlockNativeResponder()},onResponderReject:function(t){r(n,e.onPanResponderReject,t,o)},onResponderRelease:function(t){r(n,e.onPanResponderRelease,t,o),h._initializeGestureState(o)},onResponderStart:function(n){var t=n.touchHistory;o.numberActiveTouches=t.numberActiveTouches,e.onPanResponderStart&&e.onPanResponderStart(n,o)},onResponderMove:function(n){var t=n.touchHistory;o._accountsForMovesUpTo!==t.mostRecentTimeStamp&&(h._updateGestureStateOnMove(o,t),e.onPanResponderMove&&e.onPanResponderMove(n,o))},onResponderEnd:function(t){var a=t.touchHistory;o.numberActiveTouches=a.numberActiveTouches,r(n,e.onPanResponderEnd,t,o)},onResponderTerminate:function(t){r(n,e.onPanResponderTerminate,t,o),h._initializeGestureState(o)},onResponderTerminationRequest:function(n){return void 0===e.onPanResponderTerminationRequest||e.onPanResponderTerminationRequest(n,o)}};return{panHandlers:t,getInteractionHandle:function(){return n.handle}}}};o.exports=h},260); +__d(function(_,t,E,o){"use strict";var r=t(39),s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.exports=s.TouchHistoryMath},261); +__d(function(e,t,r,s){"use strict";var l=t(114),n=t(143),o=t(263),p=t(110),a=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){return l.createElement(p,{style:[this.props.style,i.tabGroup]},this.props.children)}}]),t}(l.Component);a.Item=o;var i=n.create({tabGroup:{flex:1}});r.exports=a},262); +__d(function(e,t,r,s){"use strict";var l=t(114),o=t(110),n=t(143),p=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){return this.props.selected?l.createElement(o,{style:[this.props.style,i.tab]},this.props.children):l.createElement(o,null)}}]),t}(l.Component),i=n.create({tab:{top:0,right:0,bottom:0,left:0,borderColor:"red",borderWidth:1}});r.exports=p},263); +__d(function(e,t,n,o){"use strict";var s=t(36),i=t(265),a=t(31),r=t(38),l=(t(23),t(114)),u=t(139),c=t(111),h=t(39),p=t(143),d=t(164),f=t(57),g=t(174),b=t(173),y=t(58),v=t(130),_=t(28),C=t(13),S=t(141),x=(t(27),S("AndroidTextInput",null)),m=["phoneNumber","link","address","calendarEvent","none","all"],T=u({displayName:"TextInput",statics:{State:f},propTypes:babelHelpers.extends({},v,{autoCapitalize:c.oneOf(["none","sentences","words","characters"]),autoCorrect:c.bool,spellCheck:c.bool,autoFocus:c.bool,autoGrow:c.bool,editable:c.bool,keyboardType:c.oneOf(["default","email-address","numeric","phone-pad","ascii-capable","numbers-and-punctuation","url","number-pad","name-phone-pad","decimal-pad","twitter","web-search"]),keyboardAppearance:c.oneOf(["default","light","dark"]),returnKeyType:c.oneOf(["done","go","next","search","send","none","previous","default","emergency-call","google","join","route","yahoo"]),returnKeyLabel:c.string,maxLength:c.number,maxHeight:c.number,numberOfLines:c.number,disableFullscreenUI:c.bool,enablesReturnKeyAutomatically:c.bool,multiline:c.bool,textBreakStrategy:c.oneOf(["simple","highQuality","balanced"]),onBlur:c.func,onFocus:c.func,onChange:c.func,onChangeText:c.func,onContentSizeChange:c.func,onEndEditing:c.func,onSelectionChange:c.func,onSubmitEditing:c.func,onKeyPress:c.func,onLayout:c.func,onScroll:c.func,placeholder:c.node,placeholderTextColor:s,secureTextEntry:c.bool,selectionColor:s,selectionState:c.instanceOf(i),selection:c.shape({start:c.number.isRequired,end:c.number}),value:c.string,defaultValue:c.string,clearButtonMode:c.oneOf(["never","while-editing","unless-editing","always"]),clearTextOnFocus:c.bool,selectTextOnFocus:c.bool,blurOnSubmit:c.bool,style:d.propTypes.style,underlineColorAndroid:s,inlineImageLeft:c.string,inlineImagePadding:c.number,dataDetectorTypes:c.oneOfType([c.oneOf(m),c.arrayOf(c.oneOf(m))]),caretHidden:c.bool}),mixins:[r,g],getInitialState:function(){return{layoutHeight:this._layoutHeight}},isFocused:function(){return f.currentlyFocusedField()===h.findNodeHandle(this._inputRef)},contextTypes:{onFocusRequested:c.func,focusEmitter:c.instanceOf(a)},_inputRef:void 0,_focusSubscription:void 0,_lastNativeText:void 0,_lastNativeSelection:void 0,_layoutHeight:-1,componentDidMount:function(){var e=this;return this._lastNativeText=this.props.value,this.context.focusEmitter?(this._focusSubscription=this.context.focusEmitter.addListener("focus",function(t){e===t?e.requestAnimationFrame(e.focus):e.isFocused()&&e.blur()}),void(this.props.autoFocus&&this.context.onFocusRequested(this))):void(this.props.autoFocus&&this.requestAnimationFrame(this.focus))},componentWillUnmount:function(){this._focusSubscription&&this._focusSubscription.remove(),this.isFocused()&&this.blur()},getChildContext:function(){return{isInAParentText:!0}},childContextTypes:{isInAParentText:c.bool},clear:function(){this.setNativeProps({text:""})},render:function(){return this._renderAndroid()},_getText:function(){return"string"==typeof this.props.value?this.props.value:"string"==typeof this.props.defaultValue?this.props.defaultValue:""},_setNativeRef:function(e){this._inputRef=e},_renderIOS:function(){var e,t=babelHelpers.extends({},this.props);if(t.style=[this.props.style],t.selection&&null==t.selection.end&&(t.selection={start:t.selection.start,end:t.selection.start}),t.multiline){var n=t.children,o=0;l.Children.forEach(n,function(){return++o}),C(!(t.value&&o),"Cannot specify both value and children."),o>=1&&(n=l.createElement(d,{style:t.style},n)),t.inputView&&(n=[n,t.inputView]),t.style.unshift(I.multilineInput),e=l.createElement(RCTTextView,babelHelpers.extends({ref:this._setNativeRef},t,{children:n,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this.props.onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,onSelectionChangeShouldSetResponder:_.thatReturnsTrue,text:this._getText(),dataDetectorTypes:this.props.dataDetectorTypes,onScroll:this._onScroll}))}else e=l.createElement(RCTTextField,babelHelpers.extends({ref:this._setNativeRef},t,{onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onSelectionChange:this._onSelectionChange,onSelectionChangeShouldSetResponder:_.thatReturnsTrue,text:this._getText()}));return l.createElement(b,{onLayout:t.onLayout,onPress:this._onPress,rejectResponderTermination:!0,accessible:t.accessible,accessibilityLabel:t.accessibilityLabel,accessibilityTraits:t.accessibilityTraits,nativeID:this.props.nativeID,testID:t.testID},e)},_renderAndroid:function(){var e=babelHelpers.extends({},this.props);e.style=this.props.style,this.state.layoutHeight>=0&&(e.style=[e.style,{height:this.state.layoutHeight}]),e.autoCapitalize=y.AndroidTextInput.Constants.AutoCapitalizationType[this.props.autoCapitalize];var t=this.props.children,n=0;l.Children.forEach(t,function(){return++n}),C(!(this.props.value&&n),"Cannot specify both value and children."),n>1&&(t=l.createElement(d,null,t)),e.selection&&null==e.selection.end&&(e.selection={start:e.selection.start,end:e.selection.start});var o=l.createElement(x,babelHelpers.extends({ref:this._setNativeRef},e,{mostRecentEventCount:0,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this._onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,text:this._getText(),children:t,disableFullscreenUI:this.props.disableFullscreenUI,textBreakStrategy:this.props.textBreakStrategy,onScroll:this._onScroll}));return l.createElement(b,{onLayout:this._onLayout,onPress:this._onPress,accessible:this.props.accessible,accessibilityLabel:this.props.accessibilityLabel,accessibilityComponentType:this.props.accessibilityComponentType,nativeID:this.props.nativeID,testID:this.props.testID},o)},_onFocus:function(e){this.props.onFocus&&this.props.onFocus(e),this.props.selectionState&&this.props.selectionState.focus()},_onPress:function(e){(this.props.editable||void 0===this.props.editable)&&this.focus()},_onChange:function(e){this._inputRef&&this._inputRef.setNativeProps({mostRecentEventCount:e.nativeEvent.eventCount});var t=e.nativeEvent.text;this.props.onChange&&this.props.onChange(e),this.props.onChangeText&&this.props.onChangeText(t),this._inputRef&&(this._lastNativeText=t,this.forceUpdate())},_onContentSizeChange:function(e){var t=e.nativeEvent.contentSize.height;this.props.autoGrow&&(this.props.maxHeight&&(t=Math.min(this.props.maxHeight,t)),this.setState({layoutHeight:Math.max(this._layoutHeight,t)})),this.props.onContentSizeChange&&this.props.onContentSizeChange(e)},_onLayout:function(e){var t=e.nativeEvent.layout.height;t&&(this._layoutHeight=e.nativeEvent.layout.height),this.props.onLayout&&this.props.onLayout(e)},_onSelectionChange:function(e){this.props.onSelectionChange&&this.props.onSelectionChange(e),this._inputRef&&(this._lastNativeSelection=e.nativeEvent.selection,(this.props.selection||this.props.selectionState)&&this.forceUpdate())},componentDidUpdate:function(){var e={};this._lastNativeText!==this.props.value&&"string"==typeof this.props.value&&(e.text=this.props.value);var t=this.props.selection;this._lastNativeSelection&&t&&(this._lastNativeSelection.start!==t.start||this._lastNativeSelection.end!==t.end)&&(e.selection=this.props.selection),Object.keys(e).length>0&&this._inputRef&&this._inputRef.setNativeProps(e),this.props.selectionState&&t&&this.props.selectionState.update(t.start,t.end)},_onBlur:function(e){this.blur(),this.props.onBlur&&this.props.onBlur(e),this.props.selectionState&&this.props.selectionState.blur()},_onTextInput:function(e){this.props.onTextInput&&this.props.onTextInput(e)},_onScroll:function(e){this.props.onScroll&&this.props.onScroll(e)}}),I=p.create({multilineInput:{paddingTop:5}});n.exports=T},264); +__d(function(s,t,e,f){"use strict";var u=t(266),h=function(){function s(t,e){babelHelpers.classCallCheck(this,s),this._anchorOffset=t,this._focusOffset=e,this._hasFocus=!1}return babelHelpers.createClass(s,[{key:"update",value:function(s,t){this._anchorOffset===s&&this._focusOffset===t||(this._anchorOffset=s,this._focusOffset=t,this.emit("update"))}},{key:"constrainLength",value:function(s){this.update(Math.min(this._anchorOffset,s),Math.min(this._focusOffset,s))}},{key:"focus",value:function(){this._hasFocus||(this._hasFocus=!0,this.emit("focus"))}},{key:"blur",value:function(){this._hasFocus&&(this._hasFocus=!1,this.emit("blur"))}},{key:"hasFocus",value:function(){return this._hasFocus}},{key:"isCollapsed",value:function(){return this._anchorOffset===this._focusOffset}},{key:"isBackward",value:function(){return this._anchorOffset>this._focusOffset}},{key:"getAnchorOffset",value:function(){return this._hasFocus?this._anchorOffset:null}},{key:"getFocusOffset",value:function(){return this._hasFocus?this._focusOffset:null}},{key:"getStartOffset",value:function(){return this._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null}},{key:"getEndOffset",value:function(){return this._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null}},{key:"overlaps",value:function(s,t){return this.hasFocus()&&this.getStartOffset()<=t&&s<=this.getEndOffset()}}]),s}();u(h,{blur:!0,focus:!0,update:!0}),e.exports=h},265); +__d(function(e,t,n,i){"use strict";function r(e,t){a(t,"Must supply set of valid event types");var n=e.prototype||e;a(!n.__eventEmitter,"An active emitter is already mixed in");var i=e.constructor;i&&a(i===Object||i===Function,"Mix EventEmitter into a class, not an instance"),n.hasOwnProperty(E)?babelHelpers.extends(n.__types,t):n.__types?n.__types=babelHelpers.extends({},n.__types,t):n.__types=t,babelHelpers.extends(n,d)}var s=t(31),_=t(267),o=t(268),a=t(13),v=t(269),E=v({__types:!0}),d={emit:function(e,t,n,i,r,s,_){return this.__getEventEmitter().emit(e,t,n,i,r,s,_)},emitAndHold:function(e,t,n,i,r,s,_){return this.__getEventEmitter().emitAndHold(e,t,n,i,r,s,_)},addListener:function(e,t,n){return this.__getEventEmitter().addListener(e,t,n)},once:function(e,t,n){return this.__getEventEmitter().once(e,t,n)},addRetroactiveListener:function(e,t,n){return this.__getEventEmitter().addRetroactiveListener(e,t,n)},addListenerMap:function(e,t){return this.__getEventEmitter().addListenerMap(e,t)},addRetroactiveListenerMap:function(e,t){return this.__getEventEmitter().addListenerMap(e,t)},removeAllListeners:function(){this.__getEventEmitter().removeAllListeners()},removeCurrentListener:function(){this.__getEventEmitter().removeCurrentListener()},releaseHeldEventType:function(e){this.__getEventEmitter().releaseHeldEventType(e)},__getEventEmitter:function(){if(!this.__eventEmitter){var e=new s,t=new o;this.__eventEmitter=new _(e,t)}return this.__eventEmitter}};n.exports=r},266); +__d(function(e,t,n,r){"use strict";var i=function(){function e(t,n){babelHelpers.classCallCheck(this,e),this._emitter=t,this._eventHolder=n,this._currentEventToken=null,this._emittingHeldEvents=!1}return babelHelpers.createClass(e,[{key:"addListener",value:function(e,t,n){return this._emitter.addListener(e,t,n)}},{key:"once",value:function(e,t,n){return this._emitter.once(e,t,n)}},{key:"addRetroactiveListener",value:function(e,t,n){var r=this._emitter.addListener(e,t,n);return this._emittingHeldEvents=!0,this._eventHolder.emitToListener(e,t,n),this._emittingHeldEvents=!1,r}},{key:"removeAllListeners",value:function(e){this._emitter.removeAllListeners(e)}},{key:"removeCurrentListener",value:function(){this._emitter.removeCurrentListener()}},{key:"listeners",value:function(e){return this._emitter.listeners(e)}},{key:"emit",value:function(e){for(var t,n=arguments.length,r=Array(n>1?n-1:0),i=1;i1?r-1:0),s=1;s1?r-1:0),i=1;i. Was "+e.type.displayName),a.createElement(e.type,n)})},o._onPageScroll=function(e){o.props.onPageScroll&&o.props.onPageScroll(e),"on-drag"===o.props.keyboardDismissMode&&p()},o._onPageScrollStateChanged=function(e){o.props.onPageScrollStateChanged&&o.props.onPageScrollStateChanged(e.nativeEvent.pageScrollState)},o._onPageSelected=function(e){o.props.onPageSelected&&o.props.onPageSelected(e)},o.setPage=function(e){i.dispatchViewManagerCommand(l.findNodeHandle(o),i.AndroidViewPager.Commands.setPage,[e])},o.setPageWithoutAnimation=function(e){i.dispatchViewManagerCommand(l.findNodeHandle(o),i.AndroidViewPager.Commands.setPageWithoutAnimation,[e])},r=t,babelHelpers.possibleConstructorReturn(o,r)}return babelHelpers.inherits(n,e),babelHelpers.createClass(n,[{key:"componentDidMount",value:function(){null!=this.props.initialPage&&this.setPageWithoutAnimation(this.props.initialPage)}},{key:"render",value:function(){return a.createElement(u,babelHelpers.extends({},this.props,{ref:c,style:this.props.style,onPageScroll:this._onPageScroll,onPageScrollStateChanged:this._onPageScrollStateChanged,onPageSelected:this._onPageSelected,children:this._childrenWithOverridenStyle()}))}}]),n}(a.Component);g.propTypes=babelHelpers.extends({},s,{initialPage:r.number,onPageScroll:r.func,onPageScrollStateChanged:r.func,onPageSelected:r.func,pageMargin:r.number,keyboardDismissMode:r.oneOf(["none","on-drag"]),scrollEnabled:r.bool,peekEnabled:r.bool});var u=d("AndroidViewPager",g);t.exports=g},273); +__d(function(e,t,n,a){"use strict";var o=t(131),s=t(35),r=t(114),i=t(111),l=t(39),d=t(143),p=t(58),c=t(110),g=t(130),u=t(122),h=t(118),b=t(141),m=t(152),v="webview",f=h({IDLE:null,LOADING:null,ERROR:null}),w=function(){return r.createElement(c,{style:C.loadingView},r.createElement(s,{style:C.loadingProgressBar}))},E=function(e){function t(){var e,n,a,o;babelHelpers.classCallCheck(this,t);for(var s=arguments.length,r=Array(s),i=0;i=a.length)break;l=a[n++]}else{if(n=a.next(),n.done)break;l=n.value}var u=l,c=babelHelpers.slicedToArray(u,2),s=c[0],f=c[1];t[s]=f()}for(var d={},b=e._fileSources,y=Array.isArray(b),_=0,b=y?b:b["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var v;if(y){if(_>=b.length)break;v=b[_++]}else{if(_=b.next(),_.done)break;v=_.value}var S=v,p=babelHelpers.slicedToArray(S,2),x=p[0],k=p[1];d[x]=k()}i("BugReporting extraData:",t);var m=r(15).BugReporting;return m&&m.setExtraData&&m.setExtraData(t,d),{extras:t,files:d}}}]),e}();u._extraSources=new l,u._fileSources=new l,u._subscription=null,t.exports=u},277); +__d(function(e,t,r,i){"use strict";function n(){try{return u()}catch(e){return"Failed to dump react tree: "+e}}function u(){return"React tree dumps have been temporarily disabled while React is upgraded to Fiber."}r.exports=n},278); +__d(function(e,n,t,c){"use strict";var r=[],u={name:"default"},i={setActiveScene:function(e){u=e,r.forEach(function(e){return e(u)})},getActiveScene:function(){return u},addActiveSceneChangedListener:function(e){return r.push(e),{remove:function(){r=r.filter(function(n){return e!==n})}}}};t.exports=i},279); +__d(function(e,t,o,r){"use strict";function a(e,t,o,r){s(o,"Expect to have a valid rootTag, instead got ",o),p.render(c.createElement(n,{rootTag:o,WrapperComponent:r},c.createElement(e,babelHelpers.extends({},t,{rootTag:o}))),o)}var n=t(243),c=t(114),p=t(39),s=t(13);t(281),o.exports=a},280); +__d(function(e,n,r,t){"use strict";var a=n(15).DeviceEventManager,i=n(30),o="hardwareBackPress",s=new Set;i.addListener(o,function(){for(var e=new Set(s),n=!0,r=[].concat(babelHelpers.toConsumableArray(e)).reverse(),t=0;t=0&&(s="video"),a.saveToCameraRoll(e,s)}},{key:"getPhotos",value:function(e){if(arguments.length>1){console.warn("CameraRoll.getPhotos(tag, success, error) is deprecated. Use the returned Promise instead");var r=arguments[1],s=arguments[2]||function(){};a.getPhotos(e).then(r,s)}return a.getPhotos(e)}}]),e}());d.GroupTypesOptions=l,d.AssetTypeOptions=u,s.exports=d},285); +__d(function(t,n,r,i){"use strict";var e=n(15).Clipboard;r.exports={getString:function(){return e.getString()},setString:function(t){e.setString(t)}}},286); +__d(function(e,t,n,r){"use strict";function i(e,t){var n=e[t];"object"==typeof n&&"function"==typeof n.getMonth&&(e[t]=n.getTime())}var c=t(15).DatePickerAndroid,o=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"open",value:function(e){var t;return regeneratorRuntime.async(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e,t&&(i(e,"date"),i(e,"minDate"),i(e,"maxDate")),n.abrupt("return",c.open(e));case 3:case"end":return n.stop()}},null,this)}},{key:"dateSetAction",get:function(){return"dateSetAction"}},{key:"dismissedAction",get:function(){return"dismissedAction"}}]),e}();n.exports=o},287); +__d(function(e,n,o,a){"use strict";var r=n(15).ImagePickerIOS,t={canRecordVideos:function(e){return r.canRecordVideos(e)},canUseCamera:function(e){return r.canUseCamera(e)},openCameraDialog:function(e,n,o){return e=babelHelpers.extends({videoMode:!1},e),r.openCameraDialog(e,n,o)},openSelectDialog:function(e,n,o){return e=babelHelpers.extends({showImages:!0,showVideos:!1},e),r.openSelectDialog(e,n,o)}};o.exports=t},288); +__d(function(e,t,n,i){"use strict";var a=t(80),r=t(15),s=(t(23),t(13)),l=r.IntentAndroid,o=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"addEventListener",value:function(e,t){this.addListener(e,t)}},{key:"removeEventListener",value:function(e,t){this.removeListener(e,t)}},{key:"openURL",value:function(e){return this._validateURL(e),l.openURL(e)}},{key:"canOpenURL",value:function(e){return this._validateURL(e),l.canOpenURL(e)}},{key:"getInitialURL",value:function(){return l.getInitialURL()}},{key:"_validateURL",value:function(e){s("string"==typeof e,"Invalid URL: should be a string. Was: "+e),s(e,"Invalid URL: cannot be empty")}}]),t}(a);n.exports=new o},289); +__d(function(e,n,t,o){"use strict";function i(e){return"none"!==e.type&&"unknown"!==e.type}var r=n(62),c=n(80),f=n(15),u=(n(23),f.NetInfo),v=new c(u),s="networkStatusDidChange",a=new r,d=void 0;d=function(e){return"NONE"!==e&&"UNKNOWN"!==e};var C=new r,g={addEventListener:function(e,n){var t=void 0;if("connectionChange"===e)t=v.addListener(s,function(e){n({type:e.connectionType,effectiveType:e.effectiveConnectionType})});else{if("change"!==e)return console.warn('Trying to subscribe to unknown event: "'+e+'"'),{remove:function(){}};console.warn('NetInfo\'s "change" event is deprecated. Listen to the "connectionChange" event instead.'),t=v.addListener(s,function(e){n(e.network_info)})}return a.set(n,t),{remove:function(){return g.removeEventListener(e,n)}}},removeEventListener:function(e,n){var t=a.get(n);t&&(t.remove(),a.delete(n))},fetch:function(){return console.warn("NetInfo.fetch() is deprecated. Use NetInfo.getConnectionInfo() instead."),u.getCurrentConnectivity().then(function(e){return e.network_info})},getConnectionInfo:function(){return u.getCurrentConnectivity().then(function(e){return{type:e.connectionType,effectiveType:e.effectiveConnectionType}})},isConnected:{addEventListener:function(e,n){var t=function(t){"change"===e?n(d(t)):"connectionChange"===e&&n(i(t))};return C.set(n,t),g.addEventListener(e,t),{remove:function(){return g.isConnected.removeEventListener(e,n)}}},removeEventListener:function(e,n){var t=C.get(n);g.removeEventListener(e,t),C.delete(n)},fetch:function(){return g.getConnectionInfo().then(i)}},isConnectionExpensive:function(){return u.isConnectionMetered()}};t.exports=g},290); +__d(function(e,t,i,o){"use strict";var n=t(80),a=t(15).PushNotificationManager,c=t(13),r=new n(a),l=new Map,s="remoteNotificationReceived",u="remoteNotificationsRegistered",f="remoteNotificationRegistrationError",d="localNotificationReceived",v=function(){function e(t){var i=this;babelHelpers.classCallCheck(this,e),this._data={},this._remoteNotificationCompleteCallbackCalled=!1,this._isRemote=t.remote,this._isRemote&&(this._notificationId=t.notificationId),t.remote?Object.keys(t).forEach(function(e){var o=t[e];"aps"===e?(i._alert=o.alert,i._sound=o.sound,i._badgeCount=o.badge,i._category=o.category,i._contentAvailable=o["content-available"]):i._data[e]=o}):(this._badgeCount=t.applicationIconBadgeNumber,this._sound=t.soundName,this._alert=t.alertBody,this._data=t.userInfo,this._category=t.category)}return babelHelpers.createClass(e,null,[{key:"presentLocalNotification",value:function(e){a.presentLocalNotification(e)}},{key:"scheduleLocalNotification",value:function(e){a.scheduleLocalNotification(e)}},{key:"cancelAllLocalNotifications",value:function(){a.cancelAllLocalNotifications()}},{key:"removeAllDeliveredNotifications",value:function(){a.removeAllDeliveredNotifications()}},{key:"getDeliveredNotifications",value:function(e){a.getDeliveredNotifications(e)}},{key:"removeDeliveredNotifications",value:function(e){a.removeDeliveredNotifications(e)}},{key:"setApplicationIconBadgeNumber",value:function(e){a.setApplicationIconBadgeNumber(e)}},{key:"getApplicationIconBadgeNumber",value:function(e){a.getApplicationIconBadgeNumber(e)}},{key:"cancelLocalNotifications",value:function(e){a.cancelLocalNotifications(e)}},{key:"getScheduledLocalNotifications",value:function(e){a.getScheduledLocalNotifications(e)}},{key:"addEventListener",value:function(t,i){c("notification"===t||"register"===t||"registrationError"===t||"localNotification"===t,"PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events");var o;"notification"===t?o=r.addListener(s,function(t){i(new e(t))}):"localNotification"===t?o=r.addListener(d,function(t){i(new e(t))}):"register"===t?o=r.addListener(u,function(e){i(e.deviceToken)}):"registrationError"===t&&(o=r.addListener(f,function(e){i(e)})),l.set(t,o)}},{key:"removeEventListener",value:function(e,t){c("notification"===e||"register"===e||"registrationError"===e||"localNotification"===e,"PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events");var i=l.get(e);i&&(i.remove(),l.delete(e))}},{key:"requestPermissions",value:function(e){var t={};return t=e?{alert:!!e.alert,badge:!!e.badge,sound:!!e.sound}:{alert:!0,badge:!0,sound:!0},a.requestPermissions(t)}},{key:"abandonPermissions",value:function(){a.abandonPermissions()}},{key:"checkPermissions",value:function(e){c("function"==typeof e,"Must provide a valid callback"),a.checkPermissions(e)}},{key:"getInitialNotification",value:function(){return a.getInitialNotification().then(function(t){return t&&new e(t)})}}]),babelHelpers.createClass(e,[{key:"finish",value:function(e){this._isRemote&&this._notificationId&&!this._remoteNotificationCompleteCallbackCalled&&(this._remoteNotificationCompleteCallbackCalled=!0,a.onFinishRemoteNotification(this._notificationId,e))}},{key:"getMessage",value:function(){return this._alert}},{key:"getSound",value:function(){return this._sound}},{key:"getCategory",value:function(){return this._category}},{key:"getAlert",value:function(){return this._alert}},{key:"getContentAvailable",value:function(){return this._contentAvailable}},{key:"getBadgeCount",value:function(){return this._badgeCount}},{key:"getData",value:function(){return this._data}}]),e}();v.FetchResult={NewData:"UIBackgroundFetchResultNewData",NoData:"UIBackgroundFetchResultNoData",ResultFailed:"UIBackgroundFetchResultFailed"},i.exports=v},291); +__d(function(n,t,o,e){"use strict";var s={get:function(n){return console.warn("Settings is not yet supported on Android"),null},set:function(n){console.warn("Settings is not yet supported on Android")},watchKeys:function(n,t){return console.warn("Settings is not yet supported on Android"),-1},clearWatch:function(n){console.warn("Settings is not yet supported on Android")}};o.exports=s},292); +__d(function(e,t,n,s){"use strict";var i=(t(23),t(13)),o=(t(125),t(15)),l=(o.ActionSheetManager,o.ShareModule),r=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"share",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i("object"==typeof e&&null!==e,"Content to share must be a valid object"),i("string"==typeof e.url||"string"==typeof e.message,"At least one of URL and message is required"),i("object"==typeof t&&null!==t,"Options must be a valid object"),i(!e.title||"string"==typeof e.title,"Invalid title: title should be a string."),l.share(e,t.dialogTitle)}},{key:"sharedAction",get:function(){return"sharedAction"}},{key:"dismissedAction",get:function(){return"dismissedAction"}}]),e}();n.exports=r},293); +__d(function(t,a,r,e){"use strict";var n=a(80);r.exports=new n("StatusBarManager")},294); +__d(function(e,t,n,r){"use strict";var i=t(15).TimePickerAndroid,s=function(){function e(){babelHelpers.classCallCheck(this,e)}return babelHelpers.createClass(e,null,[{key:"open",value:function(e){return regeneratorRuntime.async(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.open(e));case 1:case"end":return t.stop()}},null,this)}},{key:"timeSetAction",get:function(){return"timeSetAction"}},{key:"dismissedAction",get:function(){return"dismissedAction"}}]),e}();n.exports=s},295); +__d(function(r,t,e,n){"use strict";var a=t(15).Vibration,i=(t(23),{vibrate:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("number"==typeof r)a.vibrate(r);else{if(!Array.isArray(r))throw new Error("Vibration pattern should be a number or array");a.vibrateByPattern(r,t?0:-1)}},cancel:function(){a.cancel()}});e.exports=i},296); +__d(function(t,i,o,n){"use strict";var r=i(27),s={vibrate:function(){r("VibrationIOS is not supported on this platform!")}};o.exports=s},297); +__d(function(_,t,E,s){"use strict";var O=t(39),R=O.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;E.exports=R.takeSnapshot},298); +__d(function(e,t,a,r){Object.defineProperty(r,"__esModule",{value:!0});var n=t(47),o=babelHelpers.interopRequireDefault(n),l=t(12),c=t(300),d=babelHelpers.interopRequireDefault(c),i=l.Platform.select({ios:"Press Cmd+R to reload,\nCmd+D or shake for dev menu",android:"Double tap R on your keyboard to reload,\nShake or press menu button for dev menu"}),u=function(e){function t(){return babelHelpers.classCallCheck(this,t),babelHelpers.possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return babelHelpers.inherits(t,e),babelHelpers.createClass(t,[{key:"render",value:function(){var e={ios:{appId:6421,appSalt:"5aebe7204d3136fa6c89cd551761d1629ad9ad50",appKey:"8c4d483a307c8438222753774bbe0c23f67fbb5e",customizedUserAgentEnabled:!0},android:{appId:2684,appSalt:"bcb5a88f92c9f13a92adf58e91498a5f942f3c2b",appKey:"1678bb2f08e02c81ddaa8dbfa4618eb93ed1e330"},debugModeEnabled:!0};d.default.activate(e);var t={name:"wuwei",age:35,married:!0};d.default.setUserInfo(t),d.default.getUserInfo(function(e){e&&console.log("profile of user : "+e.name)});var a={buid:"user-fox-react",optout:!0,trackingCompletionHandler:function(){console.log("tracking completed implementation")},durationSinceClick:43200,deferredDeeplinkHandler:function(e){console.log("deep link : "+(e?e.deeplink:"empty"))}};d.default.trackInstall(a),d.default.trackSession();var r={eventName:"react-purchase",ltvId:5975,buid:"react-buid",value:2,orderId:"react-orderId",sku:"react-sku",itemName:"react-itemname",price:66.6,quantity:3,currency:"USD",eventInfo:{name:"wuwei",age:35,married:!0},extraInfo:{eventId:"pur001",coupon:"10%"}};return d.default.trackEvent(r),o.default.createElement(l.View,{style:s.container},o.default.createElement(l.Text,{style:s.welcome},"Welcome to React Native!"),o.default.createElement(l.Text,{style:s.instructions},"To get started, edit App.js"),o.default.createElement(l.Text,{style:s.instructions},i))}}]),t}(n.Component);r.default=u;var s=l.StyleSheet.create({container:{flex:1,justifyContent:"center",alignItems:"center",backgroundColor:"#F5FCFF"},welcome:{fontSize:20,textAlign:"center",margin:10},instructions:{textAlign:"center",color:"#333333",marginBottom:5}})},299); +__d(function(t,o,e,l){var a=o(12),r=o(301),n=babelHelpers.interopRequireDefault(r),f=o(302),s=babelHelpers.interopRequireDefault(f),c={};c.platformSelect=function(t){var o=babelHelpers.extends(t,t[a.Platform.OS]);return delete o.android,delete o.ios,console.log("[RCT-FOX] platformSelect result : "+JSON.stringify(o)),o},c.activate=function(t){console.log("[RCT-FOX] activate : "+JSON.stringify(t));var o=c.platformSelect(t);"ios"===a.Platform.OS?s.default.activate(o):"android"===a.Platform.OS?n.default.activate(o):console.log("Unsupported platform : "+a.Platform.OS)},c.trackInstall=function(t){console.log("[RCT-FOX] trackInstall : "+JSON.stringify(t));var o=c.platformSelect(t);"ios"===a.Platform.OS?s.default.trackInstall(o):"android"===a.Platform.OS?n.default.trackInstall(o):console.log("Unsupported platform : "+a.Platform.OS)},c.trackSession=function(){console.log("[RCT-FOX] trackSession"),"ios"===a.Platform.OS?s.default.trackSession():"android"===a.Platform.OS?n.default.trackSession():console.log("Unsupported platform : "+a.Platform.OS)},c.trackEvent=function(t){console.log("[RCT-FOX] trackEvent");var o=c.platformSelect(t);"ios"===a.Platform.OS?s.default.trackEvent(o):"android"===a.Platform.OS?n.default.trackEvent(o):console.log("Unsupported platform : "+a.Platform.OS)},c.setUserInfo=function(t){console.log("[RCT-FOX] setUserInfo : "+JSON.stringify(t));var o=c.platformSelect(t);"ios"===a.Platform.OS?s.default.setUserInfo(o):"android"===a.Platform.OS?n.default.setUserInfo(o):console.log("Unsupported platform : "+a.Platform.OS)},c.getUserInfo=function(t){console.log("[RCT-FOX] set getUserInfo callback"),"ios"===a.Platform.OS?s.default.getUserInfo(t):"android"===a.Platform.OS?n.default.getUserInfo(t):console.log("Unsupported platform : "+a.Platform.OS)},e.exports=c},300); +__d(function(e,t,n,i){var d=t(12),o=d.NativeModules.CYZFoxConfig,a=d.NativeModules.CYZFox,r=d.NativeModules.CYZFoxEvent,c={};c.activate=function(e){var t=!1;void 0!=e.debugModeEnabled&&(t=e.debugModeEnabled),o.activate(e.appId,e.appKey,e.appSalt,t)},c.trackInstall=function(e){void 0!=e&&(void 0!=e.redirectURL&&a.addOptionRedirectUrl(e.redirectURL),void 0!=e.buid&&a.addOptionBuid(e.buid),void 0!=e.deferredDeeplinkHandler&&a.registerDeeplinkHandler(e.deferredDeeplinkHandler),void 0!=e.trackingCompletionHandler&&a.setTrackingStateListener(e.trackingCompletionHandler)),a.trackInstall()},c.trackSession=function(){a.trackSession()},c.trackEvent=function(e){r.track(e)},c.setUserInfo=function(e){a.setUserInfo(e)},c.getUserInfo=function(e){a.getUserInfo(e)},n.exports=c},301); +__d(function(e,n,t,a){var r=n(12),o=r.NativeModules.CYZFoxReact,c={};c.activate=function(e){console.log("FoxIos.activate"),o.activate(e)},c.trackInstall=function(e){e?(e.trackingCompletionHandler&&o.setTrackingCompletionHandler(e.trackingCompletionHandler),e.deferredDeeplinkHandler&&o.setDeferredDeeplinkHandler(e.deferredDeeplinkHandler),o.trackInstall(e)):o.trackInstall()},c.trackSession=function(){o.trackSession()},c.trackEvent=function(e){o.trackEvent(e)},c.setUserInfo=function(e){o.setUserInfo(e)},c.getUserInfo=function(e){o.getUserInfo(e)},t.exports=c},302); +;require(59); +;require(0); \ No newline at end of file diff --git a/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle.meta b/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle.meta new file mode 100644 index 0000000..e3e877b --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/assets/index.android.bundle.meta @@ -0,0 +1 @@ +^A6qe5Y#ݹl[ \ No newline at end of file diff --git a/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainActivity.java b/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainActivity.java new file mode 100644 index 0000000..f9033d9 --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainActivity.java @@ -0,0 +1,18 @@ +package com.exapp; + +import com.facebook.react.ReactActivity; + +import co.cyberz.fox.Fox; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "exapp"; + } + +} diff --git a/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainApplication.java b/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainApplication.java new file mode 100644 index 0000000..9d5626d --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/java/com/exapp/MainApplication.java @@ -0,0 +1,48 @@ +package com.exapp; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +import java.util.Arrays; +import java.util.List; + +import co.cyberz.fox.support.reactnative.FoxReactPackage; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new FoxReactPackage() + ); + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } +} diff --git a/lang/zh-cn/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/lang/zh-cn/exapp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cde69bcccec65160d92116f20ffce4fce0b5245c GIT binary patch literal 3418 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 literal 0 HcmV?d00001 diff --git a/lang/zh-cn/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/lang/zh-cn/exapp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa42f0e7b91d006d22352c9ff2f134e504e3c1d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/lang/zh-cn/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/lang/zh-cn/exapp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..324e72cdd7480cb983fa1bcc7ce686e51ef87fe7 GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/lang/zh-cn/exapp/android/app/src/main/res/values/strings.xml b/lang/zh-cn/exapp/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..0d8d6cb --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + exapp + diff --git a/lang/zh-cn/exapp/android/app/src/main/res/values/styles.xml b/lang/zh-cn/exapp/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..319eb0c --- /dev/null +++ b/lang/zh-cn/exapp/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/lang/zh-cn/exapp/android/build.gradle b/lang/zh-cn/exapp/android/build.gradle new file mode 100644 index 0000000..b56f3d3 --- /dev/null +++ b/lang/zh-cn/exapp/android/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.3' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + maven { + url "https://github.com/cyber-z/public-fox-android-sdk/raw/master/mavenRepo" + } + } +} diff --git a/lang/zh-cn/exapp/android/gradle.properties b/lang/zh-cn/exapp/android/gradle.properties new file mode 100644 index 0000000..1fd964e --- /dev/null +++ b/lang/zh-cn/exapp/android/gradle.properties @@ -0,0 +1,20 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +android.useDeprecatedNdk=true diff --git a/lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.jar b/lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5166dad4d90021f6a0b45268c0755719f1d5cd4 GIT binary patch literal 52266 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 z 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 literal 0 HcmV?d00001 diff --git a/lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.properties b/lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dbdc05d --- /dev/null +++ b/lang/zh-cn/exapp/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/lang/zh-cn/exapp/android/gradlew b/lang/zh-cn/exapp/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/lang/zh-cn/exapp/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/lang/zh-cn/exapp/android/gradlew.bat b/lang/zh-cn/exapp/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/lang/zh-cn/exapp/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lang/zh-cn/exapp/android/keystores/BUCK b/lang/zh-cn/exapp/android/keystores/BUCK new file mode 100644 index 0000000..88e4c31 --- /dev/null +++ b/lang/zh-cn/exapp/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/lang/zh-cn/exapp/android/keystores/debug.keystore.properties b/lang/zh-cn/exapp/android/keystores/debug.keystore.properties new file mode 100644 index 0000000..121bfb4 --- /dev/null +++ b/lang/zh-cn/exapp/android/keystores/debug.keystore.properties @@ -0,0 +1,4 @@ +key.store=debug.keystore +key.alias=androiddebugkey +key.store.password=android +key.alias.password=android diff --git a/lang/zh-cn/exapp/android/settings.gradle b/lang/zh-cn/exapp/android/settings.gradle new file mode 100644 index 0000000..bb5620c --- /dev/null +++ b/lang/zh-cn/exapp/android/settings.gradle @@ -0,0 +1,5 @@ +rootProject.name = 'exapp' + +include ':app', ':supportReactNative' + +project(":supportReactNative").projectDir = new File("../../android/supportReactNative") diff --git a/lang/zh-cn/exapp/app.json b/lang/zh-cn/exapp/app.json new file mode 100644 index 0000000..367e61e --- /dev/null +++ b/lang/zh-cn/exapp/app.json @@ -0,0 +1,4 @@ +{ + "name": "exapp", + "displayName": "exapp" +} \ No newline at end of file diff --git a/lang/zh-cn/exapp/fox-android.js b/lang/zh-cn/exapp/fox-android.js new file mode 100644 index 0000000..3ea98e1 --- /dev/null +++ b/lang/zh-cn/exapp/fox-android.js @@ -0,0 +1,44 @@ +import { NativeModules } from 'react-native'; +const foxConfig = NativeModules.CYZFoxConfig; +const fox = NativeModules.CYZFox; +const foxEvent = NativeModules.CYZFoxEvent; + +var FoxAndroid = {} + +FoxAndroid.activate = function(config) { + var isDefaultDebug = false; + if (config.debugModeEnabled != undefined) { + isDefaultDebug = config.debugModeEnabled; + } + foxConfig.activate(config.appId, config.appKey, config.appSalt, isDefaultDebug); +} + +FoxAndroid.trackInstall = function(foxTrackOption) { + if (foxTrackOption != undefined) { + if (foxTrackOption.redirectURL != undefined) fox.addOptionRedirectUrl(foxTrackOption.redirectURL); + if (foxTrackOption.buid != undefined) fox.addOptionBuid(foxTrackOption.buid); + var duration = 0; + if (foxTrackOption.durationSinceClick != undefined) duration = foxTrackOption.durationSinceClick; + if (foxTrackOption.deferredDeeplinkHandler != undefined) fox.registerDeeplinkHandler(duration, foxTrackOption.deferredDeeplinkHandler); + if (foxTrackOption.trackingCompletionHandler != undefined) fox.setTrackingStateListener(foxTrackOption.trackingCompletionHandler); + } + fox.trackInstall(); +} + +FoxAndroid.trackSession = function() { + fox.trackSession(); +} + +FoxAndroid.trackEvent = function(e) { + foxEvent.track(e); +} + +FoxAndroid.setUserInfo = function(userInfo) { + fox.setUserInfo(userInfo); +} + +FoxAndroid.getUserInfo = function(userInfoCallback) { + fox.getUserInfo(userInfoCallback); +} + +module.exports = FoxAndroid; diff --git a/lang/zh-cn/exapp/fox-ios.js b/lang/zh-cn/exapp/fox-ios.js new file mode 100644 index 0000000..2b3b071 --- /dev/null +++ b/lang/zh-cn/exapp/fox-ios.js @@ -0,0 +1,40 @@ +import { NativeModules } from 'react-native'; +const nativeFox = NativeModules.CYZFoxReact; + +var FoxIos = {}; + +FoxIos.activate = function(foxConfig) { + nativeFox.activate(foxConfig); +}; + +FoxIos.trackInstall = function(foxTrackOption) { + if (foxTrackOption) { + if (foxTrackOption.trackingCompletionHandler) { + nativeFox.setTrackingCompletionHandler(foxTrackOption.trackingCompletionHandler); + } + if (foxTrackOption.deferredDeeplinkHandler) { + nativeFox.setDeferredDeeplinkHandler(foxTrackOption.deferredDeeplinkHandler); + } + nativeFox.trackInstall(foxTrackOption); + } else { + nativeFox.trackInstall(); + } +}; + +FoxIos.trackSession = function() { + nativeFox.trackSession(); +}; + +FoxIos.trackEvent = function(foxEvent) { + nativeFox.trackEvent(foxEvent); +}; + +FoxIos.setUserInfo = function(userInfo) { + nativeFox.setUserInfo(userInfo); +}; + +FoxIos.getUserInfo = function(userInfoCallback) { + nativeFox.getUserInfo(userInfoCallback); +}; + +module.exports = FoxIos; diff --git a/lang/zh-cn/exapp/fox.js b/lang/zh-cn/exapp/fox.js new file mode 100644 index 0000000..b902162 --- /dev/null +++ b/lang/zh-cn/exapp/fox.js @@ -0,0 +1,85 @@ +import { Platform } from 'react-native'; +import FoxAndroid from './fox-android.js'; +import FoxIos from './fox-ios.js'; + +var CYZFox = {}; + +CYZFox.platformSelect = function(obj) { + var _Obj = Object.assign(obj, obj[Platform.OS]); + delete _Obj.android; + delete _Obj.ios; + console.log(`[RCT-FOX] platformSelect result : ${JSON.stringify(_Obj)}`); + return _Obj; +}; + +CYZFox.activate = function(foxConfig) { + console.log(`[RCT-FOX] activate : ${JSON.stringify(foxConfig)}`); + const _foxConfig = CYZFox.platformSelect(foxConfig); + if (Platform.OS === 'ios') { + FoxIos.activate(_foxConfig); + } else if (Platform.OS === 'android') { + FoxAndroid.activate(_foxConfig); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +CYZFox.trackInstall = function(foxTrackOption) { + console.log(`[RCT-FOX] trackInstall : ${JSON.stringify(foxTrackOption)}`); + const _foxTrackOption = CYZFox.platformSelect(foxTrackOption); + if (Platform.OS === 'ios') { + FoxIos.trackInstall(_foxTrackOption); + } else if (Platform.OS === 'android') { + FoxAndroid.trackInstall(_foxTrackOption); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +CYZFox.trackSession = function() { + console.log(`[RCT-FOX] trackSession`); + if (Platform.OS === 'ios') { + FoxIos.trackSession(); + } else if (Platform.OS === 'android') { + FoxAndroid.trackSession(); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +CYZFox.trackEvent = function(foxEvent) { + console.log(`[RCT-FOX] trackEvent`); + const _foxEvent = CYZFox.platformSelect(foxEvent); + if (Platform.OS === 'ios') { + FoxIos.trackEvent(_foxEvent); + } else if (Platform.OS === 'android') { + FoxAndroid.trackEvent(_foxEvent); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +CYZFox.setUserInfo = function(userInfo) { + console.log(`[RCT-FOX] setUserInfo : ${JSON.stringify(userInfo)}`); + const _userInfo = CYZFox.platformSelect(userInfo); + if (Platform.OS === 'ios') { + FoxIos.setUserInfo(_userInfo); + } else if (Platform.OS === 'android') { + FoxAndroid.setUserInfo(_userInfo); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +CYZFox.getUserInfo = function(userInfoCallback) { + console.log(`[RCT-FOX] set getUserInfo callback`); + if (Platform.OS === 'ios') { + FoxIos.getUserInfo(userInfoCallback); + } else if (Platform.OS === 'android') { + FoxAndroid.getUserInfo(userInfoCallback); + } else { + console.log(`[RCT-FOX] Unsupported platform : ${Platform.OS}`); + } +}; + +module.exports = CYZFox; diff --git a/lang/zh-cn/exapp/index.js b/lang/zh-cn/exapp/index.js new file mode 100644 index 0000000..f2bba2b --- /dev/null +++ b/lang/zh-cn/exapp/index.js @@ -0,0 +1,4 @@ +import { AppRegistry } from 'react-native'; +import App from './App'; + +AppRegistry.registerComponent('exapp', () => App); diff --git a/lang/zh-cn/exapp/ios/Podfile b/lang/zh-cn/exapp/ios/Podfile new file mode 100644 index 0000000..c8212b3 --- /dev/null +++ b/lang/zh-cn/exapp/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +source "https://github.com/cyber-z/public-fox-ios-sdk.git" +workspace 'exapp' + +abstract_target 'abs_exapp' do + + # Pods for FoxReact + pod "CYZFox", "4.2.2" + + target 'FoxReact' do + # Uncomment the next line if you're using Swift or would like to use dynamic frameworks + # use_frameworks! + project '../../ios/FoxReact/FoxReact' + + end + + target 'exapp' do + # Uncomment the next line if you're using Swift or would like to use dynamic frameworks + # use_frameworks! + + # Pods for exapp + target 'exappTests' do + inherit! :search_paths + # Pods for testing + end + end + +end + +target 'exapp-tvOS' do + # Uncomment the next line if you're using Swift or would like to use dynamic frameworks + # use_frameworks! + + # Pods for exapp-tvOS + + target 'exapp-tvOSTests' do + inherit! :search_paths + # Pods for testing + end + +end diff --git a/lang/zh-cn/exapp/ios/Podfile.lock b/lang/zh-cn/exapp/ios/Podfile.lock new file mode 100644 index 0000000..ddcbaf3 --- /dev/null +++ b/lang/zh-cn/exapp/ios/Podfile.lock @@ -0,0 +1,12 @@ +PODS: + - CYZFox (4.2.2) + +DEPENDENCIES: + - CYZFox (= 4.2.2) + +SPEC CHECKSUMS: + CYZFox: 9450177b926eb4f0b7045e96a8e50c1cceb62770 + +PODFILE CHECKSUM: 0470aefeab2436e0c2a99974df1e10e3fc62f7d5 + +COCOAPODS: 1.2.0 diff --git a/lang/zh-cn/exapp/ios/exapp-tvOS/Info.plist b/lang/zh-cn/exapp/ios/exapp-tvOS/Info.plist new file mode 100644 index 0000000..2fb6a11 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp-tvOS/Info.plist @@ -0,0 +1,54 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSLocationWhenInUseUsageDescription + + NSAppTransportSecurity + + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + + diff --git a/lang/zh-cn/exapp/ios/exapp-tvOSTests/Info.plist b/lang/zh-cn/exapp/ios/exapp-tvOSTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp-tvOSTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/lang/zh-cn/exapp/ios/exapp.xcodeproj/project.pbxproj b/lang/zh-cn/exapp/ios/exapp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..eab59e8 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp.xcodeproj/project.pbxproj @@ -0,0 +1,1714 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; + 00E356F31AD99517003FC87E /* exappTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exappTests.m */; }; + 11D86F561C0592845E27E103 /* libPods-exappTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF232D0B76C3E09D2636609 /* libPods-exappTests.a */; }; + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; }; + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; }; + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; }; + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; }; + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; }; + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; + 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; + 2DCD954D1E0B4F2C00145EB5 /* exappTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exappTests.m */; }; + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 64B17E15A3311D4D7704505F /* libPods-exapp-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 36A1F78EEB2FF245200E9A3B /* libPods-exapp-tvOSTests.a */; }; + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; + B83A4A111F99F321002EFC65 /* libFoxReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B82222B61F97238600521BC8 /* libFoxReact.a */; }; + F5C892E05FCFEA09ABE7E535 /* libPods-abs_exapp-exapp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D1706C353FDB09DD75093C3 /* libPods-abs_exapp-exapp.a */; }; + F9B73FA2A6A3FACD19CEB605 /* libPods-exapp-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E2B88EAE17E7A167C3B59CD /* libPods-exapp-tvOS.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTActionSheet; + }; + 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTGeolocation; + }; + 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5115D1A9E6B3D00147676; + remoteInfo = RCTImage; + }; + 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B511DB1A9E6C8500147676; + remoteInfo = RCTNetwork; + }; + 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; + remoteInfo = RCTVibration; + }; + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = exapp; + }; + 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTSettings; + }; + 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3C86DF461ADF2C930047B81A; + remoteInfo = RCTWebSocket; + }; + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; + 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; + remoteInfo = "exapp-tvOS"; + }; + 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; + remoteInfo = "RCTImage-tvOS"; + }; + 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RCTLinking-tvOS"; + }; + 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; + remoteInfo = "RCTNetwork-tvOS"; + }; + 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28611D9B046600D4039D; + remoteInfo = "RCTSettings-tvOS"; + }; + 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; + remoteInfo = "RCTText-tvOS"; + }; + 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28881D9B049200D4039D; + remoteInfo = "RCTWebSocket-tvOS"; + }; + 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C059A1DE3340900C268FA; + remoteInfo = yoga; + }; + 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C06751DE3340C00C268FA; + remoteInfo = "yoga-tvOS"; + }; + 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; + remoteInfo = cxxreact; + }; + 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; + remoteInfo = "cxxreact-tvOS"; + }; + 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; + remoteInfo = jschelpers; + }; + 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; + remoteInfo = "jschelpers-tvOS"; + }; + 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTAnimation; + }; + 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28201D9B03D100D4039D; + remoteInfo = "RCTAnimation-tvOS"; + }; + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTLinking; + }; + 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5119B1A9E6C1200147676; + remoteInfo = RCTText; + }; + ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 358F4ED71D1E81A9004DF814; + remoteInfo = RCTBlob; + }; + B813594F1F9DC3DF0098C238 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222B11F97238500521BC8 /* FoxReact.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = B82222A41F97238500521BC8; + remoteInfo = FoxReact; + }; + B82222B51F97238600521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222B11F97238500521BC8 /* FoxReact.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = B82222A51F97238500521BC8; + remoteInfo = FoxReact; + }; + B82222BC1F97238600521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ADD01A681E09402E00F6D226; + remoteInfo = "RCTBlob-tvOS"; + }; + B82222CE1F97238600521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; + remoteInfo = fishhook; + }; + B82222D01F97238600521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; + remoteInfo = "fishhook-tvOS"; + }; + B82223B61F986ECD00521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; + remoteInfo = "third-party"; + }; + B82223B81F986ECD00521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + B82223BA1F986ECD00521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7E881E25C6D100323FB7; + remoteInfo = "double-conversion"; + }; + B82223BC1F986ECD00521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* exappTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exappTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* exappTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exappTests.m; sourceTree = ""; }; + 024459C074ABD7FDED2E1152 /* Pods-exappTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exappTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-exappTests/Pods-exappTests.debug.xcconfig"; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* exapp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = exapp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = exapp/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = exapp/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = exapp/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = exapp/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = exapp/main.m; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 1AC808145EDDAF2355E64407 /* Pods-exapp-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp-tvOSTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-exapp-tvOSTests/Pods-exapp-tvOSTests.debug.xcconfig"; sourceTree = ""; }; + 1D1706C353FDB09DD75093C3 /* libPods-abs_exapp-exapp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-abs_exapp-exapp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E47B1E0B4A5D006451C7 /* exapp-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "exapp-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E4901E0B4A5D006451C7 /* exapp-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "exapp-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 30E31585DA8944A9D74694D8 /* Pods-abs_exapp-exapp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-abs_exapp-exapp.release.xcconfig"; path = "Pods/Target Support Files/Pods-abs_exapp-exapp/Pods-abs_exapp-exapp.release.xcconfig"; sourceTree = ""; }; + 36A1F78EEB2FF245200E9A3B /* libPods-exapp-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exapp-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 37F416165FA8D51199374BFA /* Pods-exapp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp.debug.xcconfig"; path = "Pods/Target Support Files/Pods-exapp/Pods-exapp.debug.xcconfig"; sourceTree = ""; }; + 3A0B9A716E0A213D0E9629C4 /* Pods-exapp-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp-tvOSTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-exapp-tvOSTests/Pods-exapp-tvOSTests.release.xcconfig"; sourceTree = ""; }; + 3E2B88EAE17E7A167C3B59CD /* libPods-exapp-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exapp-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; + 67A3C1084CE9675485DD1213 /* Pods-exapp-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp-tvOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-exapp-tvOS/Pods-exapp-tvOS.debug.xcconfig"; sourceTree = ""; }; + 6DF232D0B76C3E09D2636609 /* libPods-exappTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exappTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 76720B7A305FDEADDB942F24 /* Pods-abs_exapp-exapp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-abs_exapp-exapp.debug.xcconfig"; path = "Pods/Target Support Files/Pods-abs_exapp-exapp/Pods-abs_exapp-exapp.debug.xcconfig"; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; + A9DF21AAF5324998C2420036 /* Pods-exapp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp.release.xcconfig"; path = "Pods/Target Support Files/Pods-exapp/Pods-exapp.release.xcconfig"; sourceTree = ""; }; + AA922A352AE521FFB325543B /* Pods-exappTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exappTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-exappTests/Pods-exappTests.release.xcconfig"; sourceTree = ""; }; + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; + AE754E9A4BAB0D64C38E9279 /* libPods-exapp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exapp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B82222B11F97238500521BC8 /* FoxReact.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = FoxReact.xcodeproj; path = ../../ios/FoxReact/FoxReact.xcodeproj; sourceTree = ""; }; + FEE073B6F666F0EF6466F8A6 /* Pods-exapp-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exapp-tvOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-exapp-tvOS/Pods-exapp-tvOS.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, + 11D86F561C0592845E27E103 /* libPods-exappTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B83A4A111F99F321002EFC65 /* libFoxReact.a in Frameworks */, + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 146834051AC3E58100842450 /* libReact.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + F5C892E05FCFEA09ABE7E535 /* libPods-abs_exapp-exapp.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */, + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */, + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */, + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */, + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */, + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, + F9B73FA2A6A3FACD19CEB605 /* libPods-exapp-tvOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 64B17E15A3311D4D7704505F /* libPods-exapp-tvOSTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00C302A81ABCB8CE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302B61ABCB90400DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302BC1ABCB91800DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302D41ABCB9D200DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302E01ABCB9EE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, + ); + name = Products; + sourceTree = ""; + }; + 00E356EF1AD99517003FC87E /* exappTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* exappTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = exappTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 139105B71AF99BAD00B5F7CC /* Products */ = { + isa = PBXGroup; + children = ( + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 139FDEE71B06529A00C62182 /* Products */ = { + isa = PBXGroup; + children = ( + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, + B82222CF1F97238600521BC8 /* libfishhook.a */, + B82222D11F97238600521BC8 /* libfishhook-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* exapp */ = { + isa = PBXGroup; + children = ( + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = exapp; + sourceTree = ""; + }; + 146834001AC3E56700842450 /* Products */ = { + isa = PBXGroup; + children = ( + 146834041AC3E56700842450 /* libReact.a */, + 3DAD3EA31DF850E9000B6D8A /* libReact.a */, + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, + B82223B71F986ECD00521BC8 /* libthird-party.a */, + B82223B91F986ECD00521BC8 /* libthird-party.a */, + B82223BB1F986ECD00521BC8 /* libdouble-conversion.a */, + B82223BD1F986ECD00521BC8 /* libdouble-conversion.a */, + ); + name = Products; + sourceTree = ""; + }; + 46F3516D2840B078BCA8070E /* Pods */ = { + isa = PBXGroup; + children = ( + 37F416165FA8D51199374BFA /* Pods-exapp.debug.xcconfig */, + A9DF21AAF5324998C2420036 /* Pods-exapp.release.xcconfig */, + 67A3C1084CE9675485DD1213 /* Pods-exapp-tvOS.debug.xcconfig */, + FEE073B6F666F0EF6466F8A6 /* Pods-exapp-tvOS.release.xcconfig */, + 1AC808145EDDAF2355E64407 /* Pods-exapp-tvOSTests.debug.xcconfig */, + 3A0B9A716E0A213D0E9629C4 /* Pods-exapp-tvOSTests.release.xcconfig */, + 024459C074ABD7FDED2E1152 /* Pods-exappTests.debug.xcconfig */, + AA922A352AE521FFB325543B /* Pods-exappTests.release.xcconfig */, + 76720B7A305FDEADDB942F24 /* Pods-abs_exapp-exapp.debug.xcconfig */, + 30E31585DA8944A9D74694D8 /* Pods-abs_exapp-exapp.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 5E91572E1DD0AC6500FF2AA8 /* Products */ = { + isa = PBXGroup; + children = ( + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */, + ); + name = Products; + sourceTree = ""; + }; + 78C398B11ACF4ADC00677621 /* Products */ = { + isa = PBXGroup; + children = ( + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + B82222B11F97238500521BC8 /* FoxReact.xcodeproj */, + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, + 146833FF1AC3E56700842450 /* React.xcodeproj */, + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */, + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + ); + name = Libraries; + sourceTree = ""; + }; + 832341B11AAA6A8300B99B32 /* Products */ = { + isa = PBXGroup; + children = ( + 832341B51AAA6A8300B99B32 /* libRCTText.a */, + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* exapp */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* exappTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + B82223081F972FA600521BC8 /* Frameworks */, + 46F3516D2840B078BCA8070E /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* exapp.app */, + 00E356EE1AD99517003FC87E /* exappTests.xctest */, + 2D02E47B1E0B4A5D006451C7 /* exapp-tvOS.app */, + 2D02E4901E0B4A5D006451C7 /* exapp-tvOSTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + ADBDB9201DFEBF0600ED6528 /* Products */ = { + isa = PBXGroup; + children = ( + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, + B82222BD1F97238600521BC8 /* libRCTBlob-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + B82222B21F97238500521BC8 /* Products */ = { + isa = PBXGroup; + children = ( + B82222B61F97238600521BC8 /* libFoxReact.a */, + ); + name = Products; + sourceTree = ""; + }; + B82223081F972FA600521BC8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AE754E9A4BAB0D64C38E9279 /* libPods-exapp.a */, + 3E2B88EAE17E7A167C3B59CD /* libPods-exapp-tvOS.a */, + 36A1F78EEB2FF245200E9A3B /* libPods-exapp-tvOSTests.a */, + 6DF232D0B76C3E09D2636609 /* libPods-exappTests.a */, + 1D1706C353FDB09DD75093C3 /* libPods-abs_exapp-exapp.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* exappTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exappTests" */; + buildPhases = ( + B73CCDA3F7649D6CF0D26C93 /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + 870A832D41AD93C5D48994D2 /* [CP] Embed Pods Frameworks */, + B1F31C74950283ACE4198DDB /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = exappTests; + productName = exappTests; + productReference = 00E356EE1AD99517003FC87E /* exappTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* exapp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "exapp" */; + buildPhases = ( + 006713626B625FCCE3501679 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + F7039522BB11CF8B2F759638 /* [CP] Embed Pods Frameworks */, + 2EE6CB9DDC721549A661D58D /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + B81359501F9DC3DF0098C238 /* PBXTargetDependency */, + ); + name = exapp; + productName = "Hello World"; + productReference = 13B07F961A680F5B00A75B9A /* exapp.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E47A1E0B4A5D006451C7 /* exapp-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "exapp-tvOS" */; + buildPhases = ( + 090DB63FA7F16A08EA22FE0E /* [CP] Check Pods Manifest.lock */, + 2D02E4771E0B4A5D006451C7 /* Sources */, + 2D02E4781E0B4A5D006451C7 /* Frameworks */, + 2D02E4791E0B4A5D006451C7 /* Resources */, + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, + 86D70EC4714422852D51B47F /* [CP] Embed Pods Frameworks */, + 7A49DCE8C99649DFFF9283C2 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "exapp-tvOS"; + productName = "exapp-tvOS"; + productReference = 2D02E47B1E0B4A5D006451C7 /* exapp-tvOS.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E48F1E0B4A5D006451C7 /* exapp-tvOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "exapp-tvOSTests" */; + buildPhases = ( + 88E243BF75C4AFAB6879FE4D /* [CP] Check Pods Manifest.lock */, + 2D02E48C1E0B4A5D006451C7 /* Sources */, + 2D02E48D1E0B4A5D006451C7 /* Frameworks */, + 2D02E48E1E0B4A5D006451C7 /* Resources */, + 35BEAE8ED2747E933143DE9C /* [CP] Embed Pods Frameworks */, + 088CF3297DF1125BDAE01747 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, + ); + name = "exapp-tvOSTests"; + productName = "exapp-tvOSTests"; + productReference = 2D02E4901E0B4A5D006451C7 /* exapp-tvOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + DevelopmentTeam = DUP2JGEFH3; + ProvisioningStyle = Manual; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = DUP2JGEFH3; + ProvisioningStyle = Manual; + }; + 2D02E47A1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + ProvisioningStyle = Manual; + }; + 2D02E48F1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + ProvisioningStyle = Automatic; + TestTargetID = 2D02E47A1E0B4A5D006451C7; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "exapp" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B82222B21F97238500521BC8 /* Products */; + ProjectRef = B82222B11F97238500521BC8 /* FoxReact.xcodeproj */; + }, + { + ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; + ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + }, + { + ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; + ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + }, + { + ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */; + ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + }, + { + ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; + ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + }, + { + ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; + ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + }, + { + ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; + ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + }, + { + ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; + ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + }, + { + ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; + ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + }, + { + ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; + ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + }, + { + ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; + ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + }, + { + ProductGroup = 139FDEE71B06529A00C62182 /* Products */; + ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + }, + { + ProductGroup = 146834001AC3E56700842450 /* Products */; + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* exapp */, + 00E356ED1AD99517003FC87E /* exappTests */, + 2D02E47A1E0B4A5D006451C7 /* exapp-tvOS */, + 2D02E48F1E0B4A5D006451C7 /* exapp-tvOSTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTActionSheet.a; + remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTGeolocation.a; + remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTImage.a; + remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTNetwork.a; + remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTVibration.a; + remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTSettings.a; + remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTWebSocket.a; + remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 146834041AC3E56700842450 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTImage-tvOS.a"; + remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTLinking-tvOS.a"; + remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTNetwork-tvOS.a"; + remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTSettings-tvOS.a"; + remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTText-tvOS.a"; + remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTWebSocket-tvOS.a"; + remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTLinking.a; + remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTText.a; + remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTBlob.a; + remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222B61F97238600521BC8 /* libFoxReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libFoxReact.a; + remoteRef = B82222B51F97238600521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222BD1F97238600521BC8 /* libRCTBlob-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTBlob-tvOS.a"; + remoteRef = B82222BC1F97238600521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222CF1F97238600521BC8 /* libfishhook.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libfishhook.a; + remoteRef = B82222CE1F97238600521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222D11F97238600521BC8 /* libfishhook-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libfishhook-tvOS.a"; + remoteRef = B82222D01F97238600521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223B71F986ECD00521BC8 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = B82223B61F986ECD00521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223B91F986ECD00521BC8 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = B82223B81F986ECD00521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223BB1F986ECD00521BC8 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = B82223BA1F986ECD00521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223BD1F986ECD00521BC8 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = B82223BC1F986ECD00521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4791E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48E1E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 006713626B625FCCE3501679 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 088CF3297DF1125BDAE01747 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exapp-tvOSTests/Pods-exapp-tvOSTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 090DB63FA7F16A08EA22FE0E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native Code And Images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 2EE6CB9DDC721549A661D58D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-abs_exapp-exapp/Pods-abs_exapp-exapp-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 35BEAE8ED2747E933143DE9C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exapp-tvOSTests/Pods-exapp-tvOSTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 7A49DCE8C99649DFFF9283C2 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exapp-tvOS/Pods-exapp-tvOS-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 86D70EC4714422852D51B47F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exapp-tvOS/Pods-exapp-tvOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 870A832D41AD93C5D48994D2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exappTests/Pods-exappTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 88E243BF75C4AFAB6879FE4D /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + B1F31C74950283ACE4198DDB /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-exappTests/Pods-exappTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + B73CCDA3F7649D6CF0D26C93 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + F7039522BB11CF8B2F759638 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-abs_exapp-exapp/Pods-abs_exapp-exapp-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* exappTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4771E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48C1E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DCD954D1E0B4F2C00145EB5 /* exappTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* exapp */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 2D02E47A1E0B4A5D006451C7 /* exapp-tvOS */; + targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; + }; + B81359501F9DC3DF0098C238 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FoxReact; + targetProxy = B813594F1F9DC3DF0098C238 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = exapp; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 024459C074ABD7FDED2E1152 /* Pods-exappTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = DUP2JGEFH3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = exappTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/exapp.app/exapp"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AA922A352AE521FFB325543B /* Pods-exappTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = exappTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/exapp.app/exapp"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 76720B7A305FDEADDB942F24 /* Pods-abs_exapp-exapp.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = DUP2JGEFH3; + INFOPLIST_FILE = exapp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = exapp; + PROVISIONING_PROFILE = "bcc0172e-27ff-41e7-84b4-cfcdc25d3009"; + PROVISIONING_PROFILE_SPECIFIER = WildcardProfile; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 30E31585DA8944A9D74694D8 /* Pods-abs_exapp-exapp.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + INFOPLIST_FILE = exapp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = exapp; + PROVISIONING_PROFILE_SPECIFIER = ""; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 2D02E4971E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 67A3C1084CE9675485DD1213 /* Pods-exapp-tvOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_STYLE = Manual; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "exapp-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.exapp-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + }; + name = Debug; + }; + 2D02E4981E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FEE073B6F666F0EF6466F8A6 /* Pods-exapp-tvOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_STYLE = Manual; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "exapp-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.exapp-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + }; + name = Release; + }; + 2D02E4991E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1AC808145EDDAF2355E64407 /* Pods-exapp-tvOSTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "exapp-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.exapp-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/exapp-tvOS.app/exapp-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Debug; + }; + 2D02E49A1E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3A0B9A716E0A213D0E9629C4 /* Pods-exapp-tvOSTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "exapp-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.exapp-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/exapp-tvOS.app/exapp-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exappTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "exapp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "exapp-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4971E0B4A5E006451C7 /* Debug */, + 2D02E4981E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "exapp-tvOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4991E0B4A5E006451C7 /* Debug */, + 2D02E49A1E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "exapp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme b/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme new file mode 100644 index 0000000..68d6197 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp-tvOS.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme b/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme new file mode 100644 index 0000000..13d99ca --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp.xcodeproj/xcshareddata/xcschemes/exapp.xcscheme @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lang/zh-cn/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata b/lang/zh-cn/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..69d3c9c --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/lang/zh-cn/exapp/ios/exapp/AppDelegate.h b/lang/zh-cn/exapp/ios/exapp/AppDelegate.h new file mode 100644 index 0000000..a9654d5 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/AppDelegate.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/lang/zh-cn/exapp/ios/exapp/AppDelegate.m b/lang/zh-cn/exapp/ios/exapp/AppDelegate.m new file mode 100644 index 0000000..119af55 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/AppDelegate.m @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "AppDelegate.h" + +#import +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + NSURL *jsCodeLocation; + + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; + + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation + moduleName:@"exapp" + initialProperties:nil + launchOptions:launchOptions]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +@end diff --git a/lang/zh-cn/exapp/ios/exapp/Base.lproj/LaunchScreen.xib b/lang/zh-cn/exapp/ios/exapp/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..e08f5a1 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/Base.lproj/LaunchScreen.xib @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lang/zh-cn/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json b/lang/zh-cn/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/lang/zh-cn/exapp/ios/exapp/Info.plist b/lang/zh-cn/exapp/ios/exapp/Info.plist new file mode 100644 index 0000000..afdb52f --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/Info.plist @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + exapp + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + goiapp + + + + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/lang/zh-cn/exapp/ios/exapp/main.m b/lang/zh-cn/exapp/ios/exapp/main.m new file mode 100644 index 0000000..3d767fc --- /dev/null +++ b/lang/zh-cn/exapp/ios/exapp/main.m @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/lang/zh-cn/exapp/ios/exappTests/Info.plist b/lang/zh-cn/exapp/ios/exappTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/lang/zh-cn/exapp/ios/exappTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/lang/zh-cn/exapp/ios/exappTests/exappTests.m b/lang/zh-cn/exapp/ios/exappTests/exappTests.m new file mode 100644 index 0000000..fdb7e51 --- /dev/null +++ b/lang/zh-cn/exapp/ios/exappTests/exappTests.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" + +@interface exappTests : XCTestCase + +@end + +@implementation exappTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + + RCTSetLogFunction(RCTDefaultLogFunction); + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/lang/zh-cn/exapp/package-lock.json b/lang/zh-cn/exapp/package-lock.json new file mode 100644 index 0000000..24f99a1 --- /dev/null +++ b/lang/zh-cn/exapp/package-lock.json @@ -0,0 +1,7179 @@ +{ + "name": "exapp", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "absolute-path": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", + "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=" + }, + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.5.3" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + } + }, + "ajv": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", + "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "art": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/art/-/art-0.10.1.tgz", + "integrity": "sha1-OFQYg+OZIlxeGT/yRujxV897IUY=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "esutils": "2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "21.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.8.0", + "test-exclude": "4.1.1" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "babel-plugin-react-transform": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz", + "integrity": "sha1-UVu/qZaJOYEULZCx+bFjXeKZUQk=", + "requires": { + "lodash": "4.17.4" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz", + "integrity": "sha1-Gew2yxSGtZ+fRorfpCzhOQjKKZk=", + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-es3-member-expression-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz", + "integrity": "sha1-cz00RPPsxBvvjtGmpOCWV7iWnrs=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es3-property-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz", + "integrity": "sha1-sgeNWELiKr9A9z6M3pzTcRq9V1g=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-assign": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz", + "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "requires": { + "babel-helper-builder-react-jsx": "6.26.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "6.18.0", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-preset-es2015-node": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015-node/-/babel-preset-es2015-node-6.1.1.tgz", + "integrity": "sha1-YLIxVwJLDP6/OmNVTLBe4DW05V8=", + "requires": { + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "semver": "5.4.1" + } + }, + "babel-preset-fbjs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-2.1.4.tgz", + "integrity": "sha512-6XVQwlO26V5/0P9s2Eje8Epqkv/ihaMJ798+W98ktOA8fCn2IFM6wEi7CDW3fTbKFZ/8fDGvGZH01B6GSuNiWA==", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es3-member-expression-literals": "6.22.0", + "babel-plugin-transform-es3-property-literals": "6.22.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1" + } + }, + "babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "21.2.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-preset-react-native": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-4.0.0.tgz", + "integrity": "sha512-Wfbo6x244nUbBxjr7hQaNFdjj7FDYU+TVT7cFVPEdVPI68vhN52iLvamm+ErhNdHq6M4j1cMT6AJBYx7Wzdr0g==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-react-transform": "3.0.0", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-object-assign": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-template": "6.26.0", + "react-transform-hmr": "1.0.4" + }, + "dependencies": { + "babel-plugin-react-transform": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz", + "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" + }, + "base64-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg=" + }, + "basic-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA=" + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=" + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=" + }, + "big-integer": { + "version": "1.6.25", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.25.tgz", + "integrity": "sha1-HeRan1dUKsIBIcaC+NZCIgo06CM=" + }, + "body-parser": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=", + "requires": { + "bytes": "2.1.0", + "content-type": "1.0.4", + "debug": "2.2.0", + "depd": "1.0.1", + "http-errors": "1.3.1", + "iconv-lite": "0.4.11", + "on-finished": "2.3.0", + "qs": "4.0.0", + "raw-body": "2.1.7", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "iconv-lite": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.2.0" + } + }, + "bplist-creator": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", + "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", + "requires": { + "stream-buffers": "2.2.0" + } + }, + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "requires": { + "big-integer": "1.6.25" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "requires": { + "node-int64": "0.4.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q=" + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "ci-info": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.1.tgz", + "integrity": "sha512-vHDDF/bP9RYpTWtUhpJRhCFdvvp3iDWvEbuDbWgvjUrNGV1MXJrE0MPcwGtEled04m61iwdBLUIHZtDgzWS4ZQ==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, + "compressible": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz", + "integrity": "sha1-FnGKdd4oPtjmBAQWJaIGRYZ5fYo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "compression": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U=", + "requires": { + "accepts": "1.2.13", + "bytes": "2.1.0", + "compressible": "2.0.11", + "debug": "2.2.0", + "on-headers": "1.0.1", + "vary": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "connect": { + "version": "2.30.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", + "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=", + "requires": { + "basic-auth-connect": "1.0.0", + "body-parser": "1.13.3", + "bytes": "2.1.0", + "compression": "1.5.2", + "connect-timeout": "1.6.2", + "content-type": "1.0.4", + "cookie": "0.1.3", + "cookie-parser": "1.3.5", + "cookie-signature": "1.0.6", + "csurf": "1.8.3", + "debug": "2.2.0", + "depd": "1.0.1", + "errorhandler": "1.4.3", + "express-session": "1.11.3", + "finalhandler": "0.4.0", + "fresh": "0.3.0", + "http-errors": "1.3.1", + "method-override": "2.3.10", + "morgan": "1.6.1", + "multiparty": "3.3.2", + "on-headers": "1.0.1", + "parseurl": "1.3.2", + "pause": "0.1.0", + "qs": "4.0.0", + "response-time": "2.3.2", + "serve-favicon": "2.3.2", + "serve-index": "1.7.3", + "serve-static": "1.10.3", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vhost": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "connect-timeout": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", + "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4=", + "requires": { + "debug": "2.2.0", + "http-errors": "1.3.1", + "ms": "0.7.1", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "content-type-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=" + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", + "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo=" + }, + "create-react-class": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", + "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "csrf": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", + "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo=", + "requires": { + "rndm": "1.2.0", + "tsscmp": "1.0.5", + "uid-safe": "2.1.4" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "csurf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", + "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "csrf": "3.0.6", + "http-errors": "1.3.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=" + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "requires": { + "readable-stream": "1.1.14" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "envinfo": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-3.4.1.tgz", + "integrity": "sha1-jIDp8u7CzU4q2yxdASfOB6Kqoq4=", + "requires": { + "minimist": "1.2.0", + "os-name": "2.0.1", + "which": "1.3.0" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "errorhandler": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", + "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=", + "requires": { + "accepts": "1.3.4", + "escape-html": "1.0.3" + }, + "dependencies": { + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + } + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=" + }, + "event-target-shim": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-1.1.1.tgz", + "integrity": "sha1-qG5e5r2qFgVEddp5fM3fDFVphJE=" + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "21.2.1", + "jest-get-type": "21.2.0", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + } + } + }, + "express-session": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", + "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=", + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "crc": "3.3.0", + "debug": "2.2.0", + "depd": "1.0.1", + "on-headers": "1.0.1", + "parseurl": "1.3.2", + "uid-safe": "2.0.0", + "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "uid-safe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", + "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc=", + "requires": { + "base64-url": "1.2.1" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "external-editor": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", + "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "requires": { + "iconv-lite": "0.4.19", + "jschardet": "1.5.1", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "requires": { + "chalk": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "requires": { + "bser": "2.0.0" + } + }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + } + }, + "fbjs-scripts": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-0.8.1.tgz", + "integrity": "sha512-hTjqlua9YJupF8shbVRTq20xKPITnDmqBLBQyR9BttZYT+gxGeKboIzPC19T3Erp29Q0+jdMwjUiyTHR61q1Bw==", + "requires": { + "babel-core": "6.26.0", + "babel-preset-fbjs": "2.1.4", + "core-js": "2.5.1", + "cross-spawn": "5.1.0", + "gulp-util": "3.0.8", + "object-assign": "4.1.1", + "semver": "5.4.1", + "through2": "2.0.3" + }, + "dependencies": { + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + } + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=", + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.2", + "on-finished": "2.3.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "escape-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + } + } + }, + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "requires": { + "ansi": "0.3.1", + "has-unicode": "2.0.1", + "lodash.pad": "4.5.1", + "lodash.padend": "4.6.1", + "lodash.padstart": "4.6.1" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "2.19.0", + "process": "0.5.2" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "requires": { + "sparkles": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "requires": { + "array-differ": "1.0.0", + "array-uniq": "1.0.3", + "beeper": "1.1.1", + "chalk": "1.1.3", + "dateformat": "2.2.0", + "fancy-log": "1.3.0", + "gulplog": "1.0.0", + "has-gulplog": "0.1.0", + "lodash._reescape": "3.0.0", + "lodash._reevaluate": "3.0.0", + "lodash._reinterpolate": "3.0.0", + "lodash.template": "3.6.2", + "minimist": "1.2.0", + "multipipe": "0.1.2", + "object-assign": "3.0.0", + "replace-ext": "0.0.1", + "through2": "2.0.3", + "vinyl": "0.5.3" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "1.0.0" + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.7.5" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "5.2.3", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "requires": { + "sparkles": "1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.0.2" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "html-encoding-sniffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "requires": { + "inherits": "2.0.3", + "statuses": "1.3.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "image-size": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.1.tgz", + "integrity": "sha512-lHMlI2MykfeHAQdtydQh4fTcBQVf4zLTA91w1euBe9rbmAfJ/iyzMh8H3KD9u1RldlHaMS3tmMV5TEe9BkmW9g==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.2.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.0.5", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.14.tgz", + "integrity": "sha1-JbxXAffGgMD//5E95G42GaOm5oA=", + "dev": true, + "requires": { + "async": "2.5.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.8.0", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.2", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz", + "integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "dev": true, + "requires": { + "debug": "2.6.9", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", + "dev": true, + "requires": { + "jest-cli": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.2.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.1.14", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.8.0", + "istanbul-lib-source-maps": "1.2.1", + "jest-changed-files": "21.2.0", + "jest-config": "21.2.1", + "jest-environment-jsdom": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve-dependencies": "21.2.0", + "jest-runner": "21.2.1", + "jest-runtime": "21.2.1", + "jest-snapshot": "21.2.1", + "jest-util": "21.2.1", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "3.0.0", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "worker-farm": "1.5.0", + "yargs": "9.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.5.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "glob": "7.1.2", + "jest-environment-jsdom": "21.2.1", + "jest-environment-node": "21.2.1", + "jest-get-type": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "jest-validate": "21.2.1", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "diff": "3.4.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-docblock": { + "version": "20.1.0-echo.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.1.0-echo.1.tgz", + "integrity": "sha512-zJPqHgxSlu5AYjyFLoXzwSqTZGeRAbtW9lTrWfjfDWyQCQjPlt9j9s7t3UBoDwUocM7qVNdlrcXPPtBkQR1dJw==" + }, + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1" + } + }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-haste-map": { + "version": "20.1.0-echo.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.1.0-echo.1.tgz", + "integrity": "sha512-5hhKBYWNHIgVnGcOtzo0wsjHuMqZ+9RUmKou4py8yhjYmtbwVVVFcuvTBClwXt/NdrQ8JrbCvtHq5b4IWS7ieg==", + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.1.0-echo.1", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.5.0" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "expect": "21.2.1", + "graceful-fs": "4.1.11", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-snapshot": "21.2.1", + "p-cancelable": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.2.0", + "is-builtin-module": "1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", + "dev": true, + "requires": { + "jest-regex-util": "21.2.0" + } + }, + "jest-runner": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", + "dev": true, + "requires": { + "jest-config": "21.2.1", + "jest-docblock": "21.2.0", + "jest-haste-map": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-message-util": "21.2.1", + "jest-runtime": "21.2.1", + "jest-util": "21.2.1", + "pify": "3.0.0", + "throat": "4.1.0", + "worker-farm": "1.5.0" + }, + "dependencies": { + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.5.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "21.2.0", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.2.0", + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "jest-config": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.5.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.2.0", + "graceful-fs": "4.1.11", + "jest-message-util": "21.2.1", + "jest-mock": "21.2.0", + "jest-validate": "21.2.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.2.0", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha512-0BMM/2hG3ZaoPfR6F+h/oWpZtsh3b/s62TjSM6MGCJWEbJDN1acqCXvyhhZsDSVFklpebUoQ5O1kKC7lOzrn9g==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jschardet": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.1.tgz", + "integrity": "sha512-vE2hT1D0HLZCLLclfBSfkfTTedhVj0fubHpJBHKwwUWX0nSbhPAfk+SG9rTX95BYNmau8rGFfCeaT6T5OW1C2A==" + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.1", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.1", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.1", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.1.3.tgz", + "integrity": "sha1-YS9hwDPzqeCOk58crr7qQbbzGZo=" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=" + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=" + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "requires": { + "lodash._root": "3.0.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=" + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash._basetostring": "3.0.1", + "lodash._basevalues": "3.0.0", + "lodash._isiterateecall": "3.0.9", + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0", + "lodash.keys": "3.1.2", + "lodash.restparam": "3.6.1", + "lodash.templatesettings": "3.1.1" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.escape": "3.2.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "macos-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==" + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.4" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "method-override": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", + "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=", + "requires": { + "debug": "2.6.9", + "methods": "1.1.2", + "parseurl": "1.3.2", + "vary": "1.1.2" + }, + "dependencies": { + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "metro-bundler": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/metro-bundler/-/metro-bundler-0.13.0.tgz", + "integrity": "sha512-fJAUuQ2HOVfXJVmTlrjj/KFrkK6ww/EJNoNzfNB+7KravsQ5otf8s1IFkSoBYTfi1kM4AuiBlqrWvmn27zcScg==", + "requires": { + "absolute-path": "0.0.0", + "async": "2.5.0", + "babel-core": "6.26.0", + "babel-generator": "6.26.0", + "babel-plugin-external-helpers": "6.22.0", + "babel-preset-es2015-node": "6.1.1", + "babel-preset-fbjs": "2.1.4", + "babel-preset-react-native": "2.1.0", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "core-js": "2.5.1", + "debug": "2.6.9", + "denodeify": "1.2.1", + "fbjs": "0.8.14", + "graceful-fs": "4.1.11", + "image-size": "0.6.1", + "jest-docblock": "20.1.0-echo.1", + "jest-haste-map": "20.1.0-echo.1", + "json-stable-stringify": "1.0.1", + "json5": "0.4.0", + "left-pad": "1.1.3", + "lodash": "4.17.4", + "merge-stream": "1.0.1", + "mime-types": "2.1.11", + "mkdirp": "0.5.1", + "request": "2.83.0", + "rimraf": "2.6.2", + "source-map": "0.5.7", + "temp": "0.8.3", + "throat": "4.1.0", + "uglify-js": "2.7.5", + "write-file-atomic": "1.3.4", + "xpipe": "1.0.5" + }, + "dependencies": { + "babel-preset-react-native": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-2.1.0.tgz", + "integrity": "sha1-kBPr2C2hyIECv1iIEP9Z4gnKK4o=", + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-react-transform": "2.0.2", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-plugin-syntax-class-properties": "6.13.0", + "babel-plugin-syntax-flow": "6.18.0", + "babel-plugin-syntax-jsx": "6.18.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-object-assign": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-display-name": "6.25.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "react-transform-hmr": "1.0.4" + } + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + }, + "fbjs": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.14.tgz", + "integrity": "sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + } + } + }, + "json5": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=" + }, + "mime-db": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk=" + }, + "mime-types": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", + "requires": { + "mime-db": "1.23.0" + } + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "0.1.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "morgan": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=", + "requires": { + "basic-auth": "1.0.4", + "debug": "2.2.0", + "depd": "1.0.1", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multiparty": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", + "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=", + "requires": { + "readable-stream": "1.1.14", + "stream-counter": "0.2.0" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npmlog": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", + "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", + "requires": { + "ansi": "0.3.1", + "are-we-there-yet": "1.1.4", + "gauge": "1.2.7" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "opn": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", + "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", + "requires": { + "object-assign": "4.1.1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "1.0.0" + } + }, + "os-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", + "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", + "requires": { + "macos-release": "1.1.0", + "win-release": "1.1.1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pause": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", + "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q=" + }, + "pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "plist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-1.2.0.tgz", + "integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=", + "requires": { + "base64-js": "0.0.8", + "util-deprecate": "1.0.2", + "xmlbuilder": "4.0.0", + "xmldom": "0.1.27" + }, + "dependencies": { + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=" + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-format": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-4.3.1.tgz", + "integrity": "sha1-UwvlxCs8BbNkFKeipDN6qArNDo0=" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=" + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + } + } + }, + "react": { + "version": "16.0.0-beta.5", + "resolved": "https://registry.npmjs.org/react/-/react-16.0.0-beta.5.tgz", + "integrity": "sha512-FZSIxm5aO24tzl+11WWZSlYY9QCM3qm32f0+VEmAimm5ZFAiXdcHPdsWnCW00zkHIXszh9AWeOXu0OEqq30FSQ==", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "prop-types": "15.6.0" + } + }, + "react-clone-referenced-element": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-clone-referenced-element/-/react-clone-referenced-element-1.0.1.tgz", + "integrity": "sha1-K7qMaUBMXkqUQ5hgC8xMlB+GBoI=" + }, + "react-deep-force-update": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz", + "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw=" + }, + "react-devtools-core": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-2.5.2.tgz", + "integrity": "sha1-+XvsWvrl2TGNFneAZeDCFMTVcUw=", + "requires": { + "shell-quote": "1.6.1", + "ws": "2.3.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "ws": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", + "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "requires": { + "safe-buffer": "5.0.1", + "ultron": "1.1.0" + } + } + } + }, + "react-native": { + "version": "0.49.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.49.3.tgz", + "integrity": "sha1-DKRZ7kn5xZ6DJrLO2eNMWTM6LyY=", + "requires": { + "absolute-path": "0.0.0", + "art": "0.10.1", + "babel-core": "6.26.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.16.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "base64-js": "1.2.1", + "chalk": "1.1.3", + "commander": "2.11.0", + "connect": "2.30.2", + "create-react-class": "15.6.2", + "debug": "2.6.9", + "denodeify": "1.2.1", + "envinfo": "3.4.1", + "event-target-shim": "1.1.1", + "fbjs": "0.8.14", + "fbjs-scripts": "0.8.1", + "fs-extra": "1.0.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "inquirer": "3.3.0", + "lodash": "4.17.4", + "metro-bundler": "0.13.0", + "mime": "1.4.1", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "node-fetch": "1.7.3", + "npmlog": "2.0.4", + "opn": "3.0.3", + "optimist": "0.6.1", + "plist": "1.2.0", + "pretty-format": "4.3.1", + "promise": "7.3.1", + "prop-types": "15.6.0", + "react-clone-referenced-element": "1.0.1", + "react-devtools-core": "2.5.2", + "react-timer-mixin": "0.13.3", + "regenerator-runtime": "0.9.6", + "rimraf": "2.6.2", + "semver": "5.4.1", + "shell-quote": "1.6.1", + "stacktrace-parser": "0.1.4", + "whatwg-fetch": "1.1.1", + "ws": "1.1.4", + "xcode": "0.9.3", + "xmldoc": "0.4.0", + "yargs": "6.6.0" + }, + "dependencies": { + "fbjs": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.14.tgz", + "integrity": "sha1-0dviviVMNakeCfMfnNUKQLKg7Rw=", + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + } + }, + "whatwg-fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz", + "integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk=" + } + } + }, + "react-proxy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", + "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", + "requires": { + "lodash": "4.17.4", + "react-deep-force-update": "1.1.1" + } + }, + "react-test-renderer": { + "version": "16.0.0-beta.5", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.0.0-beta.5.tgz", + "integrity": "sha512-cTgpGjbew12c6MZqTe4qjWE91GxRrl9nRHYJKLayPSu10E4ZeMr/xOVy4fkY78dKwgSJVu/6oYIoN84leh81XA==", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "object-assign": "4.1.1" + } + }, + "react-timer-mixin": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", + "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI=" + }, + "react-transform-hmr": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", + "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", + "requires": { + "global": "4.3.2", + "react-proxy": "1.1.8" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + }, + "regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "1.3.3", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "response-time": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz", + "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=", + "requires": { + "depd": "1.1.1", + "on-headers": "1.0.1" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + } + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "rndm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + } + }, + "sax": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz", + "integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=" + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4=", + "requires": { + "debug": "2.2.0", + "depd": "1.1.1", + "destroy": "1.0.4", + "escape-html": "1.0.3", + "etag": "1.7.0", + "fresh": "0.3.0", + "http-errors": "1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "2.3.0", + "range-parser": "1.0.3", + "statuses": "1.2.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=" + } + } + }, + "serve-favicon": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", + "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=", + "requires": { + "etag": "1.7.0", + "fresh": "0.3.0", + "ms": "0.7.2", + "parseurl": "1.3.2" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" + } + } + }, + "serve-index": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=", + "requires": { + "accepts": "1.2.13", + "batch": "0.5.3", + "debug": "2.2.0", + "escape-html": "1.0.3", + "http-errors": "1.3.1", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=", + "requires": { + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.13.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-plist": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz", + "integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=", + "requires": { + "bplist-creator": "0.0.7", + "bplist-parser": "0.1.1", + "plist": "2.0.1" + }, + "dependencies": { + "base64-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", + "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg=" + }, + "plist": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz", + "integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=", + "requires": { + "base64-js": "1.1.2", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.27" + } + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "sntp": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", + "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "0.5.7" + } + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stacktrace-parser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz", + "integrity": "sha1-ATl5IuX2Ls8whFUiyVxP4dJefU4=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=" + }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=", + "requires": { + "readable-stream": "1.1.14" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "requires": { + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + } + } + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==" + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "requires": { + "async": "0.2.10", + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + }, + "uid-safe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", + "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE=", + "requires": { + "random-bytes": "1.0.0" + } + }, + "ultron": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", + "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vhost": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", + "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU=" + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "requires": { + "clone": "1.0.2", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "dev": true, + "requires": { + "iconv-lite": "0.4.13" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "requires": { + "semver": "5.4.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "worker-farm": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.0.tgz", + "integrity": "sha512-DHRiUggxtbruaTwnLDm2/BRDKZIoOYvrgYUj5Bam4fU6Gtvc0FaEyoswFPBjMXAweGW2H4BDNIpy//1yXXuaqQ==", + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "ws": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.4.tgz", + "integrity": "sha1-V/QNA2gy5fUFVmKjl8Tedu1mv2E=", + "requires": { + "options": "0.0.6", + "ultron": "1.0.2" + }, + "dependencies": { + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" + } + } + }, + "xcode": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-0.9.3.tgz", + "integrity": "sha1-kQqJwWrubMC0LKgFptC0z4chHPM=", + "requires": { + "pegjs": "0.10.0", + "simple-plist": "0.2.1", + "uuid": "3.0.1" + }, + "dependencies": { + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" + } + } + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xmlbuilder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz", + "integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=", + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "xmldoc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-0.4.0.tgz", + "integrity": "sha1-0lciS+g5PqrL+DfvIn/Y7CWzaIg=", + "requires": { + "sax": "1.1.6" + } + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + }, + "xpipe": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", + "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + } + } + } + } +} diff --git a/lang/zh-cn/exapp/package.json b/lang/zh-cn/exapp/package.json new file mode 100644 index 0000000..8e649a9 --- /dev/null +++ b/lang/zh-cn/exapp/package.json @@ -0,0 +1,22 @@ +{ + "name": "exapp", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node node_modules/react-native/local-cli/cli.js start", + "test": "jest" + }, + "dependencies": { + "react": "16.0.0-beta.5", + "react-native": "0.49.3" + }, + "devDependencies": { + "babel-jest": "21.2.0", + "babel-preset-react-native": "4.0.0", + "jest": "21.2.1", + "react-test-renderer": "16.0.0-beta.5" + }, + "jest": { + "preset": "react-native" + } +} diff --git a/lang/zh-cn/exapp/run-android b/lang/zh-cn/exapp/run-android new file mode 100755 index 0000000..8daebd3 --- /dev/null +++ b/lang/zh-cn/exapp/run-android @@ -0,0 +1,19 @@ +########################################################## +# React-Native For android +# ** Run Command ** +# これを実行しておけばUSBにつながってる端末に最新をデプロイまでするぉ +########################################################## + +source ~/.bashrc +if [ ! -e "./android/app/src/main/assets" ]; then + mkdir ./android/app/src/main/assets +fi + +# Uninstall Sample App +adb uninstall com.exapp + +# 修正されたJSをネイティブプロジェクトにセットする +react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res + +# 実行 +react-native run-android diff --git a/lang/zh-cn/ios/.gitignore b/lang/zh-cn/ios/.gitignore new file mode 100644 index 0000000..efbef79 --- /dev/null +++ b/lang/zh-cn/ios/.gitignore @@ -0,0 +1,63 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +Pods/ + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ diff --git a/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj b/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a193d95 --- /dev/null +++ b/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/project.pbxproj @@ -0,0 +1,577 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 876483884055CE331590D04E /* libPods-abs_exapp-FoxReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B05D90D5C86B318381C1E2C /* libPods-abs_exapp-FoxReact.a */; }; + B81359831F9DDF190098C238 /* CYZFoxAppDelegateSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = B81359821F9DDF180098C238 /* CYZFoxAppDelegateSwizzling.m */; }; + B82222AA1F97238500521BC8 /* CYZFoxReactModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B82222A91F97238500521BC8 /* CYZFoxReactModule.m */; }; + B82222AB1F97238500521BC8 /* CYZFoxReactModule.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B82222A81F97238500521BC8 /* CYZFoxReactModule.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B82222EE1F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; + B82222F01F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + B82222F21F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C059A1DE3340900C268FA; + remoteInfo = yoga; + }; + B82222F41F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C06751DE3340C00C268FA; + remoteInfo = "yoga-tvOS"; + }; + B82222F61F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; + remoteInfo = cxxreact; + }; + B82222F81F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; + remoteInfo = "cxxreact-tvOS"; + }; + B82222FA1F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; + remoteInfo = jschelpers; + }; + B82222FC1F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; + remoteInfo = "jschelpers-tvOS"; + }; + B82222FE1F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7; + remoteInfo = "third-party"; + }; + B82223001F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D3C1EBD27B6005632C8; + remoteInfo = "third-party-tvOS"; + }; + B82223021F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 139D7E881E25C6D100323FB7; + remoteInfo = "double-conversion"; + }; + B82223041F972D1100521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D383D621EBD27B9005632C8; + remoteInfo = "double-conversion-tvOS"; + }; + B82223061F972D3A00521BC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 83CBBA2D1A601D0E00E9B192; + remoteInfo = React; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + B82222A31F97238500521BC8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + B82222AB1F97238500521BC8 /* CYZFoxReactModule.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 2B05D90D5C86B318381C1E2C /* libPods-abs_exapp-FoxReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-abs_exapp-FoxReact.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2B0FA19CAA673F09C80646E2 /* Pods-abs_exapp-FoxReact.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-abs_exapp-FoxReact.release.xcconfig"; path = "../../exapp/ios/Pods/Target Support Files/Pods-abs_exapp-FoxReact/Pods-abs_exapp-FoxReact.release.xcconfig"; sourceTree = ""; }; + 527F39A1E29D277D793EC73C /* Pods-abs_exapp-FoxReact.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-abs_exapp-FoxReact.debug.xcconfig"; path = "../../exapp/ios/Pods/Target Support Files/Pods-abs_exapp-FoxReact/Pods-abs_exapp-FoxReact.debug.xcconfig"; sourceTree = ""; }; + B81359821F9DDF180098C238 /* CYZFoxAppDelegateSwizzling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CYZFoxAppDelegateSwizzling.m; sourceTree = ""; }; + B82222A51F97238500521BC8 /* libFoxReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFoxReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B82222A81F97238500521BC8 /* CYZFoxReactModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CYZFoxReactModule.h; sourceTree = ""; }; + B82222A91F97238500521BC8 /* CYZFoxReactModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CYZFoxReactModule.m; sourceTree = ""; }; + B82222DF1F972D1000521BC8 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../../exapp/node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + F29101A975E6569D77AC0A69 /* libPods-FoxReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FoxReact.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B82222A21F97238500521BC8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 876483884055CE331590D04E /* libPods-abs_exapp-FoxReact.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 77168675BB746A6988C3A131 /* Pods */ = { + isa = PBXGroup; + children = ( + 527F39A1E29D277D793EC73C /* Pods-abs_exapp-FoxReact.debug.xcconfig */, + 2B0FA19CAA673F09C80646E2 /* Pods-abs_exapp-FoxReact.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 81263EAF16D0CD0A235DD0F7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F29101A975E6569D77AC0A69 /* libPods-FoxReact.a */, + 2B05D90D5C86B318381C1E2C /* libPods-abs_exapp-FoxReact.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + B822229C1F97238500521BC8 = { + isa = PBXGroup; + children = ( + B82222DF1F972D1000521BC8 /* React.xcodeproj */, + B82222A71F97238500521BC8 /* FoxReact */, + B82222A61F97238500521BC8 /* Products */, + 77168675BB746A6988C3A131 /* Pods */, + 81263EAF16D0CD0A235DD0F7 /* Frameworks */, + ); + sourceTree = ""; + }; + B82222A61F97238500521BC8 /* Products */ = { + isa = PBXGroup; + children = ( + B82222A51F97238500521BC8 /* libFoxReact.a */, + ); + name = Products; + sourceTree = ""; + }; + B82222A71F97238500521BC8 /* FoxReact */ = { + isa = PBXGroup; + children = ( + B81359821F9DDF180098C238 /* CYZFoxAppDelegateSwizzling.m */, + B82222A81F97238500521BC8 /* CYZFoxReactModule.h */, + B82222A91F97238500521BC8 /* CYZFoxReactModule.m */, + ); + path = FoxReact; + sourceTree = ""; + }; + B82222E01F972D1000521BC8 /* Products */ = { + isa = PBXGroup; + children = ( + B82222EF1F972D1100521BC8 /* libReact.a */, + B82222F11F972D1100521BC8 /* libReact.a */, + B82222F31F972D1100521BC8 /* libyoga.a */, + B82222F51F972D1100521BC8 /* libyoga.a */, + B82222F71F972D1100521BC8 /* libcxxreact.a */, + B82222F91F972D1100521BC8 /* libcxxreact.a */, + B82222FB1F972D1100521BC8 /* libjschelpers.a */, + B82222FD1F972D1100521BC8 /* libjschelpers.a */, + B82222FF1F972D1100521BC8 /* libthird-party.a */, + B82223011F972D1100521BC8 /* libthird-party.a */, + B82223031F972D1100521BC8 /* libdouble-conversion.a */, + B82223051F972D1100521BC8 /* libdouble-conversion.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B82222A41F97238500521BC8 /* FoxReact */ = { + isa = PBXNativeTarget; + buildConfigurationList = B82222AE1F97238500521BC8 /* Build configuration list for PBXNativeTarget "FoxReact" */; + buildPhases = ( + 1F912B51DB65791968F97BBE /* [CP] Check Pods Manifest.lock */, + B82222A11F97238500521BC8 /* Sources */, + B82222A21F97238500521BC8 /* Frameworks */, + B82222A31F97238500521BC8 /* CopyFiles */, + CEEE484F2D37761E52E15CC8 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + B82223071F972D3A00521BC8 /* PBXTargetDependency */, + ); + name = FoxReact; + productName = FoxReact; + productReference = B82222A51F97238500521BC8 /* libFoxReact.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B822229D1F97238500521BC8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = cyberz; + TargetAttributes = { + B82222A41F97238500521BC8 = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = B82222A01F97238500521BC8 /* Build configuration list for PBXProject "FoxReact" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = B822229C1F97238500521BC8; + productRefGroup = B82222A61F97238500521BC8 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B82222E01F972D1000521BC8 /* Products */; + ProjectRef = B82222DF1F972D1000521BC8 /* React.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + B82222A41F97238500521BC8 /* FoxReact */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + B82222EF1F972D1100521BC8 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = B82222EE1F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222F11F972D1100521BC8 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = B82222F01F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222F31F972D1100521BC8 /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = B82222F21F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222F51F972D1100521BC8 /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = B82222F41F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222F71F972D1100521BC8 /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = B82222F61F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222F91F972D1100521BC8 /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = B82222F81F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222FB1F972D1100521BC8 /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = B82222FA1F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222FD1F972D1100521BC8 /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = B82222FC1F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82222FF1F972D1100521BC8 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = B82222FE1F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223011F972D1100521BC8 /* libthird-party.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libthird-party.a"; + remoteRef = B82223001F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223031F972D1100521BC8 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = B82223021F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82223051F972D1100521BC8 /* libdouble-conversion.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libdouble-conversion.a"; + remoteRef = B82223041F972D1100521BC8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1F912B51DB65791968F97BBE /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + CEEE484F2D37761E52E15CC8 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../../exapp/ios/Pods/Target Support Files/Pods-abs_exapp-FoxReact/Pods-abs_exapp-FoxReact-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B82222A11F97238500521BC8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B82222AA1F97238500521BC8 /* CYZFoxReactModule.m in Sources */, + B81359831F9DDF190098C238 /* CYZFoxAppDelegateSwizzling.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B82223071F972D3A00521BC8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = React; + targetProxy = B82223061F972D3A00521BC8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + B82222AC1F97238500521BC8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../../exapp/node_modules/react-native/React/Base"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + B82222AD1F97238500521BC8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../../exapp/node_modules/react-native/React/Base"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B82222AF1F97238500521BC8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 527F39A1E29D277D793EC73C /* Pods-abs_exapp-FoxReact.debug.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = DUP2JGEFH3; + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B82222B01F97238500521BC8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B0FA19CAA673F09C80646E2 /* Pods-abs_exapp-FoxReact.release.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = DUP2JGEFH3; + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B82222A01F97238500521BC8 /* Build configuration list for PBXProject "FoxReact" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B82222AC1F97238500521BC8 /* Debug */, + B82222AD1F97238500521BC8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B82222AE1F97238500521BC8 /* Build configuration list for PBXNativeTarget "FoxReact" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B82222AF1F97238500521BC8 /* Debug */, + B82222B01F97238500521BC8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B822229D1F97238500521BC8 /* Project object */; +} diff --git a/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme b/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme new file mode 100644 index 0000000..857232f --- /dev/null +++ b/lang/zh-cn/ios/FoxReact/FoxReact.xcodeproj/xcshareddata/xcschemes/FoxReact.xcscheme @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m new file mode 100644 index 0000000..49288ec --- /dev/null +++ b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxAppDelegateSwizzling.m @@ -0,0 +1,87 @@ +#import +#import +#import +#import + +#define CYZLog(...) RCTLogInfo(__VA_ARGS__) + +@implementation UIApplication (CYZFox) + +void fox_swizzle(Class origClass, SEL originalSelector, Class swizzledClass, SEL swizzledSelector) { + + Method originalMethod = class_getInstanceMethod(origClass, originalSelector); + if (originalMethod) { + Method swizzledMethod = class_getInstanceMethod(swizzledClass, swizzledSelector); + + if (!class_getInstanceMethod(origClass, swizzledSelector)) { + CYZLog(@"add method %@ to class %@", NSStringFromSelector(swizzledSelector), NSStringFromClass(origClass)); + class_addMethod(origClass, swizzledSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + } + + CYZLog(@"exchange method %@ of class %@", NSStringFromSelector(originalSelector), NSStringFromClass(origClass)); + Method swizzledMethodInOrigClass = class_getInstanceMethod(origClass, swizzledSelector); + method_exchangeImplementations(originalMethod, swizzledMethodInOrigClass); + } +} + ++(void) load { + CYZLog(@"load swizzling"); + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + fox_swizzle([self class], @selector(setDelegate:),[self class], @selector(fox_setDelegate:)); + }); +} + +-(void) fox_setDelegate:(id) delegate { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + Class delegateClass = [delegate class]; + + // swizzle application:openURL:sourceApplication:annotation: + SEL ori_openURLSourceApplication = @selector(application:openURL:sourceApplication:annotation:); + SEL swiz_openURLSourceApplication = @selector(fox_application:openURL:sourceApplication:annotation:); + + // swizzle application:openURL:options: + SEL ori_openURLOptions = @selector(application:openURL:options:); + SEL swiz_openURLOptions = @selector(fox_application:openURL:options:); + + // should add empty application:openURL:sourceApplication:annotation: + if (!class_getInstanceMethod(delegateClass, ori_openURLSourceApplication) + && !class_getInstanceMethod(delegateClass, ori_openURLOptions)) { + CYZLog(@"not found either %@ or %@", NSStringFromSelector(ori_openURLSourceApplication), NSStringFromSelector(ori_openURLOptions)); + + SEL swiz_empty_openURLSourceApplication = @selector(fox_empty_application:openURL:sourceApplication:annotation:); + Method emptyMethod = class_getInstanceMethod([self class], swiz_empty_openURLSourceApplication); + CYZLog(@"add empty method %@", NSStringFromSelector(ori_openURLSourceApplication)); + class_addMethod(delegateClass, ori_openURLSourceApplication, + method_getImplementation(emptyMethod), + method_getTypeEncoding(emptyMethod)); + } + + fox_swizzle(delegateClass, ori_openURLSourceApplication, [self class], swiz_openURLSourceApplication); + fox_swizzle(delegateClass, ori_openURLOptions, [self class], swiz_openURLOptions); + }); + + [self fox_setDelegate:delegate]; +} + +-(BOOL) fox_application:(UIApplication *) application openURL:(nonnull NSURL *) url sourceApplication:(nullable NSString *) sourceApplication annotation:(nonnull id) annotation { + CYZLog(@"fox swizzed method: application:openURL:sourceApplication:annotation:"); + [CYZFox handleOpenURL:url]; + return [self fox_application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; +} + +-(BOOL)fox_application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + CYZLog(@"fox swizzed method: application:openURL:options:"); + [CYZFox handleOpenURL:url]; + return [self fox_application:app openURL:url options:options]; +} + +-(BOOL) fox_empty_application:(UIApplication *) application openURL:(nonnull NSURL *) url sourceApplication:(nullable NSString *) sourceApplication annotation:(nonnull id) annotation { + CYZLog(@"fox empty method: application:openURL:sourceApplication:annotation:"); + return YES; +} + +@end diff --git a/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.h b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.h new file mode 100644 index 0000000..371f6d0 --- /dev/null +++ b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.h @@ -0,0 +1,25 @@ +// +// CYZFoxReactModule.h +// CYZFoxReactModule +// +// Created by 呉 維 on 2017/10/18. +// Copyright © 2017 cyberz. All rights reserved. +// + +#import +#import +#import + +#import + +@interface CYZFoxReactModule : NSObject + +@end + +@interface RCTConvert (CYZFox) + ++ (CYZFoxConfig *)CYZFoxConfig:(id)json; ++ (CYZFoxTrackOption *)CYZFoxTrackOption:(id)json; ++ (CYZFoxEvent *)CYZFoxEvent:(id)json; + +@end diff --git a/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.m b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.m new file mode 100644 index 0000000..481d174 --- /dev/null +++ b/lang/zh-cn/ios/FoxReact/FoxReact/CYZFoxReactModule.m @@ -0,0 +1,157 @@ +// +// CYZFoxReactModule.m +// CYZFoxReactModule +// +// Created by 呉 維 on 2017/10/18. +// Copyright © 2017 cyberz. All rights reserved. +// + +#import "CYZFoxReactModule.h" + +NSString* EVENT_trackingCompletionHandler = @"CYZFox_trackingCompletionHandler"; + +@implementation CYZFoxReactModule { + void (^trackingCompletionHandler)(void); + void (^deferredDeeplinkHandler)(NSDictionary * _Nullable deeplinkInfo); +} + +RCT_EXPORT_MODULE(CYZFoxReact); + +RCT_EXPORT_METHOD(activate:(CYZFoxConfig*) config) +{ + RCTLogInfo(@"[FOX-RCT] config activate: %@", config); + [config activate]; +} + +RCT_EXPORT_METHOD(trackInstall) +{ + RCTLogInfo(@"[FOX-RCT] trackInstall"); + [CYZFox trackInstall]; +} + +RCT_EXPORT_METHOD(setDeferredDeeplinkHandler:(RCTResponseSenderBlock) handler) +{ + RCTLogInfo(@"[FOX-RCT] setDeferredDeeplinkHandler"); + self->deferredDeeplinkHandler = ^(NSDictionary * _Nullable deeplinkInfo) { + if (deeplinkInfo) { + handler(@[deeplinkInfo]); + } else { + handler(@[]); + } + }; +} + +RCT_EXPORT_METHOD(setTrackingCompletionHandler:(RCTResponseSenderBlock) handler) +{ + RCTLogInfo(@"[FOX-RCT] setTrackingCompletionHandler"); + self->trackingCompletionHandler = ^(void){ + handler(@[]); + }; +} + +RCT_EXPORT_METHOD(trackInstall:(CYZFoxTrackOption*) option) +{ + RCTLogInfo(@"[FOX-RCT] trackInstall: %@", option); + if (self->trackingCompletionHandler) { + option.trackingCompletionHandler = self->trackingCompletionHandler; + } + if (self->deferredDeeplinkHandler) { + option.deferredDeeplinkHandler = self->deferredDeeplinkHandler; + } + + [CYZFox trackInstallWithOption:option]; +} + +RCT_EXPORT_METHOD(trackSession) +{ + RCTLogInfo(@"[FOX-RCT] trackSession"); + [CYZFox trackSession]; +} + +RCT_EXPORT_METHOD(trackEvent:(CYZFoxEvent*) event) +{ + RCTLogInfo(@"[FOX-RCT] trackEvent: %@", event); + [CYZFox trackEvent:event]; +} + +RCT_EXPORT_METHOD(setUserInfo:(NSDictionary*) userInfo) +{ + RCTLogInfo(@"[FOX-RCT] setUserInfo: %@", userInfo); + [CYZFox setUserInfo:userInfo]; +} + +RCT_EXPORT_METHOD(getUserInfo:(RCTResponseSenderBlock)callback) +{ + NSDictionary* userInfo = [CYZFox getUserInfo]; + RCTLogInfo(@"[FOX-RCT] getUserInfo = %@", userInfo); + callback(@[[NSNull null], userInfo]); +} + +RCT_EXPORT_METHOD(isConversionCompleted:(RCTResponseSenderBlock)callback) +{ + BOOL isConversionCompleted = [CYZFox isConversionCompleted]; + RCTLogInfo(@"[FOX-RCT] isConversionCompleted = %@", isConversionCompleted ? @"YES" : @"NO"); + callback(@[[NSNull null], [NSNumber numberWithBool:isConversionCompleted]]); +} + +RCT_EXPORT_METHOD(trackEventByBrowser:(NSString*) redirectURL) +{ + RCTLogInfo(@"[FOX-RCT] trackEventByBrowser: %@", redirectURL); + [CYZFox trackEventByBrowser:redirectURL]; +} + +@end + + +@implementation RCTConvert (CYZFox) + ++ (CYZFoxConfig *)CYZFoxConfig:(id)json { + RCTLogInfo(@"[FOX-RCT] Convert CYZFoxConfig"); + NSUInteger appId = [[RCTConvert NSNumber:json[@"appId"]] unsignedIntegerValue]; + NSString* salt = [RCTConvert NSString:json[@"appSalt"]]; + NSString* appKey = [RCTConvert NSString:json[@"appKey"]]; + + CYZFoxConfig* config = [CYZFoxConfig configWithAppId:appId salt:salt appKey:appKey]; + if ([RCTConvert BOOL:json[@"debugModeEnabled"]]) { + [config enableDebugMode]; + } + if ([RCTConvert BOOL:json[@"customizedUserAgentEnabled"]]) { + [config enableCustomizedUserAgent]; + } + + return config; +} + ++ (CYZFoxTrackOption *)CYZFoxTrackOption:(id)json { + RCTLogInfo(@"[FOX-RCT] Convert CYZFoxTrackOption"); + CYZFoxTrackOption* option = [CYZFoxTrackOption new]; + + option.buid = [RCTConvert NSString:json[@"buid"]]; + option.redirectURL = [RCTConvert NSString:json[@"redirectURL"]]; + option.optout = [RCTConvert BOOL:json[@"optout"]]; + option.durationSinceClick = [RCTConvert double:json[@"durationSinceClick"]]; + return option; +} + ++ (CYZFoxEvent *)CYZFoxEvent:(id)json { + RCTLogInfo(@"[FOX-RCT] Convert CYZFoxEvent"); + CYZFoxEvent* event = [[CYZFoxEvent alloc] initWithEventName:[RCTConvert NSString:json[@"eventName"]] ltvId:[RCTConvert NSUInteger:json[@"ltvId"]]]; + + event.buid = [RCTConvert NSString:json[@"buid"]]; + event.value = [RCTConvert NSUInteger:json[@"value"]]; + event.orderId = [RCTConvert NSString:json[@"orderId"]]; + event.sku = [RCTConvert NSString:json[@"sku"]]; + event.itemName = [RCTConvert NSString:json[@"itemName"]]; + event.price = [RCTConvert double:json[@"price"]]; + event.quantity = [RCTConvert NSUInteger:json[@"quantity"]]; + event.currency = [RCTConvert NSString:json[@"currency"]]; + event.eventInfo = [RCTConvert NSDictionary:json[@"eventInfo"]]; + + [[RCTConvert NSDictionary:json[@"extraInfo"]] enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + [event addExtraValue:obj forKey:key]; + }]; + + return event; +} + +@end From 374b52b494ede8239a050fb883de45bf6da02815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E5=9F=8E=20=E8=B7=AF?= Date: Thu, 16 Nov 2017 10:45:08 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E4=B8=AD=E5=9B=BD=E8=AA=9E=E7=89=88?= =?UTF-8?q?=E6=96=B0=E8=A6=8F=E4=BD=9C=E6=88=90=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lang/zh-cn/README.md | 176 +++++++++++++++++++++---------------------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/lang/zh-cn/README.md b/lang/zh-cn/README.md index fdd8643..99cba7e 100644 --- a/lang/zh-cn/README.md +++ b/lang/zh-cn/README.md @@ -2,33 +2,33 @@ ## Index -* **[1. インストール](#install_sdk)** - * [1.1 OS共通手順](#install_common) +* **[1. 导入](#install_sdk)** + * [1.1 OS通用步骤](#install_common) * [1.2 iOS](#install_ios) * [1.3 Android](#install_android) - * [1.3.1 パーミッション](#android_permission) - * [1.3.2 ProGuardを利用する場合](#android_proguard) -* **[2. アクティベート](#activation)** -* **[3. 広告成果の計測](#measurement)** - * [3.1 インストール成果計測](#measurement_install) - * [3.2 インストールリファラ計測(Androidのみ)](#measurement_installreferrer) - * [3.3 リエンゲージメント成果計測](#measurement_reengagement) -* **[4. アプリ内イベントの計測](#measurement_event)** - * [4.1 チュートリアルイベント](#measurement_event_tutorial) - * [4.2 課金イベント](#measurement_event_purchase) - * [4.3 セッション計測](#measurement_event_session) + * [1.3.1 权限](#android_permission) + * [1.3.2 使用ProGuard](#android_proguard) +* **[2. 激活](#activation)** +* **[3. 广告成果计测](#measurement)** + * [3.1 Install成果计测](#measurement_install) + * [3.2 InstallReferrer计测(仅Android)](#measurement_installreferrer) + * [3.3 流失唤回广告(Reengagement)成果计测](#measurement_reengagement) +* **[4. APP内事件计测](#measurement_event)** + * [4.1 新手引导事件](#measurement_event_tutorial) + * [4.2 消费事件](#measurement_event_purchase) + * [4.3 Session计测](#measurement_event_session)
-## 1. インストール +## 1. 导入
-#### 1.1 OS共通手順 +#### 1.1 OS通用步骤 -[リリースページ](https://github.com/forceoperationx/react-native-sdk/releases)よりSDKのzipファイルをダウンロードします。
-zipファイルの展開後、`js`ディレクトリ内のjsファイルを導入先となるReactNativeプロジェクトにコピーします。 +请在[发布页面](https://github.com/forceoperationx/react-native-sdk/releases)下载SDK的zip文件。
+解压展开zip文件以后、将`js`目录内的js文件拷贝到导入目标的ReactNative项目。 * `fox.js` * `fox-ios.js` @@ -37,8 +37,8 @@ zipファイルの展開後、`js`ディレクトリ内のjsファイルを導
#### 1.2 iOS -**【 libraryファイルによる導入 】** -共通手順でダウンロードしたSDKのzipファイルに同梱されている iOS SDK libraryファイル全てを導入先となるiOSプロジェクトのlibrary/framework search pathにコピーし、xcodeでlinkします。 +**【 依靠library文件导入 】** +按照通用步骤,将下载SDK时的zip文件同捆的iOS SDK Library的全部文件拷贝到目标iOS项目的library/framework search path里、并用xcode来link。 * `libFoxReact.a` * `CYZFox.framework` @@ -47,7 +47,7 @@ zipファイルの展開後、`js`ディレクトリ内のjsファイルを導 #### 1.3 Android -**【 Gradleによる導入 】** +**【 依靠Gradle导入 】** [ build.gradle ]
```gradle @@ -63,61 +63,61 @@ dependencies { } ``` -> ※ `co.cyberz.fox:track-core:`のバージョンは4.3.0以上を指定してください。4.3.0未満はサポートしておりません。 +> ※ 请将`co.cyberz.fox:track-core:`的版本指定为4.3.0及以上。目前无法支持不足4.3.0的版本。 -> ※ `co.cyberz.fox.support:track-reactnative:`のバージョンはリリースページからバージョンを選択してください。 +> ※ `co.cyberz.fox.support:track-reactnative:`的版本请从发布页面里选择。 -**【 jarファイルによる導入 】** +**【 依靠jar文件导入 】** -共通手順でダウンロードしたSDKのzipファイルに同梱されているAndroid SDKのlibs内のjarファイル全てを導入先となるAndroidプロジェクトのlibsにコピーします。 +按照通用步骤,将下载SDK时的zip文件同捆的Android SDK的libs内所有jar文件拷贝到Android目标项目的libs里。 * `FOX_Android_SDK_X.X.X.jar` * `FOX_Android_SDK_Support_ReactNative_X.X.X.jar`
-#### 1.3.1 パーミッション +#### 1.3.1 权限 -F.O.X SDKでは下記3つのパーミッションを利用します。 -<Manifest>タグ内に次のパーミッションの設定を追加します。 +在F.O.X SDK里可以利用下面3种权限。 +请在<Manifest>标签内设置下面的权限。 ```xml ``` -パーミッション|Protection Level|必須|概要 +权限|Protection Level|必须|概要 :---|:---:|:---:|:--- -INTERNET|Normal|必須|F.O.X SDKが通信を行うために必要となります。 -WRITE_EXTERNAL_STORAGE ※1|Dangerous|任意|ストレージを利用した重複排除機能向上に必要となります。(※2) +INTERNET|Normal|必须|F.O.X SDK进行通信所必须的。 +WRITE_EXTERNAL_STORAGE ※1|Dangerous|任意|利用外部存储提高排除重复精度。(※2) -> ※1 READ_EXTERNAL_STORAGE及びWRITE_EXTERNAL_STORAGEパーミッションは、外部ストレージにデータを記録することでアプリの再インストール時により正確にインストール計測を行うために必要ですが、必須ではありません。 +> ※1 通过将数据记录在外部存储器的方式,在APP再次被安装的时候能够更精确地计测Install成果的时候,可以添加READ_EXTERNAL_STORAGE以及WRITE_EXTERNAL_STORAGE权限,并不是必须。 -> ※2 Android MよりProtectionLevelが`dangerous`に指定されているパーミッションを必要とする機能を利用するには、ユーザーの許可が必要になります。詳細はF.O.X Android SDKドキュメントの[外部ストレージを利用した重複排除設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/external_storage/README.md)をご確認ください。 +> ※2 从Android M版本开始、使用ProtectionLevel为dangerous且需要权限的功能时,必须得到用户许可。详细请查看F.O.X Android SDK文档的[利用外部储存来优化排除重复(外部链接)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/external_storage/README.md)。
-#### 1.3.2 ProGuardを利用する場合 +#### 1.3.2 使用ProGuard -ProGuard を利用してアプリケーションの難読化を行う際は F.O.X SDK のメソッドが対象とならないよう、以下の設定 を追加してください。 +使用Proguard进行APP代码混淆时,为排除F.O.X SDK的调用方法,请添加以下设置。 ``` -keepattributes *Annotation* -keep class co.cyberz.** { *; } -keep class com.google.android.gms.ads.identifier.* { *; } -dontwarn co.cyberz.** -# Gradle経由でSDKをインストールしている場合、下記jarファイルの指定は不要です。 +# 经由Gradle导入SDK的话,不需要指定下面jar文件。 -libraryjars libs/FOX_Android_SDK_X.X.X.jar -libraryjars libs/FOX_Android_SDK_Support_ReactNative_X.X.X.jar ```
-## 2. アクティベート +## 2. 激活 -F.O.Xのライブラリを呼び出す際は必ず`fox.js`をimportします。以降、サンプル内ではCYZFoxと定義します。 +调用F.O.X类库之前请务必导入`fox.js`。之后,在案例代码里定义为CYZFox。 ```js -// fox.jsへのパスを通します +// 指定访问fox.js的路径 import CYZFox from './fox.js'; ... @@ -136,7 +136,7 @@ componentDidMount() { appSalt : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", appKey : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", }, - // デバッグモードのON/OFF + // DEGUG模式的ON/OFF debugModeEnabled : false } CYZFox.activate(config); @@ -144,23 +144,23 @@ componentDidMount() { ``` -> * `appId`, `appSalt`, `appKey`はF.O.Xのコンソールで発行された値を設定します。 -> * `customizedUserAgentEnabled`はiOS固有の設定で、アプリ内のWebViewのUserAgentをカスタマイズしている場合、trueに設定してください。 -> * `debugModeEnabled`はF.O.X SDKのデバッグログを出力する際にtrueを設定します。リリースの際はfalseに設定してください。 +> * 将F.O.X管理画面发行的值设置到`appId`, `appSalt`, `appKey`里。 +> * `customizedUserAgentEnabled`为iOS固有的设置,如果定制化APP内WebView的UserAgent、请设置为true。 +> * `debugModeEnabled`在希望输出F.O.X SDK的DEBUG LOG的时候设置为true。发布的时候设置为false。
-## 3. 広告成果の計測 +## 3. 广告成果计测
-#### 3.1 インストール成果計測 +#### 3.1 Install成果计测 -アプリの初回起動のインストール計測を実装することで、広告の効果測定を行うことができます。
-以下のコードをアプリの起動時に必ず呼ばれる箇所に効果測定用の処理を追加します。 +通过在APP的初次启动处理里执行Install计测,能够实施广告的效果测定。
+请把下面做效果测定的代码添加到在APP启动时必被调用的处理里 ```js -// fox.jsへのパスを通します +// 指定访问fox.js的路径 import CYZFox from './fox.js'; ... @@ -175,23 +175,23 @@ const option = { // CYZFox.trackInstall(option); ``` -> * trackInstallはオプション(引数)無しでも指定することが可能です。 -> * インストール計測のオプション一覧 +> * trackInstall方法即使不指定option参数也可以执行。 +> * Install计测的option一览 > > |項目|詳細| > |:---:|:---| -> |redirectURL|ブラウザを起動させた時に遷移させる先のURL。アプリ自身のカスタムURLも指定可能。| -> |buid|広告主端末ID(アプリのユーザーを特定するID)| -> |trackingCompletionHandler|インストール計測完了のコールバックハンドラ| -> |durationSinceClick|ディファードディープリンクを実行する際の、対象となるラストクリックの対象期間(秒)(初回起動からどれだけ遡るかを秒数で指定)
デフォルト : 86400 (1日)| -> |deferredDeeplinkHandler|ディープリンクを受け取るためのコールバックハンドラ| +> |redirectURL|启动浏览器的时候跳转目的地的URL。可以指定APP本身的定制化URL。| +> |buid|广告主终端ID(app的特定用户的ID)| +> |trackingCompletionHandler|Install计测完成的callback handler| +> |durationSinceClick|执行Deferred DeepLink的时候、对象最终点击的对象期间(秒)(指定从初次启动开始追溯到之前多少秒)
默认 : 86400 (1天)| +> |deferredDeeplinkHandler|为接收DeepLink的callback handler| >
-#### 3.2 インストールリファラ計測(Androidのみ) +#### 3.2 Install Referrer计测計測(只有Android) -インストールリファラーを用いたインストール計測を行うために下記の設定を<application>タグに追加します。 +为了进行使用InstallReferrer的Install计测,请在<application>标签里添加如下设置。 ``` @@ -201,16 +201,16 @@ CYZFox.trackInstall(option); ``` -> 既に"com.android.vending.INSTALL_REFERRER"に対するレシーバークラスが定義されている場合には、F.O.X Android SDKドキュメントの[複数のINSTALL_REFERRERレシーバーを共存させる場合の設定(外部リンク)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/install_referrer/README.md) をご参照ください。 +> "com.android.vending.INSTALL_REFERRER"的Receiver类已经被定义的情况下,请参照F.O.X Android SDK文档的[让多个INSTALL_REFERRER RECEIVER共存的设置(外部链接)](https://github.com/cyber-z/public-fox-android-sdk/blob/4.x/lang/ja/doc/install_referrer/README.md) 。
-#### 3.3 リエンゲージメント成果計測 +#### 3.3 流失唤回(Reengagement)广告成果计测リエンゲージメント成果計測 -リエンゲージメント計測(カスタムURLスキーム経由の起動を計測)するために必要な設定を行います。iOSは設定なしで自動で計測を行いますがAndroidは以下の設定が必要となります。
+为实施流失唤回广告成果计测(计测经由定制化URLScheme的启动)做必要的设定。iOS环境无需设定就能自动计测,Android环境需要下面的测试
-AndroidManifest.xmlのトップActivity (アプリ内の初めに呼ばれるActivity) の<activity>タグ内に、カスタムURLスキームでアプリを起動出来るよう以下のようにintent-filterを追記します。
-※ リエンゲージメント計測はカスタムURLスキームでActivityが呼び出されることで計測を行います。 +在AndroidManifest.xml的主Activity(APP里初次调用的Activity)的<activity>标签里,为了使用定制化的URLScheme让APP启动起来,请按照如下事例添加intent-filter。
+※ 流失唤回广告成果计测是通过使用定制化URLScheme调用Activity的方式来实现计测的。 ```xml - + @@ -230,38 +230,38 @@ AndroidManifest.xmlのトップActivity (アプリ内の初めに呼ばれるAct + android:scheme="填写任意的URLScheme" /> ``` -> ※ カスタムURLスキームの詳細は[Android Developers (暗黙的インテントの受信)](https://developer.android.com/guide/components/intents-filters.html#Receiving) をご確認ください。 +> ※ 定制化URLScheme的详细请参考[Android Developers (隐式intent的接收)](https://developer.android.com/guide/components/intents-filters.html#Receiving) 。
-## 4. アプリ内イベントの計測 +## 4. APP内事件的计测 -会員登録、チュートリアル突破、課金など任意の成果地点にイベント計測を実装することで、流入元広告のLTVを測定することができます。
-尚、イベント計測が不要の場合には、本項目の実装を省略できます。成果がアプリ内部で発生する場合、成果処理部に以下のように記述してください。
-アプリ内イベントを計測するには`trackEvent`メソッドを利用します。 +可以在会员注册,完成新手引导,付费等任意成果地点执行事件计测,能够测定广告流入源的LTV。
+不需要事件计测的话,可以忽略本项。在APP内部产生成果的时候,请按照下面那样书写成果处理部分。
+为了计测APP内事件请利用`trackEvent`方法。 -会員登録やアプリ内課金後の課金計測では、登録・課金処理実行後のコールバック内に以下のようにイベント計測処理を記述します。 +对于会员注册或APP内消费后的消费计测,请在注册・消费处理执行后的回调处理里执行如下事件计测处理。
-#### 4.1 チュートリアルイベント +#### 4.1 新手引导事件 -**【 実装例 】** +**【 执行案例 】** ```js const event = { ios : { - eventName : "iOSチュートリアル突破", + eventName : "iOS新手引导突破", ltvId : 5973, }, android : { - eventName : "Androidチュートリアル突破", + eventName : "Android新手引导突破", ltvId : 5974, }, buid : "USER_001" @@ -271,9 +271,9 @@ CYZFox.trackEvent(event);
-#### 4.2 課金イベント +#### 4.2 付费事件 -**【 実装例 】** +**【 执行案例 】** ```js const event = { @@ -306,25 +306,25 @@ const event = { CYZFox.trackEvent(event); ``` -> * イベント計測時に指定するパラメータ一覧 +> * 事件计测时候指定的参数一览 > -> |**型**|**必須**|**パラメータ名**|**概要**| +> |**类型**|**必须**|**参数名**|**概要**| > |:---:|:---:|:---|:---| -> |String|○|eventName|イベント名| -> |int|○|ltvId|成果地点ID
管理者より連絡します。その値を入力してください。| -> |String|-|buid|広告主様が管理しているユニークな識別子(会員IDなど)です。 指定できる値は64文字以内の半角英数字です。| -> |double|-|price|金額| -> |String|-|currency|通貨
[ISO 4217](http://ja.wikipedia.org/wiki/ISO_4217) で定義された通貨コードを指定してください。| +> |String|○|eventName|事件名| +> |int|○|ltvId|成果地点ID
请输入管理者告知的值。| +> |String|-|buid|是广告主管理的唯一的判别ID(会员ID等)。 能指定的值为64文字以内的半角英文数字。| +> |double|-|price|金额| +> |String|-|currency|货币
请使用[ISO 4217](http://ja.wikipedia.org/wiki/ISO_4217) 定义的货币代码。| > |String|-|sku|SKU| > |String|-|value|値| -> |String|-|orderId|オーダーID| +> |String|-|orderId|订单ID| > |int|-|quantity|数量| -> |String|-|extraInfo|任意のパラメータのKey/Value
Key値にアンダースコア("_")をパラメータ名の先頭に記述しないでください。また、半角英数字以外は使用できません。| -> |String|-|eventInfo|任意のパラメータ群| +> |String|-|extraInfo|任意的参数的Key/Value
在Key値里请不要将下划线("_")写在参数名的最前面。此外,无法使用半角英文数字以外的字符。| +> |String|-|eventInfo|任意的参数群|
-#### 4.3 セッション計測 +#### 4.3 Session计测 -自然流入と広告流入のインストール数比較、アプリケーションの起動数やユニークユーザー数(DAU/MAU)、継続率等を計測することができます。
-こちらはSDKがアプリの起動時・バックグラウンドからフォアグラウンドへの遷移をiOS/Androidのネイティブ側で自動検知して計測を行うため、実装する必要はありません。 +能够进行自然流入和广告流入的安装数比较,计测APP的启动数或唯一用户数(DAU/MAU),留存率等。
+这个是指在iOS/Android的native代码里,SDK自动探知在APP启动・后台跳转前台的迁移时进行计测,不需要编写代码。