Copy disabled (too large)
Download .txt
Showing preview only (17,047K chars total). Download the full file to get everything.
Repository: facebookarchive/react-360
Branch: master
Commit: 43d30d4b05bd
Files: 667
Total size: 16.1 MB
Directory structure:
gitextract_38_tdv3f/
├── .circleci/
│ └── config.yml
├── .flowconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE.md
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE-docs
├── LICENSE-examples
├── Libraries/
│ ├── .eslintrc.js
│ ├── Camera/
│ │ └── LiveEnvCamera.js
│ ├── Components/
│ │ └── View/
│ │ ├── PlatformViewPropTypes.vr.js
│ │ └── View.vr.js
│ ├── Lights/
│ │ ├── AmbientLight.js
│ │ ├── DirectionalLight.js
│ │ ├── PointLight.js
│ │ └── SpotLight.js
│ ├── Mesh/
│ │ ├── Box.js
│ │ ├── Cylinder.js
│ │ ├── Entity.js
│ │ ├── Model.js
│ │ ├── Plane.js
│ │ └── Sphere.js
│ ├── Pano/
│ │ ├── Pano.js
│ │ └── Prefetch.js
│ ├── Scene/
│ │ └── Scene.js
│ ├── Sound/
│ │ └── Sound.js
│ ├── StyleSheet/
│ │ ├── LayoutAndTransformColorPropTypes.js
│ │ ├── LayoutAndTransformOpacityPropTypes.js
│ │ ├── LayoutAndTransformPropTypes.js
│ │ ├── LayoutAndTransformTintPropTypes.js
│ │ ├── LayoutPropTypes.vr.js
│ │ └── ViewStylePropTypes.vr.js
│ ├── Utilities/
│ │ ├── MatrixMath.vr.js
│ │ ├── Platform.vr.js
│ │ ├── ThreeJSConstants.js
│ │ ├── VrHeadModel.js
│ │ ├── VrMath.js
│ │ ├── VrSoundEffects.js
│ │ ├── asset.js
│ │ ├── createGlyph.js
│ │ ├── staticAssetURL.js
│ │ └── texture.js
│ ├── VRLayers/
│ │ ├── CylindricalPanel.js
│ │ └── QuadPanel.js
│ ├── VRModules/
│ │ ├── ControllerInfo.js
│ │ ├── Environment.js
│ │ ├── ExternalAssets.js
│ │ ├── GlyphTextures.js
│ │ ├── History.js
│ │ ├── Location.js
│ │ ├── ReactVRConstants.js
│ │ └── VideoModule.js
│ ├── VRReactOverrides/
│ │ ├── AccessibilityInfo.vr.js
│ │ ├── BackHandler.vr.js
│ │ ├── HMRLoadingView.vr.js
│ │ ├── Image.vr.js
│ │ ├── Interpolation.vr.js
│ │ ├── MaskedViewIOS.vr.js
│ │ ├── NetworkOverlay.vr.js
│ │ ├── PlatformSpecific/
│ │ │ ├── CheckBox.vr.js
│ │ │ ├── DatePickerAndroid.vr.js
│ │ │ ├── DatePickerIOS.vr.js
│ │ │ ├── DrawerLayoutAndroid.vr.js
│ │ │ ├── NavigationExperimental.vr.js
│ │ │ ├── NavigatorBreadcrumbNavigationBarStyles.vr.js
│ │ │ ├── NavigatorIOS.vr.js
│ │ │ ├── PickerAndroid.vr.js
│ │ │ ├── PickerIOS.vr.js
│ │ │ ├── ProgressBarAndroid.vr.js
│ │ │ ├── ProgressViewIOS.vr.js
│ │ │ ├── RecyclerViewBackedScrollview.vr.js
│ │ │ ├── SafeAreaView.vr.js
│ │ │ ├── SegmentedControlIOS.vr.js
│ │ │ ├── SnapshotViewIOS.vr.js
│ │ │ ├── StatusBarIOS.vr.js
│ │ │ ├── TabBarIOS.vr.js
│ │ │ ├── TimePickerAndroid.vr.js
│ │ │ ├── ToastAndroid.vr.js
│ │ │ ├── ToolbarAndroid.vr.js
│ │ │ ├── TouchableNativeFeedback.vr.js
│ │ │ ├── VibrationIOS.vr.js
│ │ │ ├── ViewPagerAndroid.vr.js
│ │ │ └── WebView.vr.js
│ │ ├── RCTNetworking.vr.js
│ │ ├── ReactNativeViewAttributes.vr.js
│ │ ├── Settings.vr.js
│ │ ├── TVEventHandler.vr.js
│ │ ├── Text.vr.js
│ │ ├── TransformPropTypes.vr.js
│ │ ├── YellowBox.vr.js
│ │ ├── processTransform.vr.js
│ │ └── setupDevtools.vr.js
│ ├── Video/
│ │ ├── MediaPlayerState.js
│ │ ├── Video.js
│ │ ├── VideoControl.js
│ │ └── VideoUtils.js
│ ├── VideoPano/
│ │ └── VideoPano.js
│ ├── VrAnimated/
│ │ └── VrAnimated.js
│ ├── VrButton/
│ │ └── VrButton.js
│ └── react-360.js
├── OVRUI/
│ └── fonts/
│ ├── cjk_0.fnt
│ ├── cjk_1.fnt
│ ├── cjk_2.fnt
│ ├── efigs.fnt
│ ├── greek.fnt
│ ├── japanese.fnt
│ ├── korean.fnt
│ ├── korean_0.fnt
│ └── korean_1.fnt
├── README.md
├── React360/
│ ├── .npmignore
│ ├── LICENSE
│ ├── PATENTS
│ ├── README.md
│ ├── React360.js
│ ├── js/
│ │ ├── Audio/
│ │ │ ├── AudioTypes.js
│ │ │ ├── MediaError.js
│ │ │ ├── OVRAudio.js
│ │ │ ├── VRAudioBufferManager.js
│ │ │ ├── VRAudioBufferSource.js
│ │ │ ├── VRAudioComponent.js
│ │ │ ├── VRAudioContext.js
│ │ │ └── getSupportedFormats.js
│ │ ├── Bridge/
│ │ │ ├── Bridge.js
│ │ │ └── WebWorkerBridge.js
│ │ ├── Compositor/
│ │ │ ├── Audio/
│ │ │ │ ├── AudioInstance.js
│ │ │ │ ├── AudioNode.js
│ │ │ │ └── Types.js
│ │ │ ├── Compositor.js
│ │ │ ├── Cursor.js
│ │ │ ├── Environment/
│ │ │ │ ├── CubemapGeometry.js
│ │ │ │ ├── Environment.js
│ │ │ │ ├── EnvironmentUtils.js
│ │ │ │ ├── Screen.js
│ │ │ │ ├── StereoBasicTextureMaterial.js
│ │ │ │ ├── StereoShaderLib.js
│ │ │ │ ├── StereoTextureUniforms.js
│ │ │ │ └── Types.js
│ │ │ ├── Glyphs.js
│ │ │ ├── Location.js
│ │ │ ├── Overlay.js
│ │ │ ├── Surface.js
│ │ │ ├── SurfaceManager.js
│ │ │ ├── VRState.js
│ │ │ └── Video/
│ │ │ ├── BrowserVideoPlayer.js
│ │ │ ├── Types.js
│ │ │ ├── VideoPlayer.js
│ │ │ └── VideoPlayerManager.js
│ │ ├── Controls/
│ │ │ ├── CameraControllers/
│ │ │ │ ├── DeviceOrientationCameraController.js
│ │ │ │ ├── MousePanCameraController.js
│ │ │ │ ├── ScrollPanCameraController.js
│ │ │ │ └── Types.js
│ │ │ ├── Controls.js
│ │ │ ├── InputChannels/
│ │ │ │ ├── GamepadInputChannel.js
│ │ │ │ ├── KeyboardInputChannel.js
│ │ │ │ ├── MouseInputChannel.js
│ │ │ │ ├── TouchInputChannel.js
│ │ │ │ └── Types.js
│ │ │ ├── Raycasters/
│ │ │ │ ├── ControllerRaycaster.js
│ │ │ │ ├── MouseRaycaster.js
│ │ │ │ ├── TouchRaycaster.js
│ │ │ │ └── Types.js
│ │ │ ├── Types.js
│ │ │ ├── Utils/
│ │ │ │ └── ControllerRenderer.js
│ │ │ └── __tests__/
│ │ │ └── InputChannels-test.js
│ │ ├── Events/
│ │ │ └── MediaEvent.js
│ │ ├── Executor/
│ │ │ ├── NonBlobBridge.js
│ │ │ ├── ReactExecutor.js
│ │ │ ├── ReactExecutorIframe.js
│ │ │ ├── ReactExecutorNonBlobWebWorker.js
│ │ │ └── ReactExecutorWebWorker.js
│ │ ├── Loaders/
│ │ │ ├── GLTF2ModelLoader.js
│ │ │ ├── ModelLoaderRegistry.js
│ │ │ ├── ObjModelLoader.js
│ │ │ └── WavefrontOBJ/
│ │ │ ├── MTLLoader.js
│ │ │ ├── MTLParser.js
│ │ │ ├── OBJGroup.js
│ │ │ ├── OBJLoader.js
│ │ │ ├── OBJParser.js
│ │ │ ├── OBJTypes.js
│ │ │ ├── README.md
│ │ │ └── __tests__/
│ │ │ ├── MTLParser-test.js
│ │ │ ├── OBJGroup-test.js
│ │ │ ├── OBJLoader-test.js
│ │ │ └── OBJParser-test.js
│ │ ├── Modules/
│ │ │ ├── AndroidConstants.js
│ │ │ ├── AsyncLocalStorage.js
│ │ │ ├── AudioModule.js
│ │ │ ├── ControllerInfo.js
│ │ │ ├── DeviceInfo.js
│ │ │ ├── EnvironmentModule.js
│ │ │ ├── ExternalAssets.js
│ │ │ ├── GlyphTextures.js
│ │ │ ├── History.js
│ │ │ ├── LinkingManager.js
│ │ │ ├── Location.js
│ │ │ ├── LocationObserver.js
│ │ │ ├── Module.js
│ │ │ ├── Networking.js
│ │ │ ├── PlatformConstants.js
│ │ │ ├── RCTAudioModule.js
│ │ │ ├── RCTExceptionsManager.js
│ │ │ ├── RCTSourceCode.js
│ │ │ ├── RCTVideoModule.js
│ │ │ ├── ReactVRConstants.js
│ │ │ ├── Timing.js
│ │ │ ├── UIManager.js
│ │ │ ├── VideoModule.js
│ │ │ ├── WebSocketModule.js
│ │ │ └── __tests__/
│ │ │ └── Module-test.js
│ │ ├── OVRUI/
│ │ │ ├── FourByFourRect/
│ │ │ │ └── VectorGeometry.js
│ │ │ ├── SDFFont/
│ │ │ │ ├── DefaultFont.js
│ │ │ │ └── SDFFont.js
│ │ │ └── UIView/
│ │ │ ├── GuiSys.js
│ │ │ ├── GuiSysEvent.js
│ │ │ ├── UIView.js
│ │ │ └── UIViewUtil.js
│ │ ├── ReactInstance.js
│ │ ├── ReactNativeContext.js
│ │ ├── Renderer/
│ │ │ ├── FlexboxImplementation.js
│ │ │ └── RendererTypes.js
│ │ ├── Runtime/
│ │ │ └── Runtime.js
│ │ ├── Utils/
│ │ │ ├── CubePano.js
│ │ │ ├── Fader.js
│ │ │ ├── HPano.js
│ │ │ ├── Math.js
│ │ │ ├── RCTBindedResource.js
│ │ │ ├── RCTHeadModel.js
│ │ │ ├── RCTInputControls.js
│ │ │ ├── RCTResourceManager.js
│ │ │ ├── RCTVideoPlayer.js
│ │ │ ├── RefCountCache.js
│ │ │ ├── ResourceManager.js
│ │ │ ├── StereoOffsetRepeats.js
│ │ │ ├── TextureManager.js
│ │ │ ├── Yoga.bundle.js
│ │ │ ├── __tests__/
│ │ │ │ ├── Fader-test.js
│ │ │ │ ├── RCTVideoPlayer-test.js
│ │ │ │ ├── RefCountCache-test.js
│ │ │ │ ├── TextureManager-test.js
│ │ │ │ └── merge-test.js
│ │ │ ├── createRemoteImageManager.js
│ │ │ ├── extractURL.js
│ │ │ ├── fetchResource.js
│ │ │ ├── isPositive.js
│ │ │ └── merge.js
│ │ ├── Video/
│ │ │ ├── BasicVideoPlayer.js
│ │ │ ├── OVRVideo.js
│ │ │ ├── VRVideoComponent.js
│ │ │ ├── VRVideoPlayer.js
│ │ │ └── getSupportedFormats.js
│ │ ├── Views/
│ │ │ ├── AmbientLight.js
│ │ │ ├── BaseMesh.js
│ │ │ ├── BaseView.js
│ │ │ ├── Box.js
│ │ │ ├── Cylinder.js
│ │ │ ├── CylindricalPanel.js
│ │ │ ├── DirectionalLight.js
│ │ │ ├── Image.js
│ │ │ ├── LiveEnvCamera.js
│ │ │ ├── Model.js
│ │ │ ├── Pano.js
│ │ │ ├── Plane.js
│ │ │ ├── PointLight.js
│ │ │ ├── Prefetch.js
│ │ │ ├── QuadPanel.js
│ │ │ ├── RawText.js
│ │ │ ├── Scene.js
│ │ │ ├── Sound.js
│ │ │ ├── Sphere.js
│ │ │ ├── SpotLight.js
│ │ │ ├── Text.js
│ │ │ ├── Video.js
│ │ │ ├── VideoPano.js
│ │ │ ├── View.js
│ │ │ └── __tests__/
│ │ │ ├── BaseMesh-test.js
│ │ │ ├── BaseView-test.js
│ │ │ ├── Image-test.js
│ │ │ ├── Model-test.js
│ │ │ ├── Text-test.js
│ │ │ └── View-test.js
│ │ ├── bundleFromLocation.js
│ │ └── createRootView.js
│ └── package.json
├── Samples/
│ ├── BasicAppTemplate/
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── src/
│ │ │ └── components/
│ │ │ ├── BasicAppTemplateInfoButton.react.js
│ │ │ └── BasicAppTemplateScenePage.react.js
│ │ └── static_assets/
│ │ └── video360.webm
│ ├── CustomPlayerSample/
│ │ ├── .gitignore
│ │ ├── DashVideoPlayer.js
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── HeadlockedSurfaces/
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── MediaAppTemplate/
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── src/
│ │ └── components/
│ │ ├── MediaAppTemplateInfoButton.react.js
│ │ ├── MediaAppTemplateScenePage.react.js
│ │ ├── MediaAppTemplateSubtitleText.react.js
│ │ └── MediaAppTemplateVideoScreen.react.js
│ ├── MultiRoot/
│ │ ├── CurrentPost.js
│ │ ├── ModelView.js
│ │ ├── README.md
│ │ ├── Store.js
│ │ ├── TopPosts.js
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── NativeModules/
│ │ ├── BrowserInfoModule.js
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── Slideshow/
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ └── TourAppTemplate/
│ ├── RCTWorkInProgressSurface.js
│ ├── README.md
│ ├── client.js
│ ├── index.html
│ ├── index.js
│ ├── src/
│ │ ├── components/
│ │ │ ├── TourCylinderHotspot.js
│ │ │ ├── TourHotspot.js
│ │ │ ├── TourInfoButton.react.js
│ │ │ ├── TourLoadingSpinner.react.js
│ │ │ ├── TourNavButton.react.js
│ │ │ └── TourTooltip.react.js
│ │ └── customViews/
│ │ └── WorkInProgressSurface.js
│ └── static_assets/
│ ├── License.html
│ ├── Three-Cocktails.webm
│ └── tourOfTheChester.json
├── addons/
│ ├── react-360-cli/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── generators/
│ │ │ ├── __tests__/
│ │ │ │ └── index-test.generator.js
│ │ │ ├── babelrc.generator.js
│ │ │ ├── client.generator.js
│ │ │ ├── flowconfig.generator.js
│ │ │ ├── gitignore.generator.js
│ │ │ ├── index.generator.js
│ │ │ ├── index.html.generator.js
│ │ │ ├── package.json.generator.js
│ │ │ ├── rn-cli.config.generator.js
│ │ │ └── watchmanconfig.generator.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── copyAssets.js
│ │ ├── copyFile.js
│ │ ├── createFile.js
│ │ ├── ensureDir.js
│ │ ├── generateFiles.js
│ │ ├── getLatestVersion.js
│ │ ├── getPackager.js
│ │ ├── isDirectory.js
│ │ ├── listGenerators.js
│ │ └── makeModulePath.js
│ └── react-360-common-ui/
│ ├── LICENSE
│ ├── PATENTS
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── src/
│ ├── VideoControl.react.js
│ └── VideoPlayer.react.js
├── babel.config.js
├── defs/
│ ├── chalk.js
│ ├── react-360-runtime.js
│ ├── react-360.js
│ ├── three-gltf2-loader.js
│ ├── three.js
│ └── webvr.js
├── docs/
│ ├── animated.md
│ ├── async-storage.md
│ ├── audio.md
│ ├── controller-info.md
│ ├── entity.md
│ ├── environment.md
│ ├── example-basicapptemplate.md
│ ├── example-customplayer.md
│ ├── example-mediaapptemplate.md
│ ├── example-multisurface.md
│ ├── example-native-modules.md
│ ├── example-slideshow.md
│ ├── explore-code.md
│ ├── from-react-vr.md
│ ├── image.md
│ ├── input-handling.md
│ ├── integrate.md
│ ├── layout.md
│ ├── native-modules.md
│ ├── objects.md
│ ├── photos-and-videos.md
│ ├── publish.md
│ ├── runtime.md
│ ├── setup.md
│ ├── static-assets.md
│ ├── surfaces.md
│ ├── view.md
│ ├── vr-button.md
│ └── what-is.md
├── jest.config.js
├── lerna.json
├── lib-assets/
│ └── VideoControlGlyphs.js
├── package.json
├── packages/
│ ├── .gitignore
│ ├── README.md
│ ├── animated-react-webgl/
│ │ ├── README.md
│ │ ├── createAnimatedComponent.js
│ │ ├── index.js
│ │ └── package.json
│ ├── react-360/
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Container.js
│ │ ├── Glyphs.js
│ │ ├── Overlay.js
│ │ ├── React360.js
│ │ ├── WebVRCameraController.js
│ │ └── controller/
│ │ ├── ControllerModel.js
│ │ ├── ControllerRaycaster.js
│ │ ├── CursorModel.js
│ │ ├── createControllerBeamProgram.js
│ │ └── createCursorProgram.js
│ ├── react-360-controls/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Controls.js
│ │ ├── ControlsTypes.js
│ │ ├── DeviceOrientationCameraController.js
│ │ ├── MousePanCameraController.js
│ │ ├── MouseRaycaster.js
│ │ ├── R360Controls.js
│ │ ├── ScrollPanCameraController.js
│ │ └── TouchRaycaster.js
│ ├── react-360-native-compat/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── NativeCompat.js
│ │ ├── components/
│ │ │ └── VrButton.js
│ │ ├── modules/
│ │ │ ├── AsyncLocalStorage.js
│ │ │ ├── AudioModule.js
│ │ │ ├── ControllerInfo.js
│ │ │ ├── DeviceEventEmitter.js
│ │ │ ├── EnvironmentModule.js
│ │ │ ├── NativeModules.js
│ │ │ └── VideoModule.js
│ │ └── utilities/
│ │ ├── AsyncStorage.js
│ │ ├── ControllerInfo.js
│ │ └── Environment.js
│ ├── react-360-surfaces/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Environment.js
│ │ ├── R360Surfaces.js
│ │ ├── RingGeometry.js
│ │ ├── Surface.js
│ │ ├── computeCylinderIntersection.js
│ │ ├── computeFlatIntersection.js
│ │ ├── createEnvironmentCubemapProgram.js
│ │ ├── createEnvironmentSphereProgram.js
│ │ ├── createSurfaceProgram.js
│ │ ├── generateCylinderSurface.js
│ │ ├── generateEnvironmentSphere.js
│ │ └── generateFlatSurface.js
│ ├── react-webgl/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── CanvasRoot.js
│ │ ├── Elements.js
│ │ ├── GLRoot.js
│ │ ├── HostConfig.js
│ │ ├── Pressable.react.js
│ │ ├── Primitives.js
│ │ ├── ReactWGL.js
│ │ ├── RenderTargetRoot.js
│ │ ├── StyleSheet/
│ │ │ ├── StyleSheet.js
│ │ │ ├── __tests__/
│ │ │ │ ├── areStylePropsEqual-test.js
│ │ │ │ └── flattenStyle-test.js
│ │ │ ├── areStylePropsEqual.js
│ │ │ └── flattenStyle.js
│ │ ├── Video.react.js
│ │ └── applyProps.js
│ ├── react-webgl-video-manager/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── RWGLVideo.js
│ │ ├── VideoManager.js
│ │ ├── VideoPlayer.js
│ │ ├── VideoTypes.js
│ │ ├── getExtension.js
│ │ └── implementations/
│ │ └── BrowserVideoImplementation.js
│ ├── ref-count-cache/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── RefCountCache.js
│ │ └── __tests__/
│ │ └── RefCountCache-test.js
│ ├── transition-value/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Entry.js
│ │ ├── TimingFunctions.js
│ │ ├── Transition.js
│ │ └── TransitionValue.js
│ ├── vr-audio/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── AudioInstance.js
│ │ ├── AudioManager.js
│ │ ├── AudioMath.js
│ │ ├── AudioNode.js
│ │ ├── AudioTypes.js
│ │ └── VRAudio.js
│ ├── vr-input-source/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── GamepadState.js
│ │ ├── InputEventTypes.js
│ │ ├── VRInputSource.js
│ │ ├── WellKnownGamepads.js
│ │ ├── detectPrimaryButtons.js
│ │ └── emulatePosition.js
│ ├── vr-state/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ └── VRState.js
│ ├── webgl-lite/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── CubemapTexture.js
│ │ ├── FrameBuffer.js
│ │ ├── Geometry.js
│ │ ├── IndexBuffer.js
│ │ ├── Node.js
│ │ ├── Program.js
│ │ ├── ProgramManager.js
│ │ ├── RenderGroup.js
│ │ ├── Texture.js
│ │ ├── VertexBuffer.js
│ │ ├── WebGL.js
│ │ ├── __tests__/
│ │ │ ├── Program-test.js
│ │ │ └── ProgramManager-test.js
│ │ ├── createUniformSetter.js
│ │ ├── defaultValueForUniform.js
│ │ └── getAttributeSizeAndType.js
│ ├── webgl-lite-gltf/
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── BufferSource.js
│ │ ├── FileTypes.js
│ │ ├── GLTF.js
│ │ ├── GLTFShaderAttributes.js
│ │ ├── GLTFStructure.js
│ │ ├── base64ToArrayBuffer.js
│ │ ├── compareByteOffset.js
│ │ ├── createDataView.js
│ │ └── createGLTFProgram.js
│ ├── webgl-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── examples/
│ │ │ └── boilerplate/
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── GLUI.js
│ │ ├── Math.js
│ │ ├── StackingContext.js
│ │ ├── Surface.js
│ │ ├── TextureManager.js
│ │ ├── __tests__/
│ │ │ ├── StackingContext-test.js
│ │ │ └── colorStringToARGB-test.js
│ │ ├── colorStringToARGB.js
│ │ ├── primitives/
│ │ │ ├── GLTexturedView.js
│ │ │ ├── GLView.js
│ │ │ └── SDFRectangle.js
│ │ ├── recursiveLayout.js
│ │ ├── setStyle.js
│ │ ├── text/
│ │ │ ├── BreakIterator.js
│ │ │ ├── FontGeometry.js
│ │ │ ├── TextTypes.js
│ │ │ ├── __tests__/
│ │ │ │ ├── BreakIterator-test.js
│ │ │ │ └── wrapText-test.js
│ │ │ └── wrapText.js
│ │ ├── vendor/
│ │ │ └── Yoga.bundle.js
│ │ └── views/
│ │ ├── Image.js
│ │ ├── RawText.js
│ │ ├── ShadowView.js
│ │ ├── ShadowViewWebGL.js
│ │ ├── SurfaceView.js
│ │ ├── Text.js
│ │ ├── View.js
│ │ └── __tests__/
│ │ └── ShadowView-test.js
│ ├── webgl-ui-sdf-font/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── SDF.js
│ │ ├── SDFDefaultFont.js
│ │ ├── SDFFontGeometry.js
│ │ ├── SDFTextImplementation.js
│ │ └── SDFTextShaders.js
│ └── webgl-ui-system-font/
│ ├── .gitignore
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── src/
│ ├── Atlas.js
│ ├── AtlasNode.js
│ ├── FontImplementation.js
│ ├── FontMeasure.js
│ ├── SysFont.js
│ └── __tests__/
│ └── AtlasNode-test.js
├── render-tests/
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── runner-styles.css
│ ├── runner.html
│ ├── scripts/
│ │ └── test.js
│ ├── test-utils/
│ │ ├── assertColorEqual.js
│ │ └── getPixelData.js
│ ├── tests/
│ │ ├── render-tests.js
│ │ ├── test-basicgl.js
│ │ ├── test-geometry.js
│ │ ├── test-views.js
│ │ └── tests.js
│ └── webpack.config.js
├── scripts/
│ ├── build-packages.js
│ ├── bump-versions.js
│ ├── bundle.js
│ ├── install-bridge.js
│ ├── install-deps.js
│ ├── packager.js
│ └── project-paths.js
├── tools/
│ └── equirect2cubemap/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── eq2cm.cpp
│ ├── stb_image.h
│ └── stb_image_write.h
└── website/
├── blog/
│ └── 2018-05-02-blog-post.md
├── core/
│ └── Footer.js
├── i18n/
│ └── en.json
├── package.json
├── pages/
│ └── en/
│ ├── help.js
│ ├── index.js
│ └── users.js
├── sidebars.json
├── siteConfig.js
└── static/
├── css/
│ └── custom.css
└── sample/
├── client.bundle.js
├── index.bundle.js
└── index.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .circleci/config.yml
================================================
version: 2
jobs:
build:
working_directory: ~/react-360
docker:
- image: circleci/node:10
steps:
- checkout
- run: yarn
- run: yarn build
flow:
working_directory: ~/react-360
docker:
- image: circleci/node:10
steps:
- checkout
- run: yarn
- run: yarn flow
test-unit:
working_directory: ~/react-360
docker:
- image: circleci/node:10
steps:
- checkout
- run: yarn
- run: yarn build
- run: yarn test
render-tests:
working_directory: ~/react-360/render-tests
docker:
- image: circleci/node:10
steps:
- checkout
- run: yarn
- run: yarn build
workflows:
version: 2
build_and_test:
jobs:
- build
- test-unit:
requires:
- build
- render-tests:
requires:
- build
- flow
================================================
FILE: .flowconfig
================================================
[ignore]
.*/docs/.*
.*/website/.*
.*/__tests__/.*
<PROJECT_ROOT>/addons/.*
<PROJECT_ROOT>/node_modules/.*
<PROJECT_ROOT>/Libraries/.*
<PROJECT_ROOT>/React360/.*
[include]
[libs]
defs/
[options]
emoji=true
module.ignore_non_literal_requires=true
================================================
FILE: .gitattributes
================================================
*.sh text eol=lf
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
We use GitHub Issues for bugs and feature requests
--- Delete everything above this line before submitting your issue ---
### Description
Is this a Bug or a Feature Request?
For a Bug please explain below what you did, what you expected to happen, and what actually happens.
#### Expected behavior
#### Actual behavior
### Reproduction
List all the steps required to encounter the issue you're reporting. These steps should be clear and concise.
An example of your code that reliably reproduces the issue is ideal.
### Solution
What needs to be done to address this issue? Ideally, provide a pull request with a fix.
### Additional Information
* 'react-360' package version: [FILL THIS OUT: get this by running `npm list react-360`]
* 'react-360-web' package version: [FILL THIS OUT: get this by running `npm list react-360-web`]
* Operating System: [FILL THIS OUT: MacOS, Linux, or Windows?]
* Browser: [FILL THIS OUT: Oculus Browser, Chrome, Edge, Safari? Which version?]
* VR Device: [FILL THIS OUT: In or Out of VR? Headset? ]
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
Thanks for submitting a PR! Please read these instructions carefully:
- [ ] Explain the **motivation** for making this change.
- [ ] Provide a **test plan** demonstrating that the code is solid.
- [ ] Match the **code formatting** of the rest of the codebase.
## Motivation (required)
What existing problem does the pull request solve?
## Test Plan (required)
A good test plan has the exact commands you ran and their output, provides screenshots or videos if the pull request changes UI or updates the website. See [What is a Test Plan?][1] to learn more.
If you have added code that should be tested, add tests.
## Next Steps
Sign the [CLA][2], if you haven't already.
Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it.
Make sure all **tests pass** on [Circle CI][3]. PRs that break tests are unlikely to be merged.
For more info, see the ["Pull Requests"][4] section of our "Contributing" guidelines.
[1]: https://medium.com/@martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9
[2]: https://code.facebook.com/cla
[3]: http://circleci.com/gh/facebook/react-native
[4]: https://github.com/facebook/react-360/blob/master/CONTRIBUTING.md#pull-requests
================================================
FILE: .gitignore
================================================
coverage/
node_modules
*~
.DS_Store
*.log
EndToEnd/testapp/build
package_builds
website/translated_docs
website/build
website/yarn.lock
website/node_modules
Samples/*/NonBlobBridge.js
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://code.facebook.com/pages/876921332402685/open-source-code-of-conduct) so that you can understand what actions will and will not be tolerated.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to React 360
React 360 is actively being developed by Oculus and Facebook, and is used to power a growing number of internal and external applications. We've put together this document to help make the public contribution process clearer and answer any questions you may have.
## Code of Conduct
Facebook has adopted a Code of Conduct that we expect project participants to adhere to. Please [read the full text](https://code.facebook.com/pages/876921332402685/open-source-code-of-conduct) so that you can understand what actions will and will not be tolerated.
## Pull Requests
Our core team will be monitoring for pull requests. New pull requests will automatically run against our continuous integration suite, which should detect the majority of formatting and testing issues. After this, one of our team members will run some Facebook-specific integration tests on it, to make sure it doesn't break any of our applications. Once that has completed, one member of the team will sign off on the changes and merge the pull request. Any API changes might require us to fix internal uses, which could cause some delay. We'll do our best to provide updates and feedback in a timely manner throughout the process.
Before submitting a pull request, please make sure you have done the following:
1. Fork the repository and fork your working branch from master
2. Describe your test plan in your Pull Request
- If you've added new features, cover them with tests
- If you've changed APIs, update the appropriate documentation
3. Ensure all test suites pass (`npm test`)
4. Ensure the linter doesn't return any errors (`npm run lint`)
5. Ensure that Flow typechecking is sound (`npm run flow`)
6. Make sure you've completed the CLA.
## Copyright Notice for Files
Copy and paste this to the top of your new files:
```
/**
* Copyright (c) 2017-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.
*/
```
## Contributor License Agreement (CLA)
In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, just let us know that you have completed the CLA and we can cross-check with your GitHub username.
[Complete your CLA here](https://code.facebook.com/cla)
## License
By contributing to React, you agree that your contributions will be licensed under its BSD license.
================================================
FILE: LICENSE
================================================
BSD License
For React 360 software
Copyright (c) 2015-present, Facebook, Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name Facebook nor the names of its contributors may be used to
endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: LICENSE-docs
================================================
Attribution 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More_considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
g. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
i. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's
License You apply must not prevent recipients of the Adapted
Material from complying with this Public License.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the "Licensor." Except for the limited purpose of indicating
that material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
Creative Commons may be contacted at creativecommons.org.
================================================
FILE: LICENSE-examples
================================================
The examples provided by Oculus are for non-commercial testing and evaluation
purposes only. Oculus reserves all rights not expressly granted.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
OCULUS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: Libraries/.eslintrc.js
================================================
module.exports = {
rules: {
'no-restricted-modules': ['error', 'three'],
'no-restricted-imports': ['error', 'three'],
},
}
================================================
FILE: Libraries/Camera/LiveEnvCamera.js
================================================
/**
* 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.
*
* @providesModule LiveEnvCamera
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const requireNativeComponent = require('requireNativeComponent');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformPropTypes = require('LayoutAndTransformPropTypes');
const createReactClass = require('create-react-class');
/**
* Displays the environment facing camera. By default the camera is position:'absolute'
* `<LiveEnvCamera />`
* The camera image is displayed on geometry that is 1000m away from the viewer
*/
const LiveEnvCamera = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformPropTypes),
},
viewConfig: {
uiViewClassName: 'LiveEnvCamera',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
},
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
// default panos to being a render group
if (!props.style.renderGroup) {
props.style.renderGroup = true;
}
return (
<RKLiveEnvCamera
{...props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKLiveEnvCamera>
);
},
});
const RKLiveEnvCamera = requireNativeComponent('LiveEnvCamera', LiveEnvCamera, {
nativeOnly: {},
});
module.exports = LiveEnvCamera;
================================================
FILE: Libraries/Components/View/PlatformViewPropTypes.vr.js
================================================
/**
* 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.
*
* @providesModule PlatformViewPropTypes
* @flow
*/
module.export = {};
================================================
FILE: Libraries/Components/View/View.vr.js
================================================
/**
* 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.
*
* @providesModule View
* @flow
*/
'use strict';
const EdgeInsetsPropType = require('EdgeInsetsPropType');
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const StyleSheetPropType = require('StyleSheetPropType');
const UIManager = require('UIManager');
const ViewStylePropTypes = require('ViewStylePropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const stylePropType = StyleSheetPropType(ViewStylePropTypes);
const AccessibilityTraits = [
'none',
'button',
'link',
'header',
'search',
'image',
'selected',
'plays',
'key',
'text',
'summary',
'disabled',
'frequentUpdates',
'startsMedia',
'adjustable',
'allowsDirectInteraction',
'pageTurn',
];
const AccessibilityComponentType = [
'none',
'button',
'radiobutton_checked',
'radiobutton_unchecked',
];
const forceTouchAvailable =
(UIManager.RCTView &&
UIManager.RCTView.Constants &&
UIManager.RCTView.Constants.forceTouchAvailable) ||
false;
const statics = {
AccessibilityTraits,
AccessibilityComponentType,
/**
* Is 3D Touch / Force Touch available (i.e. will touch events include `force`)
* @platform ios
*/
forceTouchAvailable,
};
/**
* The most fundamental component for building a UI, `View` is a container that supports layout with
* [flexbox](/react-native/docs/flexbox.html), [style](/react-native/docs/style.html),
* [some touch handling](/react-native/docs/handling-touches.html), and
* [accessibility](/react-native/docs/accessibility.html) controls. `View` maps directly to the
* native view equivalent on whatever platform React Native is running on, whether that is a
* `UIView`, `<div>`, `android.view`, etc.
*
* `View` is designed to be nested inside other views and can have 0 to many children of any type.
*
* This example creates a `View` that wraps two colored boxes and a text component in a row with
* padding.
*
* ```javascript
* class ViewColoredBoxesWithText extends Component {
* render() {
* return (
* <View style={{flexDirection: 'row', height: 1, padding: 0.2}}>
* <View style={{backgroundColor: 'blue', flex: 0.3}} />
* <View style={{backgroundColor: 'red', flex: 0.5}} />
* <Text>Hello World!</Text>
* </View>
* );
* }
* }
* ```
*
* > `View`s are designed to be used with [`StyleSheet`](/react-native/docs/style.html) for clarity
* > and performance, although inline styles are also supported.
*
*/
const View = createReactClass({
// TODO: We should probably expose the mixins, viewConfig, and statics publicly. For example,
// one of the props is of type AccessibilityComponentType. That is defined as a const[] above,
// but it is not rendered by the docs, since `statics` below is not rendered. So its Possible
// values had to be hardcoded.
mixins: [NativeMethodsMixin],
/**
* `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We
* make `this` look like an actual native component class.
*/
viewConfig: {
uiViewClassName: 'RCTView',
validAttributes: ReactNativeViewAttributes.RCTView,
},
statics: {
...statics,
},
propTypes: {
/**
* When `true`, indicates that the view is an accessibility element. By default,
* all the touchable elements are accessible.
*/
accessible: PropTypes.bool,
/**
* Overrides the text that's read by the screen reader when the user interacts
* with the element. By default, the label is constructed by traversing all the
* children and accumulating all the `Text` nodes separated by space.
*/
accessibilityLabel: PropTypes.string,
/**
* Indicates to accessibility services to treat UI component like a
* native one. Works for Android only.
*
* Possible values are one of:
*
* - `'none'`
* - `'button'`
* - `'radiobutton_checked'`
* - `'radiobutton_unchecked'`
*
* @platform android
*/
accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentType),
/**
* Indicates to accessibility services whether the user should be notified
* when this view changes. Works for Android API >= 19 only.
* Possible values:
*
* - `'none'` - Accessibility services should not announce changes to this view.
* - `'polite'`- Accessibility services should announce changes to this view.
* - `'assertive'` - Accessibility services should interrupt ongoing speech
* to immediately announce changes to this view.
*
* See the [Android `View` docs](http://developer.android.com/reference/android/view/View.html#attr_android:accessibilityLiveRegion)
* for reference.
*
* @platform android
*/
accessibilityLiveRegion: PropTypes.oneOf(['none', 'polite', 'assertive']),
/**
* Controls how view is important for accessibility which is if it
* fires accessibility events and if it is reported to accessibility services
* that query the screen. Works for Android only.
*
* Possible values:
*
* - `'auto'` - The system determines whether the view is important for accessibility -
* default (recommended).
* - `'yes'` - The view is important for accessibility.
* - `'no'` - The view is not important for accessibility.
* - `'no-hide-descendants'` - The view is not important for accessibility,
* nor are any of its descendant views.
*
* See the [Android `importantForAccessibility` docs](http://developer.android.com/reference/android/R.attr.html#importantForAccessibility)
* for reference.
*
* @platform android
*/
importantForAccessibility: PropTypes.oneOf(['auto', 'yes', 'no', 'no-hide-descendants']),
/**
* Provides additional traits to screen reader. By default no traits are
* provided unless specified otherwise in element.
*
* You can provide one trait or an array of many traits.
*
* Possible values for `AccessibilityTraits` are:
*
* - `'none'` - The element has no traits.
* - `'button'` - The element should be treated as a button.
* - `'link'` - The element should be treated as a link.
* - `'header'` - The element is a header that divides content into sections.
* - `'search'` - The element should be treated as a search field.
* - `'image'` - The element should be treated as an image.
* - `'selected'` - The element is selected.
* - `'plays'` - The element plays sound.
* - `'key'` - The element should be treated like a keyboard key.
* - `'text'` - The element should be treated as text.
* - `'summary'` - The element provides app summary information.
* - `'disabled'` - The element is disabled.
* - `'frequentUpdates'` - The element frequently changes its value.
* - `'startsMedia'` - The element starts a media session.
* - `'adjustable'` - The element allows adjustment over a range of values.
* - `'allowsDirectInteraction'` - The element allows direct touch interaction for VoiceOver users.
* - `'pageTurn'` - Informs VoiceOver that it should scroll to the next page when it finishes reading the contents of the element.
*
* See the [Accessibility guide](/react-native/docs/accessibility.html#accessibilitytraits-ios)
* for more information.
*
* @platform ios
*/
accessibilityTraits: PropTypes.oneOfType([
PropTypes.oneOf(AccessibilityTraits),
PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),
]),
/**
* When `accessible` is true, the system will try to invoke this function
* when the user performs accessibility tap gesture.
*/
onAccessibilityTap: PropTypes.func,
/**
* When `accessible` is `true`, the system will invoke this function when the
* user performs the magic tap gesture.
*/
onMagicTap: PropTypes.func,
/**
* Used to locate this view in end-to-end tests.
*
* > This disables the 'layout-only view removal' optimization for this view!
*/
testID: PropTypes.string,
/**
* For most touch interactions, you'll simply want to wrap your component in
* `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,
* `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.
*/
/**
* The View is now responding for touch events. This is the time to highlight and show the user
* what is happening.
*
* `View.props.onResponderGrant: (event) => {}`, where `event` is a synthetic touch event as
* described above.
*/
onResponderGrant: PropTypes.func,
/**
* The user is moving their finger.
*
* `View.props.onResponderMove: (event) => {}`, where `event` is a synthetic touch event as
* described above.
*/
onResponderMove: PropTypes.func,
/**
* Another responder is already active and will not release it to that `View` asking to be
* the responder.
*
* `View.props.onResponderReject: (event) => {}`, where `event` is a synthetic touch event as
* described above.
*/
onResponderReject: PropTypes.func,
/**
* Fired at the end of the touch.
*
* `View.props.onResponderRelease: (event) => {}`, where `event` is a synthetic touch event as
* described above.
*/
onResponderRelease: PropTypes.func,
/**
* The responder has been taken from the `View`. Might be taken by other views after a call to
* `onResponderTerminationRequest`, or might be taken by the OS without asking (e.g., happens
* with control center/ notification center on iOS)
*
* `View.props.onResponderTerminate: (event) => {}`, where `event` is a synthetic touch event as
* described above.
*/
onResponderTerminate: PropTypes.func,
/**
* Some other `View` wants to become responder and is asking this `View` to release its
* responder. Returning `true` allows its release.
*
* `View.props.onResponderTerminationRequest: (event) => {}`, where `event` is a synthetic touch
* event as described above.
*/
onResponderTerminationRequest: PropTypes.func,
/**
* Does this view want to become responder on the start of a touch?
*
* `View.props.onStartShouldSetResponder: (event) => [true | false]`, where `event` is a
* synthetic touch event as described above.
*/
onStartShouldSetResponder: PropTypes.func,
/**
* If a parent `View` wants to prevent a child `View` from becoming responder on a touch start,
* it should have this handler which returns `true`.
*
* `View.props.onStartShouldSetResponderCapture: (event) => [true | false]`, where `event` is a
* synthetic touch event as described above.
*/
onStartShouldSetResponderCapture: PropTypes.func,
/**
* Does this view want to "claim" touch responsiveness? This is called for every touch move on
* the `View` when it is not the responder.
*
* `View.props.onMoveShouldSetResponder: (event) => [true | false]`, where `event` is a
* synthetic touch event as described above.
*/
onMoveShouldSetResponder: PropTypes.func,
/**
* If a parent `View` wants to prevent a child `View` from becoming responder on a move,
* it should have this handler which returns `true`.
*
* `View.props.onMoveShouldSetResponderCapture: (event) => [true | false]`, where `event` is a
* synthetic touch event as described above.
*/
onMoveShouldSetResponderCapture: PropTypes.func,
/**
* This defines how far a touch event can start away from the view.
* Typical interface guidelines recommend touch targets that are at least
* 30 - 40 points/density-independent pixels.
*
* For example, if a touchable view has a height of 20 the touchable height can be extended to
* 40 with `hitSlop={{top: 10, bottom: 10, left: 0, right: 0}}`
*
* > The touch area never extends past the parent view bounds and the Z-index
* > of sibling views always takes precedence if a touch hits two overlapping
* > views.
*/
hitSlop: PropTypes.oneOfType([PropTypes.number, EdgeInsetsPropType]),
/**
* Used when `cursorVisibility='auto'` to define how close the cursor must be to the view
* before it is visible. Default is `{top: 0, bottom: 0, left: 0, right: 0}` meaning
* the cursor is visible only when intersecting with the view.
*
* For example, to make the cursor visible when it is within 10 cm of the top or bottom of
* a view: `cursorVisibilitySlop={{top: 0.10, bottom: 0.10, left: 0, right: 0}}`
*
*/
cursorVisibilitySlop: PropTypes.oneOfType([PropTypes.number, EdgeInsetsPropType]),
/**
* Invoked on mount and layout changes with:
*
* `{nativeEvent: { layout: {x, y, width, height}}}`
*
* This event fires immediately once the layout has been calculated, but
* the new layout may not yet be reflected on the screen at the time the
* event is received, especially if a layout animation is in progress.
*/
onLayout: PropTypes.func,
/**
* Whether this view should be automatically rotated to face the screen
* when running on desktop or mobile. Has no effect when in VR.
*
* Note that billboarding overrides any local rotations to the view that
* may have been set using the `transform: [{rotate}]` style property.
*/
billboarding: PropTypes.oneOf(['off', 'on']),
/**
* Invoked when a interaction method enters a view
*/
onEnter: PropTypes.func,
/**
* Invoked when a interaction method exits a view
*/
onExit: PropTypes.func,
/**
* Invoked when a user generates input over a view
*/
onInput: PropTypes.func,
onChange: PropTypes.func,
/**
* Invoked when gazing or interacting on a view, the head pose is passed to the event
*
* ```
* {nativeEvent: {
* headMatrix: headMatrixArray,
* viewMatrix: viewMatrixArray,
* target: target,
* source: source,
* },
* ```
*/
onHeadPose: PropTypes.func,
onChangeCaptured: PropTypes.func,
onInputCaptured: PropTypes.func,
onHeadPoseCaptured: PropTypes.func,
/**
* Invoked on when raycast moves within the view
*/
onMove: PropTypes.func,
/**
* Controls whether the `View` can be the target of touch events.
*
* - `'auto'`: The View can be the target of touch events.
* - `'none'`: The View is never the target of touch events.
* - `'box-none'`: The View is never the target of touch events but its
* subviews can be. It behaves as if the view had the following classes
* in CSS:
* ```
* .box-none {
* pointer-events: none;
* }
* .box-none * {
* pointer-events: all;
* }
* ```
* - `'box-only'`: The view can be the target of touch events but its
* subviews cannot be. It behaves as if the view had the following classes
* in CSS:
* ```
* .box-only {
* pointer-events: all;
* }
* .box-only * {
* pointer-events: none;
* }
* ```
* > Since `pointerEvents` does not affect layout/appearance, and we are
* > already deviating from the spec by adding additional modes, we opt to not
* > include `pointerEvents` on `style`. On some platforms, we would need to
* > implement it as a `className` anyways. Using `style` or not is an
* > implementation detail of the platform.
*/
pointerEvents: PropTypes.oneOf(['box-none', 'none', 'box-only', 'auto']),
style: stylePropType,
/**
* This is a special performance property exposed by `RCTView` and is useful
* for scrolling content when there are many subviews, most of which are
* offscreen. For this property to be effective, it must be applied to a
* view that contains many subviews that extend outside its bound. The
* subviews must also have `overflow: hidden`, as should the containing view
* (or one of its superviews).
*/
removeClippedSubviews: PropTypes.bool,
/**
* Whether this `View` should render itself (and all of its children) into a
* single hardware texture on the GPU.
*
* On Android, this is useful for animations and interactions that only
* modify opacity, rotation, translation, and/or scale: in those cases, the
* view doesn't have to be redrawn and display lists don't need to be
* re-executed. The texture can just be re-used and re-composited with
* different parameters. The downside is that this can use up limited video
* memory, so this prop should be set back to false at the end of the
* interaction/animation.
*
* @platform android
*/
renderToHardwareTextureAndroid: PropTypes.bool,
/**
* Whether this `View` should be rendered as a bitmap before compositing.
*
* On iOS, this is useful for animations and interactions that do not
* modify this component's dimensions nor its children; for example, when
* translating the position of a static view, rasterization allows the
* renderer to reuse a cached bitmap of a static view and quickly composite
* it during each frame.
*
* Rasterization incurs an off-screen drawing pass and the bitmap consumes
* memory. Test and measure when using this property.
*
* @platform ios
*/
shouldRasterizeIOS: PropTypes.bool,
/**
* Views that are only used to layout their children or otherwise don't draw
* anything may be automatically removed from the native hierarchy as an
* optimization. Set this property to `false` to disable this optimization and
* ensure that this `View` exists in the native view hierarchy.
*
* @platform android
*/
collapsable: PropTypes.bool,
/**
* Whether this `View` needs to rendered offscreen and composited with an alpha
* in order to preserve 100% correct colors and blending behavior. The default
* (`false`) falls back to drawing the component and its children with an alpha
* applied to the paint used to draw each element instead of rendering the full
* component offscreen and compositing it back with an alpha value. This default
* may be noticeable and undesired in the case where the `View` you are setting
* an opacity on has multiple overlapping elements (e.g. multiple overlapping
* `View`s, or text and a background).
*
* Rendering offscreen to preserve correct alpha behavior is extremely
* expensive and hard to debug for non-native developers, which is why it is
* not turned on by default. If you do need to enable this property for an
* animation, consider combining it with renderToHardwareTextureAndroid if the
* view **contents** are static (i.e. it doesn't need to be redrawn each frame).
* If that property is enabled, this View will be rendered off-screen once,
* saved in a hardware texture, and then composited onto the screen with an alpha
* each frame without having to switch rendering targets on the GPU.
*
* @platform android
*/
needsOffscreenAlphaCompositing: PropTypes.bool,
},
render: function() {
/**
* by default set the renderGroup if any transform as been set
*/
const props = {...this.props} || {};
if (props.style && props.style['renderGroup'] === undefined && props.style.transform) {
props.style.renderGroup = true;
}
return <RCTView {...props} />;
},
});
const RCTView = requireNativeComponent('RCTView', View, {
nativeOnly: {
nativeBackgroundAndroid: true,
},
});
if (__DEV__) {
const viewConfig = (UIManager.viewConfigs && UIManager.viewConfigs.RCTView) || {};
for (const prop in viewConfig.nativeProps) {
const viewAny: any = View; // Appease flow
if (!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]) {
throw new Error('View is missing propType for native prop `' + prop + '`');
}
}
}
module.exports = View;
================================================
FILE: Libraries/Lights/AmbientLight.js
================================================
/**
* 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.
*
* @providesModule AmbientLight
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
/**
* A light that affects all objects in the scene equally and from all directions.
*
* The [Wikipedia](https://en.wikipedia.org/wiki/Shading#Ambient_lighting) definition is as follows:
* An ambient light source represents an omni-directional, fixed-intensity and
* fixed-color light source that affects all objects in the scene equally. Upon rendering,
* all objects in the scene are brightened with the specified intensity and color.
* This type of light source is mainly used to provide the scene with a basic view of the
* different objects in it. This is the simplest type of lighting to implement and models
* how light can be scattered or reflected many times producing a uniform effect.
*
* Representation of
*
* https://threejs.org/docs/index.html#api/lights/AmbientLight
*/
const AmbientLight = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* Intensity of the light
*/
intensity: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'AmbientLight',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
intensity: true,
},
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
return (
<RKAmbientLight
{...props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKAmbientLight>
);
},
});
const RKAmbientLight = requireNativeComponent('AmbientLight', AmbientLight, {
nativeOnly: {},
});
module.exports = AmbientLight;
================================================
FILE: Libraries/Lights/DirectionalLight.js
================================================
/**
* 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.
*
* @providesModule DirectionalLight
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
/**
* A light which is an infinite distance away and orientated along a particular direction.
*
* [Wikipedia](https://en.wikipedia.org/wiki/Shading#Directional_lighting) defines directional
* lighting as a light source which illuminates all objects equally from a given direction,
* like an area light of infinite size and infinite distance from the scene; there is shading,
* but cannot be any distance falloff.
*
* Representation of
*
* https://threejs.org/docs/index.html#api/lights/DirectionalLight
*/
const DirectionalLight = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* Intensity of the light
*/
intensity: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'DirectionalLight',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
intensity: true,
},
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
return (
<RKDirectionalLight
{...props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKDirectionalLight>
);
},
});
const RKDirectionalLight = requireNativeComponent('DirectionalLight', DirectionalLight, {
nativeOnly: {},
});
module.exports = DirectionalLight;
================================================
FILE: Libraries/Lights/PointLight.js
================================================
/**
* 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.
*
* @providesModule PointLight
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
/**
* Light originates from a single point, and spreads outward in all directions.
*
* Representation of
* https://threejs.org/docs/index.html#api/lights/PointLight
*/
const PointLight = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* In "physically correct" mode, the product of color * intensity is
* interpreted as luminous intensity measured in candela.
*/
intensity: PropTypes.number,
/**
* If non-zero, light attenuates linearly from maximum intensity at
* light position down to zero at distance.
*/
distance: PropTypes.number,
/**
* The amount the light dims along the distance of the light.
* In "physically correct" mode, decay = 2 leads to physically realistic light falloff.
*/
decay: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'PointLight',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
intensity: true,
distance: true,
decay: true,
},
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
return (
<RKPointLight
{...props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKPointLight>
);
},
});
const RKPointLight = requireNativeComponent('PointLight', PointLight, {
nativeOnly: {},
});
module.exports = PointLight;
================================================
FILE: Libraries/Lights/SpotLight.js
================================================
/**
* 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.
*
* @providesModule SpotLight
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
/**
* Light originates from a single point, and spreads outward in a cone.
*
* Representation of
* https://threejs.org/docs/index.html#api/lights/SpotLight
*/
const SpotLight = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* In "physically correct" mode, the product of color * intensity is
* interpreted as luminous intensity measured in candela.
*/
intensity: PropTypes.number,
/**
* If non-zero, light attenuates linearly from maximum intensity at
* light position down to zero at distance.
*/
distance: PropTypes.number,
/**
* The amount the light dims along the distance of the light.
* In "physically correct" mode, decay = 2 leads to physically realistic light falloff.
*/
decay: PropTypes.number,
/**
* Maximum angle of light dispersion from its direction whose upper bound is Math.PI/2.
*/
angle: PropTypes.number,
/**
* Percent of the spotlight cone that is attenuated due to penumbra. Takes
* values between zero and 100. Default is zero.
*/
penumbra: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'SpotLight',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
intensity: true,
distance: true,
decay: true,
angle: true,
penumbra: true,
},
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
return (
<RKSpotLight
{...props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKSpotLight>
);
},
});
const RKSpotLight = requireNativeComponent('SpotLight', SpotLight, {
nativeOnly: {},
});
module.exports = SpotLight;
================================================
FILE: Libraries/Mesh/Box.js
================================================
/**
* 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.
*
* @providesModule Box
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Box constructs a box-type 3D primitive in your scene.
*
* It can be sized through `dimWidth`, `dimHeight`, and `dimDepth` properties, which take
* numeric values measured in meters. If one of these dimensions is not specified,
* it defaults to 1.
*
* ```
* <Box
* dimWidth={2}
* dimDepth={2}
* dimHeight={1}
* />
* ```
*
* Like all 3D primitives, Box also supports the `lit`, `texture`, and `wireframe` props.
* If `lit` is true, the Box's materials are affected by scene lighting.
* If `wireframe` is true, the Box will render in a wireframe style.
* If `texture` is specified, React VR looks up the corresponding image
* and uses it to texture the Box. This can be a string, an asset() call, or a require().
*
* <Box
* lit={true}
* texture={asset('crate_512.png')}
* />
*/
const Box = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* The lit property specifies if the Model will be affected by lights placed in the scene.
*/
lit: PropTypes.bool,
/**
* The texture property specifies the url of the texture to be used for the Model.
* To make texture repeat, pass an object with `repeat` property, for example:
* `texture={{ ...asset('path/to/texture.jpg'), repeat: [4, 4] }}`
*
* First and second element in `repeat` sets how many times texture is repeated
* in x and y directions.
*/
texture: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string,
PropTypes.shape({
uri: PropTypes.string.isRequired,
repeat: PropTypes.arrayOf(PropTypes.number),
}),
]),
/**
* set material parameters in three.js
*/
materialParameters: PropTypes.object,
/**
* Specifying true for this property will cause the object to be displayed as a wireframe
*/
wireframe: PropTypes.bool,
/**
* width of the box in meters
*/
dimWidth: PropTypes.number,
/**
* height of the box in meters
*/
dimHeight: PropTypes.number,
/**
* depth of the box in meters
*/
dimDepth: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'Box',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
dimWidth: true,
dimHeight: true,
dimDepth: true,
},
},
getDefaultProps() {
return {
dimWidth: 1,
dimHeight: 1,
dimDepth: 1,
};
},
render() {
let {texture, ...rest} = this.props;
if (typeof texture === 'number') {
texture = resolveAssetSource(texture);
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
return <RKBox {...rest} texture={texture} />;
},
});
const RKBox = requireNativeComponent('Box', Box, {});
module.exports = Box;
================================================
FILE: Libraries/Mesh/Cylinder.js
================================================
/**
* 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.
*
* @providesModule Cylinder
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Cylinder constructs a cylinder-type 3D primitive in your scene.
*
* It can be sized through `dimHeight`, `radiusTop`, and `radiusBottom` properties, which take
* numeric values measured in meters. You can also specify the number of segments
* in the cylinder with the `segments` property.
*
* ```
* // Round cylinder
* <Cylinder
* radiusTop={0.5}
* radiusBottom={0.5}
* dimHeight={2}
* segments={12}
* />
*
* // Cone
* <Cylinder
* radiusTop={0}
* radiusBottom={1}
* dimHeight={2}
* segments={12}
* />
* ```
*
* Like all 3D primitives, Cylinder also supports the `lit`, `texture`, and `wireframe` props.
* If `lit` is true, the Cylinder's materials are affected by scene lighting.
* If `wireframe` is true, the Cylinder renders in a wireframe style.
* If `texture` is specified, React VR looks up the corresponding image
* and uses it to texture the Cylinder. This can be a string, an asset() call, or a require().
*
* <Cylinder
* lit={true}
* texture={asset('column.png')}
* />
*/
const Cylinder = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* The lit property specifies if the Model is affected by lights placed in the scene.
*/
lit: PropTypes.bool,
/**
* The texture property specifies the url of the texture to be used for the Model.
* To make texture repeat, pass an object with `repeat` property, for example:
* `texture={{ ...asset('path/to/texture.jpg'), repeat: [4, 4] }}`
*
* First and second element in `repeat` sets how many times texture is repeated
* in x and y directions.
*/
texture: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string,
PropTypes.shape({
uri: PropTypes.string.isRequired,
repeat: PropTypes.arrayOf(PropTypes.number),
}),
]),
/**
* Specifying true for this property causes the object to be displayed as a wireframe
*/
wireframe: PropTypes.bool,
/**
* Radius of the cylinder top in meters
*/
radiusTop: PropTypes.number,
/**
* Radius of the cylinder bottom in meters
*/
radiusBottom: PropTypes.number,
/**
* Height of the cylinder in meters
*/
dimHeight: PropTypes.number,
/**
* Number of segments around the cylinder,
* higher numbers correspond to a smoother cylinder
*/
segments: PropTypes.number,
/**
* Set material parameters in three.js
*/
materialParameters: PropTypes.object,
},
viewConfig: {
uiViewClassName: 'Cylinder',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
radiusTop: true,
radiusBottom: true,
dimHeight: true,
segments: true,
},
},
getDefaultProps() {
return {
radiusTop: 0.5,
radiusBottom: 0.5,
dimHeight: 1,
segments: 8,
};
},
render() {
let {texture, ...rest} = this.props;
if (typeof texture === 'number') {
texture = resolveAssetSource(texture);
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
return <RKCylinder {...rest} texture={texture} />;
},
});
const RKCylinder = requireNativeComponent('Cylinder', Cylinder, {});
module.exports = Cylinder;
================================================
FILE: Libraries/Mesh/Entity.js
================================================
/**
* 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.
*
* @providesModule Entity
* @flow
*/
import * as React from 'react';
import ReactNative from 'ReactNative';
import requireNativeComponent from 'requireNativeComponent';
import resolveAssetSource from 'resolveAssetSource';
import type {ViewProps} from 'ViewPropTypes';
type EntitySource =
| {
gltf2: string,
}
| {
obj: string | number,
}
| {
mtl: string | number,
obj: string | number,
};
type Props = ViewProps & {
source: EntitySource,
};
/**
* Entity allows you to render 3D objects.
*
* Entity currently supports the Wavefront OBJ file format, a common
* representation for 3D models. In the future, we hope to expand this with
* the ability to initialize custom loaders at runtime.
*
* The external resource (or resources) containing the model information is
* provided using a `source` attribute, which is an object of key-value pairs
* mapping resource types to their locations.
*
* The following properties are currently supported:
*
* * `obj` - Location of an OBJ-formatted model.
* * `mtl` - Location of a MTL-formatted material (the companion to OBJ)
*
* These values can be static strings, asset() calls, or require() statements.
*
* ```
* // Entity with a material
* <Entity
* source={{
* obj: asset('sculpture.obj'),
* mtl: asset('sculpture.mtl'),
* }}
* />
*
* // Entity without a material
* <Entity
* source={{
* obj: asset('standalone.obj'),
* }}
* />
* ```
*/
const RCTEntity = requireNativeComponent('Model', null, {
nativeOnly: {},
});
export default class Entity extends ReactNative.NativeComponent<Props> {
render() {
const {source, ...rest} = this.props;
if (source) {
if (typeof source.mtl === 'number') {
source.mtl = resolveAssetSource(source.mtl);
}
if (typeof source.obj === 'number') {
source.obj = resolveAssetSource(source.obj);
}
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
// default meshes to being a render group
if (!rest.style.renderGroup) {
rest.style.renderGroup = true;
}
return <RCTEntity {...rest} source={source} />;
}
}
================================================
FILE: Libraries/Mesh/Model.js
================================================
/**
* 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.
*
* @providesModule Model
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Model allows you to render 3D objects in React VR.
*
* React VR currently supports the Wavefront OBJ file format, a common
* representation for 3D models. In the future, we hope to expand this with
* the ability to initialize custom loaders at runtime.
*
* The external resource (or resources) containing the model information is
* provided using a `source` attribute, which is an object of key-value pairs
* mapping resource types to their locations.
*
* The following properties are currently supported:
*
* * `obj` - Location of an OBJ-formatted model.
* * `mtl` - Location of a MTL-formatted material (the companion to OBJ)
*
* These values can be static strings, asset() calls, or require() statements.
*
* ```
* // Model with a material
* <Model
* source={{
* obj: asset('sculpture.obj'),
* mtl: asset('sculpture.mtl'),
* }}
* />
*
* // Model without a material
* <Model
* source={{
* obj: asset('standalone.obj'),
* }}
* />
* ```
*
* Like the 3D primitives, Model also supports the `lit` and `texture` props.
* If `lit` is true, the Model's materials are affected by scene lighting. This
* overrides any settings from an MTL file.
* If `texture` is specified, React VR looks up the corresponding image
* and uses it to texture the Model. The texture is only used if an MTL file
* is not specified. This can be a string, an asset() call, or a require().
*
* <Model
* source={{
* obj: asset('barrel.obj'),
* }}
* lit={true}
* texture={asset('barrel.png')}
* />
*/
const Model = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* The lit property specifies if the Model will be affected by lights placed in the scene.
*/
lit: PropTypes.bool,
/**
* Set material parameters in three.js
*/
materialParameters: PropTypes.object,
/**
* `obj` is a string representing the resource identifier for the Model, this must be
* an http address.
* The source properties will enable future expansion to support additional formats
*/
source: PropTypes.object,
/**
* The texture property specifies the url of the texture to be used for the Model.
* To make texture repeat, pass an object with `repeat` property, for example:
* `texture={{ ...asset('path/to/texture.jpg'), repeat: [4, 4] }}`
*
* First and second element in `repeat` sets how many times texture is repeated
* in x and y directions.
*/
texture: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string,
PropTypes.shape({
uri: PropTypes.string.isRequired,
repeat: PropTypes.arrayOf(PropTypes.number),
}),
]),
/**
* Specifying true for this property will cause the object to be displayed as a wireframe
*/
wireframe: PropTypes.bool,
},
viewConfig: {
uiViewClassName: 'Model',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
},
},
getDefaultProps() {
return {};
},
render() {
let {texture, source, ...rest} = this.props;
if (source) {
// Temporary forwarding of props until deprecation is complete
if (source.hasOwnProperty('lit')) {
console.warn(
'"lit" is now a top-level property of Model, and no longer part of "source". ' +
'Please review the documentation for the latest API'
);
rest.lit = source.lit;
}
if (source.mesh) {
console.warn(
'source.mesh has been renamed to source.obj for OBJ files. ' +
'Please review the documentation for the latest API'
);
source.obj = source.mesh;
delete source.mesh;
}
// End prop forwarding
if (typeof source.mtl === 'number') {
source.mtl = resolveAssetSource(source.mtl);
}
if (typeof source.obj === 'number') {
source.obj = resolveAssetSource(source.obj);
}
}
if (typeof texture === 'number') {
texture = resolveAssetSource(texture);
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
// default meshes to being a render group
if (!rest.style.renderGroup) {
rest.style.renderGroup = true;
}
return (
<RKModel
{...rest}
texture={texture}
source={source}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}
/>
);
},
});
const RKModel = requireNativeComponent('Model', Model, {});
module.exports = Model;
================================================
FILE: Libraries/Mesh/Plane.js
================================================
/**
* 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.
*
* @providesModule Plane
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Plane constructs a plane-type 3D primitive in your scene.
*
* It can be sized through `dimWidth` and `dimHeight` properties, which take numeric
* values measured in meters. If not specified, these props default to 1.
*
* ```
* <Plane
* dimWidth={10}
* dimHeight={10}
* />
* ```
*
* Like all 3D primitives, Plane also supports the `lit`, `texture`, and `wireframe` props.
* If `lit` is true, the Plane's materials are affected by scene lighting.
* If `wireframe` is true, the Plane renders in a wireframe style.
* If `texture` is specified, React VR looks up the corresponding image
* and uses it to texture the Plane. This can be a string, an asset() call, or a require().
*
* <Plane
* lit={true}
* texture={asset('floor.png')}
* />
*/
const Plane = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* The lit property specifies if the Model is affected by lights placed in the scene.
*/
lit: PropTypes.bool,
/**
* Set material parameters in three.js
*/
materialParameters: PropTypes.object,
/**
* The texture property specifies the url of the texture to be used for the Model.
* To make texture repeat, pass an object with `repeat` property, for example:
* `texture={{ ...asset('path/to/texture.jpg'), repeat: [4, 4] }}`
*
* First and second element in `repeat` sets how many times texture is repeated
* in x and y directions.
*/
texture: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string,
PropTypes.shape({
uri: PropTypes.string.isRequired,
repeat: PropTypes.arrayOf(PropTypes.number),
}),
]),
/**
* Specifying true for this property causes the object to be displayed as a wireframe
*/
wireframe: PropTypes.bool,
/**
* Width of the box in meters
*/
dimWidth: PropTypes.number,
/**
* Height of the box in meters
*/
dimHeight: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'Plane',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
dimWidth: true,
dimHeight: true,
},
},
getDefaultProps() {
return {
dimWidth: 1,
dimHeight: 1,
};
},
render() {
let {texture, ...rest} = this.props;
if (typeof texture === 'number') {
texture = resolveAssetSource(texture);
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
return <RKPlane {...rest} texture={texture} />;
},
});
const RKPlane = requireNativeComponent('Plane', Plane, {});
module.exports = Plane;
================================================
FILE: Libraries/Mesh/Sphere.js
================================================
/**
* 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.
*
* @providesModule Sphere
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformColorPropTypes = require('LayoutAndTransformColorPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Sphere constructs a sphere-type 3D primitive in your scene.
*
* It can be sized through a `radius` property, which takes numeric values
* measured in meters. You can also specify the number of width and height
* segments with the `widthSegments` and `heightSegments` props.
*
* ```
* <Sphere
* radius={0.5}
* widthSegments={20}
* heightSegments={12}
* />
* ```
*
* Like all 3D primitives, Sphere also supports the `lit`, `texture`, and `wireframe` props.
* If `lit` is true, the Sphere's materials are affected by scene lighting.
* If `wireframe` is true, the Sphere renders in a wireframe style.
* If `texture` is specified, React VR looks up the corresponding image
* and uses it to texture the Sphere. This can be a string, an asset() call, or a require().
*
* <Sphere
* lit={true}
* texture={asset('orb.png')}
* />
*/
const Sphere = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformColorPropTypes),
/**
* The lit property specifies if the Model is affected by lights placed in the scene.
*/
lit: PropTypes.bool,
/**
* Set material parameters in three.js
*/
materialParameters: PropTypes.object,
/**
* The texture property specifies the url of the texture to be used for the Model.
* To make texture repeat, pass an object with `repeat` property, for example:
* `texture={{ ...asset('path/to/texture.jpg'), repeat: [4, 4] }}`
*
* First and second element in `repeat` sets how many times texture is repeated
* in x and y directions.
*/
texture: PropTypes.oneOfType([
PropTypes.number,
PropTypes.string,
PropTypes.shape({
uri: PropTypes.string.isRequired,
repeat: PropTypes.arrayOf(PropTypes.number),
}),
]),
/**
* Specifying true for this property causes the object to be displayed as a wireframe
*/
wireframe: PropTypes.bool,
/**
* The radius in meters of the sphere
*/
radius: PropTypes.number,
/**
* The number of segments around the sphere. Large corresponds to a smoother sphere but
* is slower to render
*/
widthSegments: PropTypes.number,
/**
* The number of segments between the poles of the sphere. Large corresponds to a smoother
* sphere but is slower to render
*/
heightSegments: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'Sphere',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
radius: true,
widthSegments: true,
heightSegments: true,
},
},
getDefaultProps() {
return {
radius: 0.5,
widthSegments: 8,
heightSegments: 6,
};
},
render() {
let {texture, ...rest} = this.props;
if (typeof texture === 'number') {
texture = resolveAssetSource(texture);
}
rest.style = rest.style || {};
if (!rest.style.position) {
rest.style.position = 'absolute';
}
return <RKSphere {...rest} texture={texture} />;
},
});
const RKSphere = requireNativeComponent('Sphere', Sphere, {});
module.exports = Sphere;
================================================
FILE: Libraries/Pano/Pano.js
================================================
/**
* 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.
*
* @providesModule Pano
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformTintPropTypes = require('LayoutAndTransformTintPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* A Sphere of 1000m with center located at the local transform origin.
* By default this is `position:'absolute'`.
*
* Panos are images projected onto a sphere that fully surrounds the viewer.
* These are a core image format for VR applications.
* You can create 360 photos by using special 360 camera hardware. These will be
* usually in the form of Equirectangular images covering full 360° horizontal and 180°
* vertical angles. Here is an example:
* 
*
* Cubemap images are also supported by specifying the source url as an
* array of 6 individual images, presented in the order `[+x, -x, +y, -y, +z, -z]`
*/
const Pano = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformTintPropTypes),
/**
* source image in the form of
* `{uri: 'http'}` for a panorama
* or
* `[{uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'},
* {uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'}]` for a cubemap
* or
* `[{uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'},
* {uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'},
* {uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'},
* {uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'}]` for a stereo
* cubemap where the first 6 images are the left eye cubemap and the
* following 6 are the right eye cubemap.
*
* stereo(optional): the stereo format of a panorama: '2D' | 'TOP_BOTTOM_3D' |
* 'BOTTOM_TOP_3D' | 'LEFT_RIGHT_3D' | 'RIGHT_LEFT_3D'
*
* If stereo is not a supported stereo format, it'll by default use '2D'
*/
source: PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
stereo: PropTypes.string,
}),
PropTypes.arrayOf(
PropTypes.shape({
uri: PropTypes.string,
})
),
PropTypes.shape({
tile: PropTypes.string,
maxDepth: PropTypes.number,
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
]),
/**
* Option onLoad callback called on success
**/
onLoad: PropTypes.func,
/**
* Option onLoadEnd callback called on success or failure
**/
onLoadEnd: PropTypes.func,
},
viewConfig: {
uiViewClassName: 'Pano',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
},
},
_onLoad: function() {
this.props.onLoad && this.props.onLoad();
},
_onLoadEnd: function() {
this.props.onLoadEnd && this.props.onLoadEnd();
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (!props.style.position) {
props.style.position = 'absolute';
}
// default panos to being a render group
if (!props.style.renderGroup) {
props.style.renderGroup = true;
}
const source = resolveAssetSource(this.props.source);
if (!source) {
// If source is not defined, set uri to undefined and RCTPano will
// handle the undefined uri
props.source = {uri: undefined};
} else {
props.source = source;
}
return (
<RKPano
{...props}
onLoad={this._onLoad}
onLoadEnd={this._onLoadEnd}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
{this.props.children}
</RKPano>
);
},
});
const RKPano = requireNativeComponent('Pano', Pano, {
nativeOnly: {},
});
module.exports = Pano;
================================================
FILE: Libraries/Pano/Prefetch.js
================================================
/**
* 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.
*
* @providesModule Prefetch
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const View = require('View');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Prefetch is a component that declaratively hints the need to download and cache
* pano images
*/
const Prefetch = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
/**
* source image in the form of
* `{uri: 'http'}` for a panorama
* or
* `[{uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'},
* {uri: 'http..'}, {uri: 'http..'}, {uri: 'http..'}]` for a cubemap
*/
source: PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
}),
PropTypes.arrayOf(
PropTypes.shape({
uri: PropTypes.string,
})
),
PropTypes.shape({
tile: PropTypes.string,
maxDepth: PropTypes.number,
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
]),
},
getDefaultProps: function() {
return {};
},
render: function() {
const props = {...this.props} || {};
const source = resolveAssetSource(this.props.source);
if (!source) {
// If source is not defined, set uri to undefined and RCTPano will
// handle the undefined uri
props.source = {uri: undefined};
} else {
props.source = source;
}
return (
<RKPrefetch {...props}>
{this.props.children}
</RKPrefetch>
);
},
});
const RKPrefetch = requireNativeComponent('Prefetch', Prefetch, {});
module.exports = Prefetch;
================================================
FILE: Libraries/Scene/Scene.js
================================================
/**
* 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.
*
* @providesModule Scene
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformPropTypes = require('LayoutAndTransformPropTypes');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
/**
* The Scene transform represents the camera location in the world.
*
* There should only be a single Scene node within a React VR view tree.
* The transform of a Scene node, rather than affecting any children, is
* instead the transform of the camera in the scene.
*/
const Scene = createReactClass({
mixins: [NativeMethodsMixin],
viewConfig: {
uiViewClassName: 'Scene',
validAttributes: ReactNativeViewAttributes.RCTView,
},
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformPropTypes),
/**
*/
},
getDefaultProps: function() {
return {};
},
render: function() {
// TODO: prevent propagation of changes to 'transform' property up the view hierarchy
// the viewer transform change is handled via the runtime
return (
<RKScene
{...this.props}
testID={this.props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
<View>
{this.props.children}
</View>
</RKScene>
);
},
});
const RKScene = requireNativeComponent('Scene', Scene, {
nativeOnly: {},
});
module.exports = Scene;
================================================
FILE: Libraries/Sound/Sound.js
================================================
/**
* 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.
*
* @providesModule Sound
*/
'use strict';
const LayoutAndTransformPropTypes = require('LayoutAndTransformPropTypes');
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const UIManager = require('UIManager');
const ReactNative = require('ReactNative');
const StyleSheetPropType = require('StyleSheetPropType');
const View = require('View');
const createReactClass = require('create-react-class');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* Sound represents an audio source located within the scene. It supports
* 3D positional audio, changing the stereo balance of the sound as the
* listener moves around the scene or turns their head in VR.
*
* Example usage:
* ```
* <Image style={{height: 2.0, width: 2.0}} source={uri: 'images/waterfall.jpg'}>
* <Sound source={uri: 'sounds/waterfall.wav'} />
* </Image>
* ```
*
* The `source` attribute represents the external resource to load.
* It should be an `asset()`` statement, or a resource declaration in the form
* `{uri: 'PATH'}`. Since different browsers support different audio formats,
* you can also supply a map of formats to their corresponding resource objects,
* and React VR can select the sound file supported by the browser:
* ```
* <Sound
* source={{
* ogg: asset('ambient.ogg'),
* mp3: asset('ambient.mp3'),
* }}
* />
* ```
* You can read more about supported audio formats in the docs for the
* [Sound Effects](docs/vrsoundeffects.html) API.
*
* Things to keep in mind when using this component:
*
* * Must be a leaf node with no child components
* * Defaults to `style: {position: absolute}`
*/
const Sound = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
style: StyleSheetPropType(LayoutAndTransformPropTypes),
/**
* Source audio in the form of `{uri: 'http'}`
*/
source: PropTypes.object,
/**
* Whether audio starts playing automatically when component is loaded.
* Default is `true`
*/
autoPlay: PropTypes.bool,
/**
* Whether audio repeats automatically when finished playing.
* Default is `false`
*/
loop: PropTypes.bool,
/**
* Whether the audio is muted.
* Default is `false`.
*/
muted: PropTypes.bool,
/**
* Option callback evoked when audio is done playing.
**/
onEnded: PropTypes.func,
/**
* Option callback evoked when video duration changed.
* event.nativeEvent.duration - the duration of video
**/
onDurationChange: PropTypes.func,
/**
* Option callback evoked when video currentTime of video changed.
* event.nativeEvent.currentTime - the currentTime of video
**/
onTimeUpdate: PropTypes.func,
/**
* Option callback evoked when video play status changed.
* event.nativeEvent.playStatus - the play status of video:
* play status is one of 'closed' | 'loading' | 'error' | 'ended' | 'paused' | 'playing' | 'ready'
**/
onPlayStatusChange: PropTypes.func,
/**
* Controls the playback status. If not set, the value of `autoPlay` determines
* whether the audio plays when the component is loaded.
* This prop is scheduled to be deprecated. Use `playControl` instead.
*/
playStatus: PropTypes.oneOf(['play', 'pause', 'stop']),
/**
* Controls the playback status. If not set, the value of `autoPlay` determines
* whether the audio plays when the component is loaded.
*/
playControl: PropTypes.oneOf(['play', 'pause', 'stop']),
/**
* playerState - playerState is a `MediaPlayerState` that controls video
* playback with its inner state. When playerState is set, the value of
* `autoPlay`, `muted` `volume` and `playControl` properties are ignored
* as they will be set by playerState instead.
* See [MediaPlayerState](docs/mediaplayerstate.html)
*/
playerState: PropTypes.object,
/**
* Value of the audio volume. The minimum value 0 mutes the sound.
* The suggested maximum is 1.0, which is also the default value.
* Values greater than 1.0 are allowed, but may cause clipping or
* distortion depending on the audio hardware.
*
* For example: Lower the volume by 50%
*
* `volume={0.5}`
*/
volume: PropTypes.number,
},
viewConfig: {
uiViewClassName: 'Sound',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
volume: true,
},
},
getDefaultProps: function() {
return {
autoPlay: true,
volume: 1.0,
loop: false,
playControl: null,
source: null,
};
},
getInitialState: function() {
return {
volume: 1.0,
muted: false,
};
},
componentWillMount() {
if (__DEV__) {
if (this.props.playStatus) {
console.warn(
'playStatus has been renamed to playControl. Please update your code before v2.0.0'
);
}
}
if (this.props.playerState) {
this._subscribe(this.props.playerState);
}
},
componentWillReceiveProps(nextProps) {
if (__DEV__) {
if (nextProps.playStatus) {
console.warn(
'playStatus has been renamed to playControl. Please update your code before v2.0.0'
);
}
}
if (this.props.playerState !== nextProps.playerState) {
if (this.props.playerState) {
this._unsubscribe(this.props.playerState);
}
if (nextProps.playerState) {
this._subscribe(nextProps.playerState);
}
}
},
componentWillUnmount() {
if (this.props.playerState) {
this._unsubscribe(this.props.playerState);
}
},
_subscribe(playerState) {
playerState.addListener('play', this._play);
playerState.addListener('pause', this._pause);
playerState.addListener('seekTo', this._seekTo);
playerState.addListener('volumeChange', this._volumeChange);
playerState.addListener('mutedChange', this._mutedChange);
this.setState({
volume: playerState.volume,
muted: playerState.muted,
});
},
_unsubscribe(playerState) {
playerState.removeListener('play', this._play);
playerState.removeListener('pause', this._pause);
playerState.removeListener('seekTo', this._seekTo);
playerState.removeListener('volumeChange', this._volumeChange);
playerState.removeListener('mutedChange', this._mutedChange);
},
_play() {
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(this),
UIManager.Sound.Commands.play,
[]
);
},
_pause() {
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(this),
UIManager.Sound.Commands.pause,
[]
);
},
_seekTo(timeSec) {
UIManager.dispatchViewManagerCommand(
ReactNative.findNodeHandle(this),
UIManager.Sound.Commands.seekTo,
[timeSec]
);
},
_volumeChange(volume) {
this.setState({volume: volume});
},
_mutedChange(muted) {
this.setState({muted: muted});
},
_onEnded: function() {
this.props.onEnded && this.props.onEnded();
},
_onDurationChange: function(event) {
if (this.props.playerState) {
this.props.playerState.onDurationChange(event);
}
this.props.onDurationChange && this.props.onDurationChange(event);
},
_onTimeUpdate: function(event) {
if (this.props.playerState) {
this.props.playerState.onTimeUpdate(event);
}
this.props.onTimeUpdate && this.props.onTimeUpdate(event);
},
_onPlayStatusChange: function(event) {
if (this.props.playerState) {
this.props.playerState.onPlayStatusChange(event);
}
this.props.onPlayStatusChange && this.props.onPlayStatusChange(event);
},
render: function() {
const props = {...this.props} || {};
props.style = props.style || {};
if (__DEV__) {
if (props.children) {
console.warn('<Sound> must be a leaf node, props.children will not be rendered');
}
}
if (props.playStatus && !props.playControl) {
props.playControl = props.playStatus;
delete props['playStatus'];
}
if (this.props.playerState) {
props.autoPlay = false;
props.volume = this.state.volume;
props.muted = this.state.muted;
}
// events
props.onDurationChange = this._onDurationChange;
props.onTimeUpdate = this._onTimeUpdate;
props.onPlayStatusChange = this._onPlayStatusChange;
const source = resolveAssetSource(props.source);
if (source) {
// Default to 'absolute' position, and pass handle to native side.
return (
<RKSound
style={[{position: 'absolute'}, props.style]}
{...props}
onEnded={this._onEnded}
testID={props.testID}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}
/>
);
}
// If no source property, render `null`
return null;
},
});
const RKSound = requireNativeComponent('Sound', Sound, {
nativeOnly: {},
});
module.exports = Sound;
================================================
FILE: Libraries/StyleSheet/LayoutAndTransformColorPropTypes.js
================================================
/**
* 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.
*
* @providesModule LayoutAndTransformColorPropTypes
* @flow
*/
'use strict';
const ColorPropType = require('ColorPropType');
const LayoutPropTypes = require('LayoutPropTypes');
const PropTypes = require('prop-types');
const TransformPropTypes = require('TransformPropTypes');
/**
* Warning: Some of these properties may not be supported in all releases.
*/
const LayoutAndTransformColorPropTypes = {
...LayoutPropTypes,
...TransformPropTypes,
color: ColorPropType,
opacity: PropTypes.number,
};
module.exports = LayoutAndTransformColorPropTypes;
================================================
FILE: Libraries/StyleSheet/LayoutAndTransformOpacityPropTypes.js
================================================
/**
* 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.
*
* @providesModule LayoutAndTransformOpacityPropTypes
* @flow
*/
'use strict';
const LayoutPropTypes = require('LayoutPropTypes');
const PropTypes = require('prop-types');
const TransformPropTypes = require('TransformPropTypes');
/**
* Warning: Some of these properties may not be supported in all releases.
*/
const LayoutAndTransformOpacityPropTypes = {
...LayoutPropTypes,
...TransformPropTypes,
opacity: PropTypes.number,
};
module.exports = LayoutAndTransformOpacityPropTypes;
================================================
FILE: Libraries/StyleSheet/LayoutAndTransformPropTypes.js
================================================
/**
* 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.
*
* @providesModule LayoutAndTransformPropTypes
* @flow
*/
'use strict';
const LayoutPropTypes = require('LayoutPropTypes');
const TransformPropTypes = require('TransformPropTypes');
/**
* Warning: Some of these properties may not be supported in all releases.
*/
const LayoutAndTransformPropTypes = {
...LayoutPropTypes,
...TransformPropTypes,
};
module.exports = LayoutAndTransformPropTypes;
================================================
FILE: Libraries/StyleSheet/LayoutAndTransformTintPropTypes.js
================================================
/**
* 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.
*
* @providesModule LayoutAndTransformTintPropTypes
* @flow
*/
'use strict';
const ColorPropType = require('ColorPropType');
const LayoutPropTypes = require('LayoutPropTypes');
const TransformPropTypes = require('TransformPropTypes');
const PropTypes = require('prop-types');
/**
* Warning: Some of these properties may not be supported in all releases.
*/
const LayoutAndTransformTintPropTypes = {
...LayoutPropTypes,
...TransformPropTypes,
/**
* Changes the color of all the non-transparent pixels to the tintColor.
*/
tintColor: ColorPropType,
opacity: PropTypes.number,
};
module.exports = LayoutAndTransformTintPropTypes;
================================================
FILE: Libraries/StyleSheet/LayoutPropTypes.vr.js
================================================
/**
* 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.
*
* @providesModule LayoutPropTypes
* @flow
*/
'use strict';
const ReactPropTypes = require('prop-types');
// We add a few overrides to the original React Native implementation
// Import the original, and add the extra values before re-exporting it
const OriginalLayoutPropTypes = require('react-native/Libraries/StyleSheet/LayoutPropTypes');
const LayoutPropTypes = {
...OriginalLayoutPropTypes,
/** `width` sets the width of this component.
*
* It works similarly to `width` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/width for more details.
*/
width: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `height` sets the height of this component.
*
* It works similarly to `height` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/height for more details.
*/
height: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `top` is the number of logical pixels to offset the top edge of
* this component.
*
* It works similarly to `top` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/top
* for more details of how `top` affects layout.
*/
top: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `left` is the number of logical pixels to offset the left edge of
* this component.
*
* It works similarly to `left` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/left
* for more details of how `left` affects layout.
*/
left: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `right` is the number of logical pixels to offset the right edge of
* this component.
*
* It works similarly to `right` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/right
* for more details of how `right` affects layout.
*/
right: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `bottom` is the number of logical pixels to offset the bottom edge of
* this component.
*
* It works similarly to `bottom` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/bottom
* for more details of how `bottom` affects layout.
*/
bottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `minWidth` is the minimum width for this component, in logical pixels.
*
* It works similarly to `min-width` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/min-width
* for more details.
*/
minWidth: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `maxWidth` is the maximum width for this component, in logical pixels.
*
* It works similarly to `max-width` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/max-width
* for more details.
*/
maxWidth: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `minHeight` is the minimum height for this component, in logical pixels.
*
* It works similarly to `min-height` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/min-height
* for more details.
*/
minHeight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `maxHeight` is the maximum height for this component, in logical pixels.
*
* It works similarly to `max-height` in CSS, but in React Native you
* must use points or percentages. Ems and other units are not supported.
*
* See https://developer.mozilla.org/en-US/docs/Web/CSS/max-height
* for more details.
*/
maxHeight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `margin` has the same effect as setting each of
* `marginTop`, `marginLeft`, `marginBottom`, and `marginRight`.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/margin
* for more details.
*/
margin: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `marginVertical` has the same effect as setting both
* `marginTop` and `marginBottom`.
*/
marginVertical: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `marginHorizontal` has the same effect as setting
* both `marginLeft` and `marginRight`.
*/
marginHorizontal: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `marginTop` works like `margin-top` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top
* for more details.
*/
marginTop: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `marginBottom` works like `margin-bottom` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom
* for more details.
*/
marginBottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `marginLeft` works like `margin-left` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left
* for more details.
*/
marginLeft: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `marginRight` works like `margin-right` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right
* for more details.
*/
marginRight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `padding` has the same effect as setting each of
* `paddingTop`, `paddingBottom`, `paddingLeft`, and `paddingRight`.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding
* for more details.
*/
padding: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `paddingVertical` is like setting both of
* `paddingTop` and `paddingBottom`.
*/
paddingVertical: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** Setting `paddingHorizontal` is like setting both of
* `paddingLeft` and `paddingRight`.
*/
paddingHorizontal: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `paddingTop` works like `padding-top` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top
* for more details.
*/
paddingTop: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `paddingBottom` works like `padding-bottom` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom
* for more details.
*/
paddingBottom: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `paddingLeft` works like `padding-left` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left
* for more details.
*/
paddingLeft: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/** `paddingRight` works like `padding-right` in CSS.
* See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right
* for more details.
*/
paddingRight: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
flexBasis: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),
/**
* `display` display defines if the component will play a part in the layout and draw passes
* this is not supported by RN so extending for React VR
*/
display: ReactPropTypes.oneOf(['flex', 'none']),
/**
* `layoutOrigin` defines how the final top and left locations are determined prior to rendering
* The equivalent is computing the world location by
* `style.left` = -layoutOrigin[0] * style.width
* `style.top` = -layoutOrigin[1] * style.height
* The advantage is that this is calculated after width and height are computed by flex box meaning that
* it can be used without prior knowledge of the final layout
* the default is [0,0]
*/
layoutOrigin: ReactPropTypes.arrayOf(ReactPropTypes.number),
/**
* `animation` defines a native per view version of the `LayoutAnimation`
* This is currently only availble on the native version of react VR
*/
animation: ReactPropTypes.object,
/**
* `renderGroup` defines a component which is used for depth sorting the
* components under it. This is generally used on any component which is position
* `absolute` and transformed.
*/
renderGroup: ReactPropTypes.bool,
};
module.exports = LayoutPropTypes;
================================================
FILE: Libraries/StyleSheet/ViewStylePropTypes.vr.js
================================================
/**
* 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.
*
* @providesModule ViewStylePropTypes
* @flow
*/
'use strict';
const ColorPropType = require('ColorPropType');
const PropTypes = require('prop-types');
const OriginalViewStylePropTypes = require('react-native/Libraries/Components/View/ViewStylePropTypes');
const ViewStylePropTypes = {
...OriginalViewStylePropTypes,
gradientColorA: ColorPropType,
gradientColorB: ColorPropType,
gradientAngle: PropTypes.string,
};
module.exports = ViewStylePropTypes;
================================================
FILE: Libraries/Utilities/MatrixMath.vr.js
================================================
/**
* 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.
*
* @providesModule MatrixMath
*/
'use strict';
const MatrixMath = require('react-native/Libraries/Utilities/MatrixMath');
/**
* Returns the rotation around the X, Y & Z axes
*/
MatrixMath.rotationMatrixToDegreesXYZ = function(matrix: Array<number>): Array<number> {
// prettier-ignore
const [
m00, m01, m02, m03,
m10, m11, m12, m13,
m20, m21, m22, m23,
m30, m31, m32, m33,
] = matrix;
// Check if the matrix is singular
const sy = Math.sqrt(m00 * m00 + m10 * m10);
if (sy > 0.0001) {
return [Math.atan2(m21, m22), Math.atan2(-m20, sy), Math.atan2(m10, m00)];
} else {
return [Math.atan2(-m12, m11), Math.atan2(-m20, 0), 0];
}
};
MatrixMath.createRotateX = function(radians) {
const mat = MatrixMath.createIdentityMatrix();
MatrixMath.reuseRotateXCommand(mat, radians);
return mat;
};
MatrixMath.createRotateY = function(radians) {
const mat = MatrixMath.createIdentityMatrix();
MatrixMath.reuseRotateYCommand(mat, radians);
return mat;
};
MatrixMath.createRotateZ = function(radians) {
const mat = MatrixMath.createIdentityMatrix();
MatrixMath.reuseRotateZCommand(mat, radians);
return mat;
};
module.exports = MatrixMath;
================================================
FILE: Libraries/Utilities/Platform.vr.js
================================================
/**
* 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.
*
* @providesModule Platform
* @flow
*/
'use strict';
const Platform = {
OS: 'vr',
select: (obj: Object) => ('vr' in obj ? obj.vr : obj.default),
};
module.exports = Platform;
================================================
FILE: Libraries/Utilities/ThreeJSConstants.js
================================================
/**
* 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.
*
* @providesModule ThreeJSConstants
* @flow
*/
import * as THREE from 'three/src/constants.js';
export default THREE;
================================================
FILE: Libraries/Utilities/VrHeadModel.js
================================================
/**
* 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.
*
* @providesModule VrHeadModel
*/
'use strict';
const MatrixMath = require('MatrixMath');
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
const VrMath = require('VrMath');
/**
* VrHeadModel is a utility module that simplifies obtaining the current orientation of the headset.
*
* Orientation data contains some latency and is not fully in sync with the display due to how React VR code runs asynchronously from the main render thread.
*/
class VrHeadModelImpl {
constructor() {
this.headMatrix = MatrixMath.createIdentityMatrix();
this.viewMatrix = MatrixMath.createIdentityMatrix();
this._inVR = false;
this.fov = 0;
this.aspect = 1;
this._headMatrixListener = RCTDeviceEventEmitter.addListener(
'onReceivedHeadMatrix',
this._onReceivedHeadMatrix.bind(this)
);
RCTDeviceEventEmitter.addListener('onEnterVR', () => {
this._inVR = true;
});
RCTDeviceEventEmitter.addListener('onExitVR', () => {
this._inVR = false;
});
}
_onReceivedHeadMatrix(headMatrix, viewMatrix, fov, aspect) {
this.headMatrix = headMatrix;
this.viewMatrix = viewMatrix;
this.fov = fov;
this.aspect = aspect;
}
/**
* Returns the position of the head as [X,Y,Z].
*
* If headMatrix is not specified, we use the current orientation of the headset.
*/
positionOfHeadMatrix(headMatrix) {
console.warn('positionOfHeadMatrix is deprecated. Please use position instead');
const matrix = headMatrix || this.headMatrix;
return VrMath.getTranslation(matrix);
}
/**
* Returns the rotation as Euler angles in radians.
*
* If headMatrix is not specified, we use the current orientation of the headset.
* If eulerOrder is not specified, we use `YXZ` order, that is Yaw, Pitch, and Roll.
*/
rotationOfHeadMatrix(headMatrix, eulerOrder) {
console.warn(
'rotationOfHeadMatrix is deprecated. Please use rotation, rotationInRadians, ' +
'yawPitchRoll or yawPitchRollInRadians instead'
);
const matrix = headMatrix || this.headMatrix;
return VrMath.getRotation(matrix, eulerOrder);
}
/**
* Return the position of the head as [X,Y,Z].
*/
position() {
return VrMath.getTranslation(this.headMatrix);
}
/**
* Returns the rotation as Euler angles in degrees.
*
* Returns an array in the form:
* [rotation about X axis, rotation about Y axis, rotation about Z axis]
*/
rotation() {
return this.rotationInRadians().map(VrMath.radToDeg);
}
/**
* Returns the rotation as Euler angles in degrees.
*
* Returns an array in the form:
* [rotation about X axis, rotation about Y axis, rotation about Z axis]
*/
rotationInRadians() {
return VrMath.getRotation(this.headMatrix);
}
/**
* Return the rotation in yaw, pitch, roll order in degrees.
*
* For those new to 3D graphics and who are not former pilots:
* Yaw = looking up and down
* Pitch = looking to the left and right
* Roll = tilting your head from side to side
*
* Returns an array of rotations in the form:
* [Y axis, X axis, Z axis]
*/
yawPitchRoll() {
return this.yawPitchRollInRadians().map(VrMath.radToDeg);
}
/**
* Returns the rotation in yaw, pitch, roll order in radians.
*
* For those new to 3D graphics and who are not former pilots:
* Yaw = looking up and down
* Pitch = looking to the left and right
* Roll = tilting your head from side to side
*
* Returns an array of rotations in the form:
* [Y axis, X axis, Z axis]
*/
yawPitchRollInRadians() {
const rotation = this.rotationInRadians();
return [rotation[1], rotation[0], rotation[2]];
}
/**
* Returns the horizontal field of view of the camera in degrees.
*/
horizontalFov() {
return this.fov;
}
/**
* Returns the vertical field of view of the camera in degrees.
*/
verticalFov() {
return this.fov / this.aspect;
}
/**
* Returns the horizontal field of view of the camera in radians.
*/
horizontalFovInRadians() {
return VrMath.degToRad(this.horizontalFov());
}
/**
* Returns the vertical field of view of the camera in radians.
*/
verticalFovInRadians() {
return VrMath.degToRad(this.verticalFov());
}
/**
* Returns the Head matrix as an array of numbers.
*/
getHeadMatrix() {
return [...this.headMatrix];
}
/**
* Returns true if the headset is in use.
*/
getVRStatus() {
console.warn('getVRStatus is deprecated. Please use inVR instead');
return this._inVR;
}
/**
* Returns true if the headset is in use, false if viewed outside of VR
*/
inVR() {
return this._inVR;
}
}
module.exports = new VrHeadModelImpl();
================================================
FILE: Libraries/Utilities/VrMath.js
================================================
/**
* 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.
*
* @providesModule VrMath
*/
'use strict';
const clamp = require('clamp');
const MatrixMath = require('MatrixMath');
const RAD_TO_DEG = 180 / Math.PI;
const DEG_TO_RAD = Math.PI / 180;
/**
* Math utilities for React VR
*/
const VrMath = {
/**
* Get scale from a 4x4 matrix, assumes upper 3x3 of matrix
* only contains scale and rotation
* @param {array} m - The array[16] for 4x4 matrix
* @return {array} the translation, in x, y, z order.
* Based on: https://github.com/mrdoob/three.js/blob/master/src/math/Matrix4.js
*/
getScale: function(m) {
const sx = MatrixMath.v3Length([m[0], m[1], m[2]]);
const sy = MatrixMath.v3Length([m[4], m[5], m[6]]);
const sz = MatrixMath.v3Length([m[8], m[9], m[10]]);
// Check for a coordinate system flip. if determine is negative,
// we need to invert one scale.
const det = MatrixMath.determinant(m);
return det < 0 ? [-sx, sy, sz] : [sx, sy, sz];
},
/**
* Get translation from a 4x4 matrix
* @param {array} m - The array[16] for 4x4 matrix
* @return {array} the translation, in x, y, z order.
*/
getTranslation: function(m) {
return [m[12], m[13], m[14]];
},
/**
* Get rotation from a 4x4 matrix
* @param {array} m - The array[16] for 4x4 matrix, assumes upper 3x3 of matrix
* only contains scale and rotation
* @param {string} eulerOrder - The order of euler angle rotation sequence.
* @return {array} the rotation euler angle, in x, y, z order.
* Based on: https://github.com/mrdoob/three.js/blob/master/src/math/Euler.js
*/
getRotation: function(m, eulerOrder) {
const scale = this.getScale(m);
const invSX = 1 / scale[0];
const invSY = 1 / scale[1];
const invSZ = 1 / scale[2];
const m11 = m[0] * invSX;
const m12 = m[4] * invSY;
const m13 = m[8] * invSZ;
const m21 = m[1] * invSX;
const m22 = m[5] * invSY;
const m23 = m[9] * invSZ;
const m31 = m[2] * invSX;
const m32 = m[6] * invSY;
const m33 = m[10] * invSZ;
const order = eulerOrder || 'YXZ';
const rotation = [0, 0, 0];
if (order === 'XYZ') {
rotation[1] = Math.asin(clamp(m13, -1, 1));
if (Math.abs(m13) < 0.99999) {
rotation[0] = Math.atan2(-m23, m33);
rotation[2] = Math.atan2(-m12, m11);
} else {
rotation[0] = Math.atan2(m32, m22);
rotation[2] = 0;
}
} else if (order === 'YXZ') {
rotation[0] = Math.asin(-clamp(m23, -1, 1));
if (Math.abs(m23) < 0.99999) {
rotation[1] = Math.atan2(m13, m33);
rotation[2] = Math.atan2(m21, m22);
} else {
rotation[1] = Math.atan2(-m31, m11);
rotation[2] = 0;
}
} else if (order === 'ZXY') {
rotation[0] = Math.asin(clamp(m32, -1, 1));
if (Math.abs(m32) < 0.99999) {
rotation[1] = Math.atan2(-m31, m33);
rotation[2] = Math.atan2(-m12, m22);
} else {
rotation[1] = 0;
rotation[2] = Math.atan2(m21, m11);
}
} else if (order === 'ZYX') {
rotation[1] = Math.asin(-clamp(m31, -1, 1));
if (Math.abs(m31) < 0.99999) {
rotation[0] = Math.atan2(m32, m33);
rotation[2] = Math.atan2(m21, m11);
} else {
rotation[0] = 0;
rotation[2] = Math.atan2(-m12, m22);
}
} else if (order === 'YZX') {
rotation[2] = Math.asin(clamp(m21, -1, 1));
if (Math.abs(m21) < 0.99999) {
rotation[0] = Math.atan2(-m23, m22);
rotation[1] = Math.atan2(-m31, m11);
} else {
rotation[0] = 0;
rotation[1] = Math.atan2(m13, m33);
}
} else if (order === 'XZY') {
rotation[2] = Math.asin(-clamp(m12, -1, 1));
if (Math.abs(m12) < 0.99999) {
rotation[0] = Math.atan2(m32, m22);
rotation[1] = Math.atan2(m13, m11);
} else {
rotation[0] = Math.atan2(-m23, m33);
rotation[1] = 0;
}
} else {
console.warn('VrMath.getRotation: unsupported order: ' + order);
}
return rotation;
},
/**
* Get forward direction from a matrix
* @param {array} m - The array[16] for 4x4 matrix
* @return {array} the forward vector, in x, y, z order, normalized.
*/
getMatrixForward: function(m) {
return MatrixMath.v3Normalize([-m[8], -m[9], -m[10]]);
},
/**
* Get up direction from a matrix
* @param {array} m - The array[16] for 4x4 matrix
* @return {array} the up vector, in x, y, z order, normalized.
*/
getMatrixUp: function(m) {
return MatrixMath.v3Normalize([m[4], m[5], m[6]]);
},
radToDeg: function(rad) {
return rad * RAD_TO_DEG;
},
degToRad: function(deg) {
return deg * DEG_TO_RAD;
},
};
module.exports = VrMath;
================================================
FILE: Libraries/Utilities/VrSoundEffects.js
================================================
/**
* 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.
*
* @providesModule VrSoundEffects
* @flow
*/
'use strict';
import {NativeModules} from 'react-native';
const RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');
const AudioModule = NativeModules.AudioModule;
const loadedSounds: {[uri: string]: any} = {};
const loadedSoundsRefs: {[uri: string]: number} = {};
type Resource = {uri: string};
type MultiFormatResource = {[format: string]: Resource};
// see docs/VrSoundEffects.docblock.md for docblock (not auto-extracted unless part of a class)
/**
* Takes an object mapping audio formats to resources, and returns the first
* resource that's supported on the current system.
*/
export function getSupportedResource(formats: MultiFormatResource | Resource): ?Resource {
if (!formats) {
return null;
}
if (formats.uri) {
return formats;
}
const supported = AudioModule.supportedFormats;
for (const format in formats) {
if (supported.indexOf(format) > -1) {
return formats[format];
}
}
return null;
}
/**
* Load the given audio resource. Audio clips must be loaded before playing.
*/
export function load(formats: MultiFormatResource | Resource,
onReady: () => void = undefined) {
const resource = getSupportedResource(formats);
if (!resource || !resource.uri) {
console.warn(
"VrSoundEffects.load(resource) expected resource in format {uri: 'http'}, got:",
resource
);
return;
}
const url = resource.uri;
if (loadedSounds[url]) {
loadedSoundsRefs[url] += 1;
onReady && onReady();
} else {
const sound = {
handle: url,
options: {
source: url,
},
ready: false,
};
loadedSoundsRefs[url] = 1;
loadedSounds[url] = sound;
AudioModule.createAudio(url, {source: url});
AudioModule.load(url, () => {
if (loadedSounds[url]) {
loadedSounds[url].ready = true;
}
onReady && onReady();
});
}
}
/**
* Play the audio resource indicated by the handle. Resource must have
* previously been loaded.
*/
export function play(formats: MultiFormatResource | Resource) {
const resource = getSupportedResource(formats);
if (!resource || !resource.uri) {
console.warn(
"VrSoundEffects.load(resource) expected resource in format {url: 'http'}, got:",
resource
);
return;
}
const url = resource.uri;
if (!loadedSounds[url] || !loadedSounds[url].ready) {
console.warn('VrSoundEffects: must load sound before playing', url);
return;
}
AudioModule.play(url);
}
/**
* Play an "one shot" audio resource indicated by the handle. Resource must have
* previously been loaded.
*/
export function playOneShot(formats: MultiFormatResource | Resource) {
const resource = getSupportedResource(formats);
if (!resource || !resource.uri) {
console.warn(
"VrSoundEffects.load(resource) expected resource in format {url: 'http'}, got:",
resource
);
return;
}
const url = resource.uri;
if (!loadedSounds[url] || !loadedSounds[url].ready) {
console.warn('VrSoundEffects: must load sound before playing', url);
return;
}
AudioModule.playOneShot({source: url});
}
/**
* Adjust the volume for this sound.
*/
export function volume(formats: MultiFormatResource | Resource, volume: number) {
const resource = getSupportedResource(formats);
const url = resource.uri;
if (!loadedSounds[url] || !loadedSounds[url].ready) {
console.warn('VrSoundEffects: must load sound before adjusting volume', url);
return;
}
if (volume < 0) {
console.warn('VrSoundEffects: volume cannot be negative', volume);
return;
}
AudioModule.setParams(url, {volume: volume, fadeTime: 0.0});
}
/**
* Dispose of any resources associated with this handle.
*/
export function unload(formats: MultiFormatResource | Resource, volume: number) {
const resource = getSupportedResource(formats);
const url = resource.uri;
if (loadedSounds[url]) {
loadedSoundsRefs[url] -= 1;
if (loadedSoundsRefs[url] === 0) {
AudioModule.unload(url);
delete loadedSounds[url];
delete loadedSoundsRefs[url];
}
}
}
================================================
FILE: Libraries/Utilities/asset.js
================================================
/**
* 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.
*
* @providesModule asset
* @flow
*/
/* eslint-disable import/no-commonjs */
import staticAssetURL from './staticAssetURL';
export type AssetSource = {uri: string};
function asset(localPath: string, sourceExtra: Object = {}): AssetSource {
return {
...sourceExtra,
uri: staticAssetURL(localPath),
};
}
module.exports = asset;
================================================
FILE: Libraries/Utilities/createGlyph.js
================================================
/**
* 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.
*
* @providesModule createGlyph
*/
const NativeModules = require('NativeModules');
const GlyphTextures = NativeModules.GlyphTextures;
let nextGlyph = 1;
function createGlyph(glyph, name) {
if (typeof name !== 'string') {
name = nextGlyph;
nextGlyph++;
}
const uri = 'texture://glyph/' + name;
GlyphTextures.registerGlyph(name, glyph);
return {uri};
}
module.exports = createGlyph;
================================================
FILE: Libraries/Utilities/staticAssetURL.js
================================================
/**
* 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.
*
* @providesModule staticAssetURL
* @flow
*/
import {NativeModules} from 'react-native';
const {assetRoot} = NativeModules.ExternalAssets;
/**
* Generate a path to a resource, using the currently-configured
* static asset path.
*/
export default function staticAssetURL(localPath: string): string {
let uri = localPath;
if (assetRoot) {
if (localPath.startsWith('/')) {
uri = assetRoot + localPath.substr(1);
} else {
uri = assetRoot + localPath;
}
}
return uri;
}
================================================
FILE: Libraries/Utilities/texture.js
================================================
/**
* 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.
*
* @providesModule texture
*/
/**
* Opaque wrapper around custom textures, allows us to change the implementation
* at any time.
*/
function texture(name, options) {
return {uri: 'texture://' + name};
}
module.exports = texture;
================================================
FILE: Libraries/VRLayers/CylindricalPanel.js
================================================
/**
* 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.
*
* @providesModule CylindricalPanel
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformOpacityPropTypes = require('LayoutAndTransformOpacityPropTypes');
const createReactClass = require('create-react-class');
const invariant = require('invariant');
const requireNativeComponent = require('requireNativeComponent');
/**
* The primary purpose of CylindricalPanel is to provide a simple means
* of carrying settings and layouts from 2D into VR. CylindricalPanel
* draws child components to the inner surface of a cylinder by first
* drawing the child components to an offscreen buffer of the specified
* width and height.
*
* By default, the cylinder placed at the center position of the scene so that the viewer is
* encapsulated by it.
*
* ```
* <CylindricalPanel
* layer={{
* width: bufferWidthPx,
* height: bufferHeightPx,
* density: numberOfPxForACompleteTurn,
* radius: distanceFromTheViewer
* }}>
* ... Child components ...
* </CylindricalPanel>
* ```
*
* The width and height of the cylinder must be specified, and the width must also correspond to
* the arc that the cylinder covers. The default Density is 4680px, which has been empirically
* defined to match a 1px unit on panel space to 1px on the eye. That is, the defaults allow transferring
* pixel units from 2D to also work in VR.
*
* The degrees in the arc can be computed by (width/density * 360).
* For example, with the default values, a cylinder covering half of the view direction (180 degrees) would have a width
* of 2340px. We recommend leaving the density to the default for the current range of VR displays.
* Presently, the maximum width is limited to 4096px, so if you require a full 360 degree cylinder,
* the density must be reduced to a value of 4096.
*
* The height is used to compute the height of the cylinder such that the world width and height of
* a 1px element on the panel remain square. For example, a 100px by 100px <image> with a 100px by 100px source
* bitmap would also look square when drawn to the cylinder.
*
* Child components can determine if they are within a Panel by using the `isOnLayer` context
*
*/
const CylindricalPanel = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
layer: PropTypes.shape({
width: PropTypes.number.isRequired,
height: PropTypes.number.isRequired,
radius: PropTypes.number,
density: PropTypes.number,
}).isRequired,
style: StyleSheetPropType(LayoutAndTransformOpacityPropTypes),
},
getChildContext(): Object {
return {isOnLayer: true};
},
childContextTypes: {
isOnLayer: PropTypes.bool,
},
contextTypes: {
isOnLayer: PropTypes.bool,
},
getDefaultProps: function() {
return {};
},
render: function() {
// TODO: prevent propagtion of changes to 'transform' property up the view hierarchy
const {layer, ...rest} = this.props;
rest.style = rest.style || {};
if (!rest.style.renderGroup) {
rest.style.renderGroup = true;
}
invariant(
layer.width > 0 && layer.width <= 4096,
'width is not within range of 0 and 4096 ' + layer.width.toString()
);
invariant(
layer.height > 0 && layer.height <= 1000,
'height is not within range of 0 and 1000 ' + layer.height.toString()
);
if (!layer.density) {
// default density of 4680 maps 1px of panel to 1px in vr view
layer.density = 4680;
}
if (!layer.radius) {
layer.radius = 4;
}
invariant(
layer.width <= layer.density,
'width value should be less than density ' + layer.width.toString(),
layer.density.toString()
);
invariant(
layer.height <= layer.density,
'height value should be less than density ' + layer.height.toString(),
layer.density.toString()
);
return (
<RKCylindricalPanel
layer={layer}
{...rest}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
<View style={{position: 'absolute'}}>
{this.props.children}
</View>
</RKCylindricalPanel>
);
},
});
const RKCylindricalPanel = requireNativeComponent('CylindricalPanel', CylindricalPanel, {
nativeOnly: {},
});
module.exports = CylindricalPanel;
================================================
FILE: Libraries/VRLayers/QuadPanel.js
================================================
/**
* 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.
*
* @providesModule QuadPanel
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const PropTypes = require('prop-types');
const React = require('React');
const View = require('View');
const StyleSheetPropType = require('StyleSheetPropType');
const LayoutAndTransformOpacityPropTypes = require('LayoutAndTransformOpacityPropTypes');
const createReactClass = require('create-react-class');
const invariant = require('invariant');
const requireNativeComponent = require('requireNativeComponent');
/**
* QuadPanel is a special component in React VR that allows drawing the child components
* to the surface of a quad. This is accomplished by drawing the child components to an offscreen
* buffer of the specified width and height.
*
* ```
* <QuadPanel
* layer={{
* width: bufferWidthPx,
* height: bufferHeightPx,
* density: numberOfPxForACompleteTurn,
* distance: distanceFromTheViewer
* }}>
* ... Child components ...
* </QuadPanel>
* ```
*
* The width and height of the quad must be specified in pixels when presented at distance units.
* Density is defaulted to 4680px which has been empirically
* defined to meet a 1px unit on panel space to 1px on the eye, ie the defaults allow transferal of
* px units in 2d to work in VR.
*
* We recommend leaving the density to the default for the current range of VR displays.
* Presently the width and height is limited to be not bigger than 4096px.
*
* The purpose of the quad layer is to provide a simple means to carry 2d settings and layouts
* to within VR
*
* Child components can determine if within a Panel by using the `isOnLayer` context
*
*/
const QuadPanel = createReactClass({
mixins: [NativeMethodsMixin],
propTypes: {
...View.propTypes,
layer: PropTypes.shape({
width: PropTypes.number.isRequired,
height: PropTypes.number.isRequired,
distance: PropTypes.number,
density: PropTypes.number,
}).isRequired,
style: StyleSheetPropType(LayoutAndTransformOpacityPropTypes),
},
getChildContext(): Object {
return {isOnLayer: true};
},
childContextTypes: {
isOnLayer: PropTypes.bool,
},
contextTypes: {
isOnLayer: PropTypes.bool,
},
getDefaultProps: function() {
return {};
},
render: function() {
// TODO: prevent propagtion of changes to 'transform' property up the view hierarchy
const {layer, ...rest} = this.props;
rest.style = rest.style || {};
if (!rest.style.renderGroup) {
rest.style.renderGroup = true;
}
invariant(
layer.width > 0 && layer.width <= 4096,
'width is not within range of 0 and 4096 ' + layer.width.toString()
);
invariant(
layer.height > 0 && layer.height <= 4096,
'height is not within range of 0 and 4096 ' + layer.height.toString()
);
if (!layer.density) {
// default density of 4680 maps 1px of panel to 1px in vr view
layer.density = 4680;
}
if (!layer.distance) {
layer.distance = 4;
}
invariant(
layer.width <= layer.density,
'width value should be less than density ' + layer.width.toString(),
layer.density.toString()
);
invariant(
layer.height <= layer.density,
'height value should be less than density ' + layer.height.toString(),
layer.density.toString()
);
return (
<RKQuadPanel
layer={layer}
{...rest}
onStartShouldSetResponder={() => true}
onResponderTerminationRequest={() => false}>
<View style={{position: 'absolute'}}>
{this.props.children}
</View>
</RKQuadPanel>
);
},
});
const RKQuadPanel = requireNativeComponent('QuadPanel', QuadPanel, {
nativeOnly: {},
});
module.exports = QuadPanel;
================================================
FILE: Libraries/VRModules/ControllerInfo.js
================================================
/**
* 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.
*
* @providesModule ControllerInfo
* @flow
*/
'use strict';
const RCTControllerInfo = require('NativeModules').ControllerInfo;
/**
* ControllerInfo exposes information about connected gamepads and controllers.
* It should be used to respond to controller connect / disconnect events, and
* extracting static information about controllers (unique identifiers, button
* and axis counts, left vs right hand, etc).
* For controller button states and poses, rely on React VR's input events and
* ray caster systems.
*/
class ControllerInfo {
/**
* Get the current information from all connected controllers.
* Resolves with an array of controller information objects.
* Returns a promise
*/
getControllers(): Promise<any> {
return RCTControllerInfo.getControllers();
}
}
const ControllerInfoInst = new ControllerInfo();
module.exports = ControllerInfoInst;
================================================
FILE: Libraries/VRModules/Environment.js
================================================
/**
* 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.
*
* @providesModule Environment
* @flow
*/
import {EnvironmentModule} from 'NativeModules';
import processTransform from 'processTransform';
type Resource = string | {uri: string};
type RotateTransform = {rotateX: string} | {rotateY: string}
| {rotateZ: string} | {rotate: string}
export type EnvironmentOptions = {
format?: string,
transition?: number,
fadeLevel?: number,
rotateTransform?: Array<RotateTransform>
};
export function clearBackground() {
EnvironmentModule.loadScene({type: 'black'});
}
export function setBackgroundImage(
url: Resource,
options: EnvironmentOptions = {},
) {
const scene: Object = {
type: 'photo',
url: typeof url === 'object' ? url.uri : url,
stereo: options.format,
rotateTransform: options.rotateTransform
? processTransform(options.rotateTransform)
: undefined,
};
const transition: Object = {
transition: options.transition,
fadeLevel: options.fadeLevel,
}
EnvironmentModule.loadScene(scene, transition);
}
export function setBackgroundVideo(player: string, options: EnvironmentOptions = {}) {
const scene = {
type: 'video',
player: player,
rotateTransform: options.rotateTransform
? processTransform(options.rotateTransform)
: undefined,
};
const transition: Object = {
transition: options.transition,
fadeLevel: options.fadeLevel,
}
EnvironmentModule.loadScene(scene, transition);
}
export function preloadBackgroundImage(url: Resource) {
const scene: Object = {
type: 'photo',
url: typeof url === 'object' ? url.uri : url
};
EnvironmentModule.preloadScene(scene);
}
export function animateFade(fadeLevel: number, fadeTime: number) {
EnvironmentModule.animateFade(fadeLevel, fadeTime);
}
export function setScreen(screenId: string, handle: ?string, surfaceId: string, x: number, y: number, width: number, height: number) {
EnvironmentModule.setScreen({
screenId: screenId,
type: 'surface',
surface: surfaceId,
player: handle,
x: x,
y: y,
width: width,
height: height,
});
}
================================================
FILE: Libraries/VRModules/ExternalAssets.js
================================================
/**
* 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.
*
* @providesModule ExternalAssets
* @flow
*/
'use strict';
const RCTExternalAssets = require('NativeModules').ExternalAssets;
/**
* ExternalAssets configures the root path of resources imported via asset()
*/
class ExternalAssets {
/**
* returns the base asset root
*/
getAssetRoot(): string {
return RCTExternalAssets.assetRoot;
}
}
const ExternalAssetsInst = new ExternalAssets();
module.exports = ExternalAssetsInst;
================================================
FILE: Libraries/VRModules/GlyphTextures.js
================================================
/**
* 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.
*
* @providesModule GlyphTextures
*/
'use strict';
const GlyphTextures = require('NativeModules').GlyphTextures;
module.exports = GlyphTextures;
================================================
FILE: Libraries/VRModules/History.js
================================================
/**
* 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.
*
* @providesModule History
*/
'use strict';
const RCTHistory = require('NativeModules').History;
/**
* History exposes the browser history stack to React
*/
class History {
/**
* Returns a Promise that is resolved with the current history length
*/
length(): Promise<any> {
return RCTHistory.length();
}
/**
* Returns a Promise that is resolved with the current history state
*/
state(): Promise<any> {
return RCTHistory.state();
}
/**
* Returns a Promise that is resolved after the history is moved back
*/
back(): Promise<any> {
return RCTHistory.back();
}
/**
* Returns a Promise that is resolved after the history is moved forward
*/
forward(): Promise<any> {
return RCTHistory.forward();
}
/**
* Takes a number of steps, and moves the history by that delta. Returns a
* Promise that is resolved after the move is completed.
*
* @param delta - The number of steps to move the current history state. A
* positive number moves the history forward, a negative number moves the
* history back.
*/
go(delta: number): Promise<any> {
return RCTHistory.go(delta);
}
/**
* Push a new state onto the history stack. The first argument is the state
* object to push onto the stack; the second argument is the new title
* for the window. An optional third argument is the new URL to display
* in the navigation bar.
*
* @param state - An object to push onto the stack
* @param title - A string to set as the window title
* @param url (optional) - The URL to show in the navigation bar
*/
pushState(state: any, title: any, url: ?any): Promise<any> {
return RCTHistory.pushState(state, title, url);
}
/**
* Replace the top state onto the history stack. The first argument is the
* state object to place at the top of the stack; the second argument is the
* new title for the window. An optional third argument is the new URL to
* display in the navigation bar.
*
* @param state - An object to push onto the stack
* @param title - A string to set as the window title
* @param url (optional) - The URL to show in the navigation bar
*/
replaceState(state: any, title: any, url: ?any): Promise<any> {
return RCTHistory.replaceState(state, title, url);
}
}
const HistoryInst = new History();
module.exports = HistoryInst;
================================================
FILE: Libraries/VRModules/Location.js
================================================
/**
* 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.
*
* @providesModule Location
* @flow
*/
'use strict';
const RCTLocation = require('NativeModules').Location;
/**
* Location implements window.location for the React context
*/
class Location {
/**
* Reload the current page. The optional boolean parameter determines whether
* the cache is bypassed.
* @param forceReload - If true, the cache will be ignored on reload
*/
reload(forceReload: boolean) {
RCTLocation.reload(forceReload);
}
/**
* Replace the current location, without affecting the History stack.
* @param replace - The location to navigate to
*/
replace(url: string) {
RCTLocation.replace(url);
}
}
const LocationInst = new Location();
module.exports = LocationInst;
================================================
FILE: Libraries/VRModules/ReactVRConstants.js
================================================
/**
* 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.
*
* @providesModule ReactVRConstants
*/
'use strict';
const ReactVRConstants = require('NativeModules').ReactVRConstants;
module.exports = ReactVRConstants;
================================================
FILE: Libraries/VRModules/VideoModule.js
================================================
/**
* Copyright 2015-present Oculus VR, LLC. All Rights Reserved.
*
* Video Module is the wrapper of native video module
*
* @flow
* @providesModule VideoModule
*/
import {NativeModules} from 'react-native';
import EventEmitter from 'EventEmitter';
import RCTDeviceEventEmitter from 'RCTDeviceEventEmitter';
import type EmitterSubscription from 'EmitterSubscription';
const NativeVideoModule = NativeModules.VideoModule || {};
// This represents the maximum number of video players available on the platform
// a value of -1 indicates it supports an infinite number of players.
const maxPlayers = NativeVideoModule.maxPlayers || 1;
// same types as Compositor/Video/Types
export type VideoPlayerStatus =
| 'closed' // No session.
| 'closing' // Session is being closed.
| 'failed' // Session had an error.
| 'finished' // Session has finished playing video
| 'paused' // Session is paused.
| 'playing' // Session is playing a video.
| 'seeking' // Session is seeking a position
| 'ready' // Session is ready to play a video.
| 'stopped'; // Session is stopped (ready to play)
export type VideoStereoFormat = '2D' | '3DLR' | '3DTB' | '3DBT' | 'UNKNOWN';
export type VideoLayout = 'RECT' | 'SPHERICAL' | 'CUBEMAP_32';
export type VideoRotation = {
yaw: number,
};
export type VideoSource = {
fileFormat?: string,
url: string,
};
export type VideoPlayOptions = {
fadeLevel?: number,
fadeSpeed?: number,
forceMono?: boolean,
layout?: VideoLayout,
muted?: boolean,
rotation?: VideoRotation,
stereo?: VideoStereoFormat,
volume?: number,
};
export type VideoOptions = VideoPlayOptions & {
source: VideoSource | Array<VideoSource>,
startPosition?: number,
autoPlay?: boolean,
};
export type VideoEvent = {
player: string,
};
export type VideoStatusEvent = VideoEvent & {
duration: number,
error?: string,
isBuffering: boolean,
isMuted: boolean,
position: number,
status: VideoPlayerStatus,
volume: number,
};
export type onVideoStatusChangedCallback = (event: VideoStatusEvent) => void;
/**
* JS wrapper of native module `VideoModule`
* Example of usage:
* const player = VideoModule.getPlayer('default');
* const player.play({
* source: {
* url: "http://www.xxx.xx/video.mp4",
* },
* volume: 0.7,
* stereo: '3DLR',
* });
* player.pause();
* player.resume();
* player.seek(5000);
* player.stop();
*/
class VideoModuleImpl {
maxPlayers: number = maxPlayers;
_players: {[string]: VideoPlayerInstance};
_nextPlayerNameId: number = 0;
constructor() {
this._players = {};
}
createPlayer(name?: string) {
if (maxPlayers !== -1 && Object.keys(this._players).length >= maxPlayers) {
throw new Error(
`Unable to create another video player, this platform only supports a maximum of ${maxPlayers} players at once.`
);
}
if (!name) {
name = `auto_video_player_${this._nextPlayerNameId++}`;
}
if (name in this._players) {
throw new Error(
`Unable to create video player with name ${name} because a player already exists with that name.`
);
}
NativeVideoModule.createPlayer(name);
this._players[name] = new VideoPlayerInstance(name);
return this._players[name];
}
destroyPlayer(name: string) {
if (name === 'default') {
throw new Error('The default video player cannot be destroyed.');
}
if (!(name in this._players)) {
throw new Error(
`Unable to delete video player with name ${name} because it does not exist.`
);
}
NativeVideoModule.destroyPlayer(name);
delete this._players[name];
}
// Get a video player instance to play video
getPlayer(name?: string): VideoPlayerInstance {
name = name || 'default';
if (this._players[name]) {
return this._players[name];
} else {
throw new Error(`Unable to find video player with name "${name}".`);
}
}
// play a video for player
// Don't use this directly, please use VideoPlayerInstance methods instead
play(player: string, options: VideoOptions) {
NativeVideoModule.play(player, options);
}
// pause the video
// Don't use this directly, please use VideoPlayerInstance methods instead
pause(player: string) {
NativeVideoModule.pause(player);
}
// resume the video
// Don't use this directly, please use VideoPlayerInstance methods instead
resume(player: string) {
NativeVideoModule.resume(player);
}
// stop the video
// Don't use this directly, please use VideoPlayerInstance methods instead
stop(player: string) {
NativeVideoModule.stop(player);
}
// seek the video
// Don't use this directly, please use VideoPlayerInstance methods instead
seek(player: string, timeMs: number) {
NativeVideoModule.seek(player, timeMs);
}
// set the parameters of video
// Don't use this directly, please use VideoPlayerInstance methods instead
setParams(player: string, options: VideoPlayOptions) {
NativeVideoModule.setParams(player, options);
}
_onVideoEvents(eventType: string, event: VideoEvent) {
if (this._players[event.player]) {
this._players[event.player]._emitter.emit(eventType, event);
}
}
_initializeDefaultPlayer() {
this.createPlayer('default');
}
}
const VideoModule = new VideoModuleImpl();
const VideoEventTypes = ['onVideoStatusChanged'];
for (const eventType of VideoEventTypes) {
RCTDeviceEventEmitter.addListener(eventType, (event: VideoEvent) => {
VideoModule._onVideoEvents(eventType, event);
});
}
export class VideoPlayerInstance {
_player: string;
_emitter = new EventEmitter();
constructor(player: string) {
this._player = player;
}
// play a video for player
play(options: VideoOptions) {
VideoModule.play(this._player, options);
}
// pause the video
pause() {
VideoModule.pause(this._player);
}
// resume the video
resume() {
VideoModule.resume(this._player);
}
// stop the video
stop() {
VideoModule.stop(this._player);
}
// seek the video
seek(timeMs: number) {
VideoModule.seek(this._player, timeMs);
}
setVolume(volume: number) {
VideoModule.setParams(this._player, {
volume,
});
}
setMuted(muted: boolean) {
VideoModule.setParams(this._player, {
muted,
});
}
// set the parameters of video
setParams(options: VideoPlayOptions) {
VideoModule.setParams(this._player, options);
}
destroy() {
VideoModule.destroyPlayer(this._player);
}
addListener(
eventType: string,
listener: onVideoStatusChangedCallback
) {
return this._emitter.addListener(eventType, listener);
}
removeSubscription(subscription: EmitterSubscription) {
this._emitter.removeSubscription(subscription);
}
}
VideoModule._initializeDefaultPlayer();
export const DefaultVideoPlayer = VideoModule.getPlayer();
export default VideoModule;
================================================
FILE: Libraries/VRReactOverrides/AccessibilityInfo.vr.js
================================================
/**
* 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.
*
* @providesModule AccessibilityInfo
*/
'use strict';
const AccessibilityInfo = {
fetch(): Promise {
return new Promise((resolve, reject) => {
resolve(false);
});
},
addEventListener(eventName: string, handler: Function): void {
// no-op
},
removeEventListener(eventName: string, handler: Function): void {
// no-op
},
};
module.exports = AccessibilityInfo;
================================================
FILE: Libraries/VRReactOverrides/BackHandler.vr.js
================================================
/**
* 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.
*
* @providesModule BackHandler
*/
'use strict';
const emptyFunction = function() {};
const BackHandler = {
exitApp: emptyFunction,
addEventListener() {
return {
remove: emptyFunction,
};
},
removeEventListener: emptyFunction,
};
module.exports = BackHandler;
================================================
FILE: Libraries/VRReactOverrides/HMRLoadingView.vr.js
================================================
/**
* 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.
*
* @providesModule HMRLoadingView
* @flow
*/
'use strict';
class HMRLoadingView {
static _showing: boolean;
static showMessage(message: string) {
if (HMRLoadingView._showing) {
return;
}
console.log('HMR Start');
console.log(message);
HMRLoadingView._showing = true;
setTimeout(() => {
HMRLoadingView._showing = false;
console.log('HMR End');
}, 2000);
}
static hide() {
// noop
}
}
module.exports = HMRLoadingView;
================================================
FILE: Libraries/VRReactOverrides/Image.vr.js
================================================
/**
* 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.
*
* @providesModule Image
* @flow
*/
'use strict';
const NativeMethodsMixin = require('NativeMethodsMixin');
const ColorPropType = require('ColorPropType');
const ImageResizeMode = require('ImageResizeMode');
const ImageStylePropTypes = require('ImageStylePropTypes');
const PropTypes = require('prop-types');
const React = require('React');
const ReactNativeViewAttributes = require('ReactNativeViewAttributes');
const StyleSheet = require('StyleSheet');
const StyleSheetPropType = require('StyleSheetPropType');
const View = require('View');
const createReactClass = require('create-react-class');
const flattenStyle = require('flattenStyle');
const merge = require('merge');
const requireNativeComponent = require('requireNativeComponent');
const resolveAssetSource = require('resolveAssetSource');
/**
* A react component for displaying different types of images.
*
* Example usage:
*
* ```
* renderImages: function() {
* return (
* <View>
* <Image
* style={styles.icon}
* source={require('./myIcon.png')}
* />
* <Image
* style={styles.logo}
* source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}}
* />
* </View>
* );
* },
*```
*/
const Image = createReactClass({
propTypes: {
...View.propTypes,
style: StyleSheetPropType({
...ImageStylePropTypes,
gradientColorA: ColorPropType,
gradientColorB: ColorPropType,
gradientAngle: PropTypes.string,
}),
/**
* `uri` is a string representing the resource identifier for the image, which
* could be an http address, a local file path, or a static image
* resource (which should be wrapped in the `require('./path/to/image.png')` function).
*/
source: PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
]),
/**
* similarly to `source`, this property represents the resource used to render
* the loading indicator for the image, displayed until image is ready to be
* displayed, typically after when it got downloaded from network.
*/
loadingIndicatorSource: PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
}),
// Opaque type returned by require('./image.jpg')
PropTypes.number,
]),
progressiveRenderingEnabled: PropTypes.bool,
fadeDuration: PropTypes.number,
/**
* Invoked on load start
*/
onLoadStart: PropTypes.func,
/**
* Invoked when load completes successfully
*/
onLoad: PropTypes.func,
/**
* Invoked when load either succeeds or fails
*/
onLoadEnd: PropTypes.func,
/**
* Used to locate this view in end-to-end tests.
*/
testID: PropTypes.string,
/**
* inset in texture space in 9 tile set up
*/
inset: PropTypes.arrayOf(PropTypes.number),
/**
* Inset size in world units in 9 tile set up
*/
insetSize: PropTypes.arrayOf(PropTypes.number),
/**
* Specifies the extents of the UV to display
*/
crop: PropTypes.arrayOf(PropTypes.number),
},
statics: {
resizeMode: ImageResizeMode,
},
mixins: [NativeMethodsMixin],
/**
* `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We
* make `this` look like an actual native component class. Since it can render
* as 3 different native components we need to update viewConfig accordingly
*/
viewConfig: {
uiViewClassName: 'RCTImageView',
validAttributes: {
...ReactNativeViewAttributes.RCTView,
inset: true,
insetSize: true,
crop: true,
},
},
contextTypes: {
isInAParentText: PropTypes.bool,
},
render: function() {
const source = resolveAssetSource(this.props.source);
const loadingIndicatorSource = resolveAssetSource(this.props.loadingIndicatorSource);
// As opposed to the ios version, here it render `null`
// when no source or source.uri... so let's not break that.
if (source && source.uri === '') {
console.warn('source.uri should not be an empty string');
}
if (this.props.src) {
console.warn('The <Image> component requires a `source` property rather than `src`.');
}
if (source && source.uri) {
const style = flattenStyle([styles.base, this.props.style]);
const {onLoadStart, onLoad, onLoadEnd} = this.props;
const nativeProps = merge(this.props, {
style,
shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd),
source: source,
loadingIndicatorSrc: loadingIndicatorSource ? loadingIndicatorSource.uri : null,
});
/**
* by default set the renderGroup if any transform as been set
*/
if (
nativeProps.style &&
nativeProps.style['renderGroup'] === undefined &&
nativeProps.style.transform
) {
nativeProps.style.renderGroup = true;
}
if (this.context.isInAParentText) {
// RCTTextInlineImage isn't implemented yet
return <RKImage {...nativeProps} />;
} else {
return <RKImage {...nativeProps} />;
}
}
return null;
},
});
const styles = StyleSheet.create({
base: {
overflow: 'hidden',
},
absoluteImage: {
left: 0,
right: 0,
top: 0,
bottom: 0,
position: 'absolute',
},
});
const cfg = {
nativeOnly: {
src: true,
loadingIndicatorSrc: true,
defaultImageSrc: true,
imageTag: true,
progressHandlerRegistered: true,
shouldNotifyLoadEvents: true,
},
};
const RKImage = requireNativeComponent('RCTImageView', Image, cfg);
//var RCTTextInlineImage = requireNativeComponent('RCTTextInlineImage', Image, cfg);
module.exports = Image;
================================================
FILE: Libraries/VRReactOverrides/Interpolation.vr.js
================================================
/**
* 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.
*
* @providesModule Interpolation
* @flow
*/
/* eslint no-bitwise: 0 */
'use strict';
const invariant = require('fbjs/lib/invariant');
const normalizeColor = require('normalizeColor');
type ExtrapolateType = 'extend' | 'identity' | 'clamp';
type SnapType = 'none' | 'round' | 'ceil' | 'floor';
export type InterpolationConfigType = {
inputRange: Array<number>,
/* $FlowFixMe(>=0.38.0 site=react_native_fb,react_native_oss) - Flow error
* detected during the deployment of v0.38.0. To see the error, remove this
* comment and run flow
*/
outputRange: Array<number> | Array<string>,
easing?: (input: number) => number,
extrapolate?: ExtrapolateType,
extrapolateLeft?: ExtrapolateType,
extrapolateRight?: ExtrapolateType,
snap?: SnapType,
};
const linear = t => t;
/**
* Very handy helper to map input ranges to output ranges with an easing
* function and custom behavior outside of the ranges.
*/
class Interpolation {
static create(config: InterpolationConfigType): (input: number) => number | string {
if (config.outputRange && typeof config.outputRange[0] === 'string') {
return createInterpolationFromStringOutputRange(config);
}
const outputRange: Array<number> = (config.outputRange: any);
checkInfiniteRange('outputRange', outputRange);
const inputRange = config.inputRange;
checkInfiniteRange('inputRange', inputRange);
checkValidInputRange(inputRange);
invariant(
inputRange.length === outputRange.length,
'inputRange (' +
inputRange.length +
') and outputRange (' +
outputRange.length +
') must have the same length'
);
const easing = config.easing || linear;
let extrapolateLeft: ExtrapolateType = 'extend';
if (config.extrapolateLeft !== undefined) {
extrapolateLeft = config.extrapolateLeft;
} else if (config.extrapolate !== undefined) {
extrapolateLeft = config.extrapolate;
}
let extrapolateRight: ExtrapolateType = 'extend';
if (config.extrapolateRight !== undefined) {
extrapolateRight = config.extrapolateRight;
} else if (config.extrapolate !== undefined) {
extrapolateRight = config.extrapolate;
}
return input => {
invariant(typeof input === 'number', 'Cannot interpolation an input which is not a number');
const range = findRange(input, inputRange);
const snap: SnapType = config.snap || 'none';
return interpolate(
input,
inputRange[range],
inputRange[range + 1],
outputRange[range],
outputRange[range + 1],
easing,
extrapolateLeft,
extrapolateRight,
snap
);
};
}
}
function ApplySnapping(result: number, snap: SnapType): number {
switch (snap) {
case 'round':
return Math.round(result);
case 'floor':
return Math.floor(result);
case 'ceil':
return Math.ceil(result);
default:
return result;
}
}
function interpolate(
input: number,
inputMin: number,
inputMax: number,
outputMin: number,
outputMax: number,
easing: (input: number) => number,
extrapolateLeft: ExtrapolateType,
extrapolateRight: ExtrapolateType,
snap: SnapType
) {
let result = input;
// Extrapolate
if (result < inputMin) {
if (extrapolateLeft === 'identity') {
return ApplySnapping(result, snap);
} else if (extrapolateLeft === 'clamp') {
result = inputMin;
} else if (extrapolateLeft === 'extend') {
// noop
}
}
if (result > inputMax) {
if (extrapolateRight === 'identity') {
return ApplySnapping(result, snap);
} else if (extrapolateRight === 'clamp') {
result = inputMax;
} else if (extrapolateRight === 'extend') {
// noop
}
}
if (outputMin === outputMax) {
return ApplySnapping(outputMin, snap);
}
if (inputMin === inputMax) {
if (input <= inputMin) {
return ApplySnapping(outputMin, snap);
}
return ApplySnapping(outputMax, snap);
}
// Input Range
if (inputMin === -Infinity) {
result = -result;
} else if (inputMax === Infinity) {
result -= inputMin;
} else {
result = (result - inputMin) / (inputMax - inputMin);
}
// Easing
result = easing(result);
// Output Range
if (outputMin === -Infinity) {
result = -result;
} else if (outputMax === Infinity) {
result += outputMin;
} else {
result = result * (outputMax - outputMin) + outputMin;
}
return ApplySnapping(result, snap);
}
function colorToRgba(input: string): string {
let int32Color = normalizeColor(input);
if (int32Color === null) {
return input;
}
int32Color = int32Color || 0;
const r = (int32Color & 0xff000000) >>> 24;
const g = (int32Color & 0x00ff0000) >>> 16;
const b = (int32Color & 0x0000ff00) >>> 8;
const a = (int32Color & 0x000000ff) / 255;
return `rgba(${r}, ${g}, ${b}, ${a})`;
}
const stringShapeRegex = /[0-9\.-]+/g;
/**
* Supports string shapes by extracting numbers so new values can be computed,
* and recombines those values into new strings of the same shape. Supports
* things like:
*
* rgba(123, 42, 99, 0.36) // colors
* -45deg // values with units
*/
function createInterpolationFromStringOutputRange(
config: InterpolationConfigType
): (input: number) => string {
let outputRange: Array<string> = (config.outputRange: any);
invariant(outputRange.length >= 2, 'Bad output range');
outputRange = outputRange.map(colorToRgba);
checkPattern(outputRange);
// ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']
// ->
// [
// [0, 50],
// [100, 150],
// [200, 250],
// [0, 0.5],
// ]
/* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to
* guard against this possibility.
*/
const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);
outputRange.forEach(value => {
/* $FlowFixMe(>=0.18.0): `value.match()` can return `null`. Need to guard
* against this possibility.
*/
value.match(stringShapeRegex).forEach((number, i) => {
outputRanges[i].push(+number);
});
});
/* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to
* guard against this possibility.
*/
const interpolations = outputRange[0].match(stringShapeRegex).map((value, i) => {
return Interpolation.create({
...config,
outputRange: outputRanges[i],
});
});
// rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to
// round the opacity (4th column).
const shouldRound = isRgbOrRgba(outputRange[0]);
return input => {
let i = 0;
// 'rgba(0, 100, 200, 0)'
// ->
// 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'
return outputRange[0].replace(stringShapeRegex, () => {
const val = +interpolations[i++](input);
const rounded = shouldRound && i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000;
return String(rounded);
});
};
}
function isRgbOrRgba(range) {
return typeof range === 'string' && range.startsWith('rgb');
}
function checkPattern(arr: Array<string>) {
const pattern = arr[0].replace(stringShapeRegex, '');
for (let i = 1; i < arr.length; ++i) {
invariant(
pattern === arr[i].replace(stringShapeRegex, ''),
'invalid pattern ' + arr[0] + ' and ' + arr[i]
);
}
}
function findRange(input: number, inputRange: Array<number>) {
let i = 1;
for (; i < inputRange.length - 1; ++i) {
if (inputRange[i] >= input) {
break;
}
}
return i - 1;
}
function checkValidInputRange(arr: Array<number>) {
invariant(arr.length >= 2, 'inputRange must have at least 2 elements');
for (let i = 1; i < arr.length; ++i) {
invariant(
arr[i] >= arr[i - 1],
/* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,
* one or both of the operands may be something that doesn't cleanly
* convert to a string, like undefined, null, and object, etc. If you really
* mean this implicit string conversion, you can do something like
* String(myThing)
*/
'inputRange must be monotonically increasing ' + arr
);
}
}
function checkInfiniteRange(name: string, arr: Array<number>) {
invariant(arr.length >= 2, name + ' must have at least 2 elements');
invariant(
arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,
/* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,
* one or both of the operands may be something that doesn't cleanly convert
* to a string, like undefined, null, and object, etc. If you really mean
* this implicit string conversion, you can do something like
* String(myThing)
*/
name + 'cannot be ]-infinity;+infinity[ ' + arr
);
}
module.exports = Interpolation;
================================================
FILE: Libraries/VRReactOverrides/MaskedViewIOS.vr.js
================================================
/**
* 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.
*
* @providesModule MaskedViewIOS
* @flow
*/
'use strict';
module.exports = require('UnimplementedView');
================================================
FILE: Libraries/VRReactOverrides/NetworkOverlay.vr.js
================================================
/**
* 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.
*
* @providesModule NetworkOverlay
* @flow
*/
const React = require('React');
class NetworkOverlay extends React.Component {
render() {
return null;
}
}
module.exports = NetworkOverlay;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/CheckBox.vr.js
================================================
/**
* 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.
*
* @flow
* @providesModule CheckBox
*/
/* eslint-disable import/no-commonjs */
module.exports = require('UnimplementedView');
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/DatePickerAndroid.vr.js
================================================
/**
* 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.
*
* @providesModule DatePickerAndroid
*/
'use strict';
const React = require('React');
class DummyDatePickerAndroid extends React.Component {
render() {
return null;
}
}
module.exports = DummyDatePickerAndroid;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/DatePickerIOS.vr.js
================================================
/**
* 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.
*
* @providesModule DatePickerIOS
*/
'use strict';
const React = require('React');
class DummyDatePickerIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummyDatePickerIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/DrawerLayoutAndroid.vr.js
================================================
/**
* 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.
*
* @providesModule DrawerLayoutAndroid
*/
'use strict';
const React = require('React');
class DummyDrawerLayoutAndroid extends React.Component {
render() {
return null;
}
}
module.exports = DummyDrawerLayoutAndroid;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigationExperimental.vr.js
================================================
/**
* 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.
*
* @providesModule NavigationExperimental
*/
'use strict';
const React = require('React');
class DummyNavigationExperimental extends React.Component {
render() {
return null;
}
}
module.exports = DummyNavigationExperimental;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigatorBreadcrumbNavigationBarStyles.vr.js
================================================
/**
* 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.
*
* @providesModule NavigatorBreadcrumbNavigationBarStyles
*/
'use strict';
const React = require('React');
class DummyNavigatorBreadcrumbNavigationBarStyles extends React.Component {
render() {
return null;
}
}
module.exports = DummyNavigatorBreadcrumbNavigationBarStyles;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigatorIOS.vr.js
================================================
/**
* 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.
*
* @providesModule NavigatorIOS
*/
'use strict';
const React = require('React');
class DummyNavigatorIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummyNavigatorIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/PickerAndroid.vr.js
================================================
/**
* 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.
*
* @providesModule PickerAndroid
*/
'use strict';
const React = require('React');
class DummyPickerAndroid extends React.Component {
render() {
return null;
}
}
module.exports = DummyPickerAndroid;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/PickerIOS.vr.js
================================================
/**
* 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.
*
* @providesModule PickerIOS
*/
'use strict';
const React = require('React');
class DummyPickerIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummyPickerIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/ProgressBarAndroid.vr.js
================================================
/**
* 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.
*
* @providesModule ProgressBarAndroid
*/
'use strict';
const React = require('React');
class DummyProgressBarAndroid extends React.Component {
render() {
return null;
}
}
module.exports = DummyProgressBarAndroid;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/ProgressViewIOS.vr.js
================================================
/**
* 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.
*
* @providesModule ProgressViewIOS
*/
'use strict';
const React = require('React');
class DummyProgressViewIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummyProgressViewIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/RecyclerViewBackedScrollview.vr.js
================================================
/**
* 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.
*
* @providesModule RecyclerViewBackedScrollView
*/
'use strict';
const React = require('React');
class DummyRecyclerViewBackedScrollView extends React.Component {
render() {
return null;
}
}
module.exports = DummyRecyclerViewBackedScrollView;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/SafeAreaView.vr.js
================================================
/**
* 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.
*
* @flow
* @providesModule SafeAreaView
*/
/* eslint-disable import/no-commonjs */
module.exports = require('UnimplementedView');
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/SegmentedControlIOS.vr.js
================================================
/**
* 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.
*
* @providesModule SegmentedControlIOS
*/
'use strict';
const React = require('React');
class DummySegmentedControlIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummySegmentedControlIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/SnapshotViewIOS.vr.js
================================================
/**
* 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.
*
* @providesModule SnapshotViewIOS
*/
'use strict';
const React = require('React');
class DummySnapshotViewIOS extends React.Component {
render() {
return null;
}
}
module.exports = DummySnapshotViewIOS;
================================================
FILE: Libraries/VRReactOverrides/PlatformSpecific/StatusBarIOS.vr.js
================================================
/**
* 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
gitextract_38_tdv3f/
├── .circleci/
│ └── config.yml
├── .flowconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE.md
│ └── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE-docs
├── LICENSE-examples
├── Libraries/
│ ├── .eslintrc.js
│ ├── Camera/
│ │ └── LiveEnvCamera.js
│ ├── Components/
│ │ └── View/
│ │ ├── PlatformViewPropTypes.vr.js
│ │ └── View.vr.js
│ ├── Lights/
│ │ ├── AmbientLight.js
│ │ ├── DirectionalLight.js
│ │ ├── PointLight.js
│ │ └── SpotLight.js
│ ├── Mesh/
│ │ ├── Box.js
│ │ ├── Cylinder.js
│ │ ├── Entity.js
│ │ ├── Model.js
│ │ ├── Plane.js
│ │ └── Sphere.js
│ ├── Pano/
│ │ ├── Pano.js
│ │ └── Prefetch.js
│ ├── Scene/
│ │ └── Scene.js
│ ├── Sound/
│ │ └── Sound.js
│ ├── StyleSheet/
│ │ ├── LayoutAndTransformColorPropTypes.js
│ │ ├── LayoutAndTransformOpacityPropTypes.js
│ │ ├── LayoutAndTransformPropTypes.js
│ │ ├── LayoutAndTransformTintPropTypes.js
│ │ ├── LayoutPropTypes.vr.js
│ │ └── ViewStylePropTypes.vr.js
│ ├── Utilities/
│ │ ├── MatrixMath.vr.js
│ │ ├── Platform.vr.js
│ │ ├── ThreeJSConstants.js
│ │ ├── VrHeadModel.js
│ │ ├── VrMath.js
│ │ ├── VrSoundEffects.js
│ │ ├── asset.js
│ │ ├── createGlyph.js
│ │ ├── staticAssetURL.js
│ │ └── texture.js
│ ├── VRLayers/
│ │ ├── CylindricalPanel.js
│ │ └── QuadPanel.js
│ ├── VRModules/
│ │ ├── ControllerInfo.js
│ │ ├── Environment.js
│ │ ├── ExternalAssets.js
│ │ ├── GlyphTextures.js
│ │ ├── History.js
│ │ ├── Location.js
│ │ ├── ReactVRConstants.js
│ │ └── VideoModule.js
│ ├── VRReactOverrides/
│ │ ├── AccessibilityInfo.vr.js
│ │ ├── BackHandler.vr.js
│ │ ├── HMRLoadingView.vr.js
│ │ ├── Image.vr.js
│ │ ├── Interpolation.vr.js
│ │ ├── MaskedViewIOS.vr.js
│ │ ├── NetworkOverlay.vr.js
│ │ ├── PlatformSpecific/
│ │ │ ├── CheckBox.vr.js
│ │ │ ├── DatePickerAndroid.vr.js
│ │ │ ├── DatePickerIOS.vr.js
│ │ │ ├── DrawerLayoutAndroid.vr.js
│ │ │ ├── NavigationExperimental.vr.js
│ │ │ ├── NavigatorBreadcrumbNavigationBarStyles.vr.js
│ │ │ ├── NavigatorIOS.vr.js
│ │ │ ├── PickerAndroid.vr.js
│ │ │ ├── PickerIOS.vr.js
│ │ │ ├── ProgressBarAndroid.vr.js
│ │ │ ├── ProgressViewIOS.vr.js
│ │ │ ├── RecyclerViewBackedScrollview.vr.js
│ │ │ ├── SafeAreaView.vr.js
│ │ │ ├── SegmentedControlIOS.vr.js
│ │ │ ├── SnapshotViewIOS.vr.js
│ │ │ ├── StatusBarIOS.vr.js
│ │ │ ├── TabBarIOS.vr.js
│ │ │ ├── TimePickerAndroid.vr.js
│ │ │ ├── ToastAndroid.vr.js
│ │ │ ├── ToolbarAndroid.vr.js
│ │ │ ├── TouchableNativeFeedback.vr.js
│ │ │ ├── VibrationIOS.vr.js
│ │ │ ├── ViewPagerAndroid.vr.js
│ │ │ └── WebView.vr.js
│ │ ├── RCTNetworking.vr.js
│ │ ├── ReactNativeViewAttributes.vr.js
│ │ ├── Settings.vr.js
│ │ ├── TVEventHandler.vr.js
│ │ ├── Text.vr.js
│ │ ├── TransformPropTypes.vr.js
│ │ ├── YellowBox.vr.js
│ │ ├── processTransform.vr.js
│ │ └── setupDevtools.vr.js
│ ├── Video/
│ │ ├── MediaPlayerState.js
│ │ ├── Video.js
│ │ ├── VideoControl.js
│ │ └── VideoUtils.js
│ ├── VideoPano/
│ │ └── VideoPano.js
│ ├── VrAnimated/
│ │ └── VrAnimated.js
│ ├── VrButton/
│ │ └── VrButton.js
│ └── react-360.js
├── OVRUI/
│ └── fonts/
│ ├── cjk_0.fnt
│ ├── cjk_1.fnt
│ ├── cjk_2.fnt
│ ├── efigs.fnt
│ ├── greek.fnt
│ ├── japanese.fnt
│ ├── korean.fnt
│ ├── korean_0.fnt
│ └── korean_1.fnt
├── README.md
├── React360/
│ ├── .npmignore
│ ├── LICENSE
│ ├── PATENTS
│ ├── README.md
│ ├── React360.js
│ ├── js/
│ │ ├── Audio/
│ │ │ ├── AudioTypes.js
│ │ │ ├── MediaError.js
│ │ │ ├── OVRAudio.js
│ │ │ ├── VRAudioBufferManager.js
│ │ │ ├── VRAudioBufferSource.js
│ │ │ ├── VRAudioComponent.js
│ │ │ ├── VRAudioContext.js
│ │ │ └── getSupportedFormats.js
│ │ ├── Bridge/
│ │ │ ├── Bridge.js
│ │ │ └── WebWorkerBridge.js
│ │ ├── Compositor/
│ │ │ ├── Audio/
│ │ │ │ ├── AudioInstance.js
│ │ │ │ ├── AudioNode.js
│ │ │ │ └── Types.js
│ │ │ ├── Compositor.js
│ │ │ ├── Cursor.js
│ │ │ ├── Environment/
│ │ │ │ ├── CubemapGeometry.js
│ │ │ │ ├── Environment.js
│ │ │ │ ├── EnvironmentUtils.js
│ │ │ │ ├── Screen.js
│ │ │ │ ├── StereoBasicTextureMaterial.js
│ │ │ │ ├── StereoShaderLib.js
│ │ │ │ ├── StereoTextureUniforms.js
│ │ │ │ └── Types.js
│ │ │ ├── Glyphs.js
│ │ │ ├── Location.js
│ │ │ ├── Overlay.js
│ │ │ ├── Surface.js
│ │ │ ├── SurfaceManager.js
│ │ │ ├── VRState.js
│ │ │ └── Video/
│ │ │ ├── BrowserVideoPlayer.js
│ │ │ ├── Types.js
│ │ │ ├── VideoPlayer.js
│ │ │ └── VideoPlayerManager.js
│ │ ├── Controls/
│ │ │ ├── CameraControllers/
│ │ │ │ ├── DeviceOrientationCameraController.js
│ │ │ │ ├── MousePanCameraController.js
│ │ │ │ ├── ScrollPanCameraController.js
│ │ │ │ └── Types.js
│ │ │ ├── Controls.js
│ │ │ ├── InputChannels/
│ │ │ │ ├── GamepadInputChannel.js
│ │ │ │ ├── KeyboardInputChannel.js
│ │ │ │ ├── MouseInputChannel.js
│ │ │ │ ├── TouchInputChannel.js
│ │ │ │ └── Types.js
│ │ │ ├── Raycasters/
│ │ │ │ ├── ControllerRaycaster.js
│ │ │ │ ├── MouseRaycaster.js
│ │ │ │ ├── TouchRaycaster.js
│ │ │ │ └── Types.js
│ │ │ ├── Types.js
│ │ │ ├── Utils/
│ │ │ │ └── ControllerRenderer.js
│ │ │ └── __tests__/
│ │ │ └── InputChannels-test.js
│ │ ├── Events/
│ │ │ └── MediaEvent.js
│ │ ├── Executor/
│ │ │ ├── NonBlobBridge.js
│ │ │ ├── ReactExecutor.js
│ │ │ ├── ReactExecutorIframe.js
│ │ │ ├── ReactExecutorNonBlobWebWorker.js
│ │ │ └── ReactExecutorWebWorker.js
│ │ ├── Loaders/
│ │ │ ├── GLTF2ModelLoader.js
│ │ │ ├── ModelLoaderRegistry.js
│ │ │ ├── ObjModelLoader.js
│ │ │ └── WavefrontOBJ/
│ │ │ ├── MTLLoader.js
│ │ │ ├── MTLParser.js
│ │ │ ├── OBJGroup.js
│ │ │ ├── OBJLoader.js
│ │ │ ├── OBJParser.js
│ │ │ ├── OBJTypes.js
│ │ │ ├── README.md
│ │ │ └── __tests__/
│ │ │ ├── MTLParser-test.js
│ │ │ ├── OBJGroup-test.js
│ │ │ ├── OBJLoader-test.js
│ │ │ └── OBJParser-test.js
│ │ ├── Modules/
│ │ │ ├── AndroidConstants.js
│ │ │ ├── AsyncLocalStorage.js
│ │ │ ├── AudioModule.js
│ │ │ ├── ControllerInfo.js
│ │ │ ├── DeviceInfo.js
│ │ │ ├── EnvironmentModule.js
│ │ │ ├── ExternalAssets.js
│ │ │ ├── GlyphTextures.js
│ │ │ ├── History.js
│ │ │ ├── LinkingManager.js
│ │ │ ├── Location.js
│ │ │ ├── LocationObserver.js
│ │ │ ├── Module.js
│ │ │ ├── Networking.js
│ │ │ ├── PlatformConstants.js
│ │ │ ├── RCTAudioModule.js
│ │ │ ├── RCTExceptionsManager.js
│ │ │ ├── RCTSourceCode.js
│ │ │ ├── RCTVideoModule.js
│ │ │ ├── ReactVRConstants.js
│ │ │ ├── Timing.js
│ │ │ ├── UIManager.js
│ │ │ ├── VideoModule.js
│ │ │ ├── WebSocketModule.js
│ │ │ └── __tests__/
│ │ │ └── Module-test.js
│ │ ├── OVRUI/
│ │ │ ├── FourByFourRect/
│ │ │ │ └── VectorGeometry.js
│ │ │ ├── SDFFont/
│ │ │ │ ├── DefaultFont.js
│ │ │ │ └── SDFFont.js
│ │ │ └── UIView/
│ │ │ ├── GuiSys.js
│ │ │ ├── GuiSysEvent.js
│ │ │ ├── UIView.js
│ │ │ └── UIViewUtil.js
│ │ ├── ReactInstance.js
│ │ ├── ReactNativeContext.js
│ │ ├── Renderer/
│ │ │ ├── FlexboxImplementation.js
│ │ │ └── RendererTypes.js
│ │ ├── Runtime/
│ │ │ └── Runtime.js
│ │ ├── Utils/
│ │ │ ├── CubePano.js
│ │ │ ├── Fader.js
│ │ │ ├── HPano.js
│ │ │ ├── Math.js
│ │ │ ├── RCTBindedResource.js
│ │ │ ├── RCTHeadModel.js
│ │ │ ├── RCTInputControls.js
│ │ │ ├── RCTResourceManager.js
│ │ │ ├── RCTVideoPlayer.js
│ │ │ ├── RefCountCache.js
│ │ │ ├── ResourceManager.js
│ │ │ ├── StereoOffsetRepeats.js
│ │ │ ├── TextureManager.js
│ │ │ ├── Yoga.bundle.js
│ │ │ ├── __tests__/
│ │ │ │ ├── Fader-test.js
│ │ │ │ ├── RCTVideoPlayer-test.js
│ │ │ │ ├── RefCountCache-test.js
│ │ │ │ ├── TextureManager-test.js
│ │ │ │ └── merge-test.js
│ │ │ ├── createRemoteImageManager.js
│ │ │ ├── extractURL.js
│ │ │ ├── fetchResource.js
│ │ │ ├── isPositive.js
│ │ │ └── merge.js
│ │ ├── Video/
│ │ │ ├── BasicVideoPlayer.js
│ │ │ ├── OVRVideo.js
│ │ │ ├── VRVideoComponent.js
│ │ │ ├── VRVideoPlayer.js
│ │ │ └── getSupportedFormats.js
│ │ ├── Views/
│ │ │ ├── AmbientLight.js
│ │ │ ├── BaseMesh.js
│ │ │ ├── BaseView.js
│ │ │ ├── Box.js
│ │ │ ├── Cylinder.js
│ │ │ ├── CylindricalPanel.js
│ │ │ ├── DirectionalLight.js
│ │ │ ├── Image.js
│ │ │ ├── LiveEnvCamera.js
│ │ │ ├── Model.js
│ │ │ ├── Pano.js
│ │ │ ├── Plane.js
│ │ │ ├── PointLight.js
│ │ │ ├── Prefetch.js
│ │ │ ├── QuadPanel.js
│ │ │ ├── RawText.js
│ │ │ ├── Scene.js
│ │ │ ├── Sound.js
│ │ │ ├── Sphere.js
│ │ │ ├── SpotLight.js
│ │ │ ├── Text.js
│ │ │ ├── Video.js
│ │ │ ├── VideoPano.js
│ │ │ ├── View.js
│ │ │ └── __tests__/
│ │ │ ├── BaseMesh-test.js
│ │ │ ├── BaseView-test.js
│ │ │ ├── Image-test.js
│ │ │ ├── Model-test.js
│ │ │ ├── Text-test.js
│ │ │ └── View-test.js
│ │ ├── bundleFromLocation.js
│ │ └── createRootView.js
│ └── package.json
├── Samples/
│ ├── BasicAppTemplate/
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── src/
│ │ │ └── components/
│ │ │ ├── BasicAppTemplateInfoButton.react.js
│ │ │ └── BasicAppTemplateScenePage.react.js
│ │ └── static_assets/
│ │ └── video360.webm
│ ├── CustomPlayerSample/
│ │ ├── .gitignore
│ │ ├── DashVideoPlayer.js
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── HeadlockedSurfaces/
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── MediaAppTemplate/
│ │ ├── README.md
│ │ ├── client.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── src/
│ │ └── components/
│ │ ├── MediaAppTemplateInfoButton.react.js
│ │ ├── MediaAppTemplateScenePage.react.js
│ │ ├── MediaAppTemplateSubtitleText.react.js
│ │ └── MediaAppTemplateVideoScreen.react.js
│ ├── MultiRoot/
│ │ ├── CurrentPost.js
│ │ ├── ModelView.js
│ │ ├── README.md
│ │ ├── Store.js
│ │ ├── TopPosts.js
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── NativeModules/
│ │ ├── BrowserInfoModule.js
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ ├── Slideshow/
│ │ ├── client.js
│ │ ├── index.html
│ │ └── index.js
│ └── TourAppTemplate/
│ ├── RCTWorkInProgressSurface.js
│ ├── README.md
│ ├── client.js
│ ├── index.html
│ ├── index.js
│ ├── src/
│ │ ├── components/
│ │ │ ├── TourCylinderHotspot.js
│ │ │ ├── TourHotspot.js
│ │ │ ├── TourInfoButton.react.js
│ │ │ ├── TourLoadingSpinner.react.js
│ │ │ ├── TourNavButton.react.js
│ │ │ └── TourTooltip.react.js
│ │ └── customViews/
│ │ └── WorkInProgressSurface.js
│ └── static_assets/
│ ├── License.html
│ ├── Three-Cocktails.webm
│ └── tourOfTheChester.json
├── addons/
│ ├── react-360-cli/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── generators/
│ │ │ ├── __tests__/
│ │ │ │ └── index-test.generator.js
│ │ │ ├── babelrc.generator.js
│ │ │ ├── client.generator.js
│ │ │ ├── flowconfig.generator.js
│ │ │ ├── gitignore.generator.js
│ │ │ ├── index.generator.js
│ │ │ ├── index.html.generator.js
│ │ │ ├── package.json.generator.js
│ │ │ ├── rn-cli.config.generator.js
│ │ │ └── watchmanconfig.generator.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── copyAssets.js
│ │ ├── copyFile.js
│ │ ├── createFile.js
│ │ ├── ensureDir.js
│ │ ├── generateFiles.js
│ │ ├── getLatestVersion.js
│ │ ├── getPackager.js
│ │ ├── isDirectory.js
│ │ ├── listGenerators.js
│ │ └── makeModulePath.js
│ └── react-360-common-ui/
│ ├── LICENSE
│ ├── PATENTS
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── src/
│ ├── VideoControl.react.js
│ └── VideoPlayer.react.js
├── babel.config.js
├── defs/
│ ├── chalk.js
│ ├── react-360-runtime.js
│ ├── react-360.js
│ ├── three-gltf2-loader.js
│ ├── three.js
│ └── webvr.js
├── docs/
│ ├── animated.md
│ ├── async-storage.md
│ ├── audio.md
│ ├── controller-info.md
│ ├── entity.md
│ ├── environment.md
│ ├── example-basicapptemplate.md
│ ├── example-customplayer.md
│ ├── example-mediaapptemplate.md
│ ├── example-multisurface.md
│ ├── example-native-modules.md
│ ├── example-slideshow.md
│ ├── explore-code.md
│ ├── from-react-vr.md
│ ├── image.md
│ ├── input-handling.md
│ ├── integrate.md
│ ├── layout.md
│ ├── native-modules.md
│ ├── objects.md
│ ├── photos-and-videos.md
│ ├── publish.md
│ ├── runtime.md
│ ├── setup.md
│ ├── static-assets.md
│ ├── surfaces.md
│ ├── view.md
│ ├── vr-button.md
│ └── what-is.md
├── jest.config.js
├── lerna.json
├── lib-assets/
│ └── VideoControlGlyphs.js
├── package.json
├── packages/
│ ├── .gitignore
│ ├── README.md
│ ├── animated-react-webgl/
│ │ ├── README.md
│ │ ├── createAnimatedComponent.js
│ │ ├── index.js
│ │ └── package.json
│ ├── react-360/
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Container.js
│ │ ├── Glyphs.js
│ │ ├── Overlay.js
│ │ ├── React360.js
│ │ ├── WebVRCameraController.js
│ │ └── controller/
│ │ ├── ControllerModel.js
│ │ ├── ControllerRaycaster.js
│ │ ├── CursorModel.js
│ │ ├── createControllerBeamProgram.js
│ │ └── createCursorProgram.js
│ ├── react-360-controls/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Controls.js
│ │ ├── ControlsTypes.js
│ │ ├── DeviceOrientationCameraController.js
│ │ ├── MousePanCameraController.js
│ │ ├── MouseRaycaster.js
│ │ ├── R360Controls.js
│ │ ├── ScrollPanCameraController.js
│ │ └── TouchRaycaster.js
│ ├── react-360-native-compat/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── NativeCompat.js
│ │ ├── components/
│ │ │ └── VrButton.js
│ │ ├── modules/
│ │ │ ├── AsyncLocalStorage.js
│ │ │ ├── AudioModule.js
│ │ │ ├── ControllerInfo.js
│ │ │ ├── DeviceEventEmitter.js
│ │ │ ├── EnvironmentModule.js
│ │ │ ├── NativeModules.js
│ │ │ └── VideoModule.js
│ │ └── utilities/
│ │ ├── AsyncStorage.js
│ │ ├── ControllerInfo.js
│ │ └── Environment.js
│ ├── react-360-surfaces/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Environment.js
│ │ ├── R360Surfaces.js
│ │ ├── RingGeometry.js
│ │ ├── Surface.js
│ │ ├── computeCylinderIntersection.js
│ │ ├── computeFlatIntersection.js
│ │ ├── createEnvironmentCubemapProgram.js
│ │ ├── createEnvironmentSphereProgram.js
│ │ ├── createSurfaceProgram.js
│ │ ├── generateCylinderSurface.js
│ │ ├── generateEnvironmentSphere.js
│ │ └── generateFlatSurface.js
│ ├── react-webgl/
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── CanvasRoot.js
│ │ ├── Elements.js
│ │ ├── GLRoot.js
│ │ ├── HostConfig.js
│ │ ├── Pressable.react.js
│ │ ├── Primitives.js
│ │ ├── ReactWGL.js
│ │ ├── RenderTargetRoot.js
│ │ ├── StyleSheet/
│ │ │ ├── StyleSheet.js
│ │ │ ├── __tests__/
│ │ │ │ ├── areStylePropsEqual-test.js
│ │ │ │ └── flattenStyle-test.js
│ │ │ ├── areStylePropsEqual.js
│ │ │ └── flattenStyle.js
│ │ ├── Video.react.js
│ │ └── applyProps.js
│ ├── react-webgl-video-manager/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── RWGLVideo.js
│ │ ├── VideoManager.js
│ │ ├── VideoPlayer.js
│ │ ├── VideoTypes.js
│ │ ├── getExtension.js
│ │ └── implementations/
│ │ └── BrowserVideoImplementation.js
│ ├── ref-count-cache/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── RefCountCache.js
│ │ └── __tests__/
│ │ └── RefCountCache-test.js
│ ├── transition-value/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── Entry.js
│ │ ├── TimingFunctions.js
│ │ ├── Transition.js
│ │ └── TransitionValue.js
│ ├── vr-audio/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── AudioInstance.js
│ │ ├── AudioManager.js
│ │ ├── AudioMath.js
│ │ ├── AudioNode.js
│ │ ├── AudioTypes.js
│ │ └── VRAudio.js
│ ├── vr-input-source/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── GamepadState.js
│ │ ├── InputEventTypes.js
│ │ ├── VRInputSource.js
│ │ ├── WellKnownGamepads.js
│ │ ├── detectPrimaryButtons.js
│ │ └── emulatePosition.js
│ ├── vr-state/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ └── VRState.js
│ ├── webgl-lite/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── CubemapTexture.js
│ │ ├── FrameBuffer.js
│ │ ├── Geometry.js
│ │ ├── IndexBuffer.js
│ │ ├── Node.js
│ │ ├── Program.js
│ │ ├── ProgramManager.js
│ │ ├── RenderGroup.js
│ │ ├── Texture.js
│ │ ├── VertexBuffer.js
│ │ ├── WebGL.js
│ │ ├── __tests__/
│ │ │ ├── Program-test.js
│ │ │ └── ProgramManager-test.js
│ │ ├── createUniformSetter.js
│ │ ├── defaultValueForUniform.js
│ │ └── getAttributeSizeAndType.js
│ ├── webgl-lite-gltf/
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── BufferSource.js
│ │ ├── FileTypes.js
│ │ ├── GLTF.js
│ │ ├── GLTFShaderAttributes.js
│ │ ├── GLTFStructure.js
│ │ ├── base64ToArrayBuffer.js
│ │ ├── compareByteOffset.js
│ │ ├── createDataView.js
│ │ └── createGLTFProgram.js
│ ├── webgl-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README.md
│ │ ├── examples/
│ │ │ └── boilerplate/
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── GLUI.js
│ │ ├── Math.js
│ │ ├── StackingContext.js
│ │ ├── Surface.js
│ │ ├── TextureManager.js
│ │ ├── __tests__/
│ │ │ ├── StackingContext-test.js
│ │ │ └── colorStringToARGB-test.js
│ │ ├── colorStringToARGB.js
│ │ ├── primitives/
│ │ │ ├── GLTexturedView.js
│ │ │ ├── GLView.js
│ │ │ └── SDFRectangle.js
│ │ ├── recursiveLayout.js
│ │ ├── setStyle.js
│ │ ├── text/
│ │ │ ├── BreakIterator.js
│ │ │ ├── FontGeometry.js
│ │ │ ├── TextTypes.js
│ │ │ ├── __tests__/
│ │ │ │ ├── BreakIterator-test.js
│ │ │ │ └── wrapText-test.js
│ │ │ └── wrapText.js
│ │ ├── vendor/
│ │ │ └── Yoga.bundle.js
│ │ └── views/
│ │ ├── Image.js
│ │ ├── RawText.js
│ │ ├── ShadowView.js
│ │ ├── ShadowViewWebGL.js
│ │ ├── SurfaceView.js
│ │ ├── Text.js
│ │ ├── View.js
│ │ └── __tests__/
│ │ └── ShadowView-test.js
│ ├── webgl-ui-sdf-font/
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── src/
│ │ ├── SDF.js
│ │ ├── SDFDefaultFont.js
│ │ ├── SDFFontGeometry.js
│ │ ├── SDFTextImplementation.js
│ │ └── SDFTextShaders.js
│ └── webgl-ui-system-font/
│ ├── .gitignore
│ ├── README.md
│ ├── index.js
│ ├── package.json
│ └── src/
│ ├── Atlas.js
│ ├── AtlasNode.js
│ ├── FontImplementation.js
│ ├── FontMeasure.js
│ ├── SysFont.js
│ └── __tests__/
│ └── AtlasNode-test.js
├── render-tests/
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── runner-styles.css
│ ├── runner.html
│ ├── scripts/
│ │ └── test.js
│ ├── test-utils/
│ │ ├── assertColorEqual.js
│ │ └── getPixelData.js
│ ├── tests/
│ │ ├── render-tests.js
│ │ ├── test-basicgl.js
│ │ ├── test-geometry.js
│ │ ├── test-views.js
│ │ └── tests.js
│ └── webpack.config.js
├── scripts/
│ ├── build-packages.js
│ ├── bump-versions.js
│ ├── bundle.js
│ ├── install-bridge.js
│ ├── install-deps.js
│ ├── packager.js
│ └── project-paths.js
├── tools/
│ └── equirect2cubemap/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── eq2cm.cpp
│ ├── stb_image.h
│ └── stb_image_write.h
└── website/
├── blog/
│ └── 2018-05-02-blog-post.md
├── core/
│ └── Footer.js
├── i18n/
│ └── en.json
├── package.json
├── pages/
│ └── en/
│ ├── help.js
│ ├── index.js
│ └── users.js
├── sidebars.json
├── siteConfig.js
└── static/
├── css/
│ └── custom.css
└── sample/
├── client.bundle.js
├── index.bundle.js
└── index.html
Showing preview only (734K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8330 symbols across 358 files)
FILE: Libraries/Mesh/Box.js
method getDefaultProps (line 116) | getDefaultProps() {
method render (line 124) | render() {
FILE: Libraries/Mesh/Cylinder.js
method getDefaultProps (line 134) | getDefaultProps() {
method render (line 143) | render() {
FILE: Libraries/Mesh/Entity.js
method render (line 77) | render() {
FILE: Libraries/Mesh/Model.js
method getDefaultProps (line 130) | getDefaultProps() {
method render (line 134) | render() {
FILE: Libraries/Mesh/Plane.js
method getDefaultProps (line 109) | getDefaultProps() {
method render (line 116) | render() {
FILE: Libraries/Mesh/Sphere.js
method getDefaultProps (line 119) | getDefaultProps() {
method render (line 127) | render() {
FILE: Libraries/Sound/Sound.js
method componentWillMount (line 174) | componentWillMount() {
method componentWillReceiveProps (line 187) | componentWillReceiveProps(nextProps) {
method componentWillUnmount (line 205) | componentWillUnmount() {
method _subscribe (line 211) | _subscribe(playerState) {
method _unsubscribe (line 223) | _unsubscribe(playerState) {
method _play (line 231) | _play() {
method _pause (line 239) | _pause() {
method _seekTo (line 247) | _seekTo(timeSec) {
method _volumeChange (line 255) | _volumeChange(volume) {
method _mutedChange (line 259) | _mutedChange(muted) {
FILE: Libraries/Utilities/VrHeadModel.js
class VrHeadModelImpl (line 22) | class VrHeadModelImpl {
method constructor (line 23) | constructor() {
method _onReceivedHeadMatrix (line 41) | _onReceivedHeadMatrix(headMatrix, viewMatrix, fov, aspect) {
method positionOfHeadMatrix (line 53) | positionOfHeadMatrix(headMatrix) {
method rotationOfHeadMatrix (line 65) | rotationOfHeadMatrix(headMatrix, eulerOrder) {
method position (line 77) | position() {
method rotation (line 87) | rotation() {
method rotationInRadians (line 97) | rotationInRadians() {
method yawPitchRoll (line 112) | yawPitchRoll() {
method yawPitchRollInRadians (line 127) | yawPitchRollInRadians() {
method horizontalFov (line 135) | horizontalFov() {
method verticalFov (line 142) | verticalFov() {
method horizontalFovInRadians (line 149) | horizontalFovInRadians() {
method verticalFovInRadians (line 156) | verticalFovInRadians() {
method getHeadMatrix (line 162) | getHeadMatrix() {
method getVRStatus (line 169) | getVRStatus() {
method inVR (line 177) | inVR() {
FILE: Libraries/Utilities/VrMath.js
constant RAD_TO_DEG (line 16) | const RAD_TO_DEG = 180 / Math.PI;
constant DEG_TO_RAD (line 17) | const DEG_TO_RAD = Math.PI / 180;
FILE: Libraries/Utilities/VrSoundEffects.js
method if (line 32) | if (!formats) {
function play (line 89) | function play(formats: MultiFormatResource | Resource) {
function playOneShot (line 110) | function playOneShot(formats: MultiFormatResource | Resource) {
FILE: Libraries/Utilities/asset.js
function asset (line 19) | function asset(localPath: string, sourceExtra: Object = {}): AssetSource {
FILE: Libraries/Utilities/createGlyph.js
function createGlyph (line 17) | function createGlyph(glyph, name) {
FILE: Libraries/Utilities/staticAssetURL.js
function staticAssetURL (line 21) | function staticAssetURL(localPath: string): string {
FILE: Libraries/Utilities/texture.js
function texture (line 16) | function texture(name, options) {
FILE: Libraries/VRModules/ControllerInfo.js
class ControllerInfo (line 25) | class ControllerInfo {
method getControllers (line 31) | getControllers(): Promise<any> {
FILE: Libraries/VRModules/Environment.js
function clearBackground (line 28) | function clearBackground() {
function setBackgroundImage (line 32) | function setBackgroundImage(
function setBackgroundVideo (line 51) | function setBackgroundVideo(player: string, options: EnvironmentOptions ...
function preloadBackgroundImage (line 66) | function preloadBackgroundImage(url: Resource) {
function animateFade (line 74) | function animateFade(fadeLevel: number, fadeTime: number) {
FILE: Libraries/VRModules/ExternalAssets.js
class ExternalAssets (line 20) | class ExternalAssets {
method getAssetRoot (line 24) | getAssetRoot(): string {
FILE: Libraries/VRModules/History.js
class History (line 19) | class History {
method length (line 23) | length(): Promise<any> {
method state (line 30) | state(): Promise<any> {
method back (line 37) | back(): Promise<any> {
method forward (line 44) | forward(): Promise<any> {
method go (line 56) | go(delta: number): Promise<any> {
method pushState (line 70) | pushState(state: any, title: any, url: ?any): Promise<any> {
method replaceState (line 84) | replaceState(state: any, title: any, url: ?any): Promise<any> {
FILE: Libraries/VRModules/Location.js
class Location (line 20) | class Location {
method reload (line 26) | reload(forceReload: boolean) {
method replace (line 34) | replace(url: string) {
FILE: Libraries/VRModules/VideoModule.js
class VideoModuleImpl (line 94) | class VideoModuleImpl {
class VideoPlayerInstance (line 200) | class VideoPlayerInstance {
method constructor (line 204) | constructor(player: string) {
method play (line 209) | play(options: VideoOptions) {
method pause (line 214) | pause() {
method resume (line 219) | resume() {
method stop (line 224) | stop() {
method seek (line 229) | seek(timeMs: number) {
method setVolume (line 233) | setVolume(volume: number) {
method setMuted (line 239) | setMuted(muted: boolean) {
method setParams (line 246) | setParams(options: VideoPlayOptions) {
method destroy (line 250) | destroy() {
method addListener (line 254) | addListener(
method removeSubscription (line 261) | removeSubscription(subscription: EmitterSubscription) {
FILE: Libraries/VRReactOverrides/BackHandler.vr.js
method addEventListener (line 18) | addEventListener() {
FILE: Libraries/VRReactOverrides/HMRLoadingView.vr.js
class HMRLoadingView (line 14) | class HMRLoadingView {
method showMessage (line 17) | static showMessage(message: string) {
method hide (line 30) | static hide() {
FILE: Libraries/VRReactOverrides/Interpolation.vr.js
method if (line 127) | if (extrapolateLeft === 'identity') {
method if (line 280) | if (inputRange[i] >= input) {
FILE: Libraries/VRReactOverrides/NetworkOverlay.vr.js
class NetworkOverlay (line 15) | class NetworkOverlay extends React.Component {
method render (line 16) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/DatePickerAndroid.vr.js
class DummyDatePickerAndroid (line 16) | class DummyDatePickerAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/DatePickerIOS.vr.js
class DummyDatePickerIOS (line 16) | class DummyDatePickerIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/DrawerLayoutAndroid.vr.js
class DummyDrawerLayoutAndroid (line 16) | class DummyDrawerLayoutAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigationExperimental.vr.js
class DummyNavigationExperimental (line 16) | class DummyNavigationExperimental extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigatorBreadcrumbNavigationBarStyles.vr.js
class DummyNavigatorBreadcrumbNavigationBarStyles (line 16) | class DummyNavigatorBreadcrumbNavigationBarStyles extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/NavigatorIOS.vr.js
class DummyNavigatorIOS (line 16) | class DummyNavigatorIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/PickerAndroid.vr.js
class DummyPickerAndroid (line 16) | class DummyPickerAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/PickerIOS.vr.js
class DummyPickerIOS (line 16) | class DummyPickerIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/ProgressBarAndroid.vr.js
class DummyProgressBarAndroid (line 16) | class DummyProgressBarAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/ProgressViewIOS.vr.js
class DummyProgressViewIOS (line 16) | class DummyProgressViewIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/RecyclerViewBackedScrollview.vr.js
class DummyRecyclerViewBackedScrollView (line 16) | class DummyRecyclerViewBackedScrollView extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/SegmentedControlIOS.vr.js
class DummySegmentedControlIOS (line 16) | class DummySegmentedControlIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/SnapshotViewIOS.vr.js
class DummySnapshotViewIOS (line 16) | class DummySnapshotViewIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/StatusBarIOS.vr.js
class DummyStatusBarIOS (line 16) | class DummyStatusBarIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/TabBarIOS.vr.js
class DummyTabBarIOS (line 16) | class DummyTabBarIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/TimePickerAndroid.vr.js
class DummyTimePickerAndroid (line 16) | class DummyTimePickerAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/ToastAndroid.vr.js
class DummyToastAndroid (line 16) | class DummyToastAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/ToolbarAndroid.vr.js
class DummyToolbarAndroid (line 16) | class DummyToolbarAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/TouchableNativeFeedback.vr.js
class DummyTouchableNativeFeedback (line 16) | class DummyTouchableNativeFeedback extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/VibrationIOS.vr.js
class DummyVibrationIOS (line 16) | class DummyVibrationIOS extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/ViewPagerAndroid.vr.js
class DummyViewPagerAndroid (line 16) | class DummyViewPagerAndroid extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/PlatformSpecific/WebView.vr.js
class DummyWebView (line 16) | class DummyWebView extends React.Component {
method render (line 17) | render() {
FILE: Libraries/VRReactOverrides/RCTNetworking.vr.js
function convertHeadersMapToArray (line 22) | function convertHeadersMapToArray(headers: Object): Array<Header> {
function generateRequestId (line 31) | function generateRequestId(): number {
class RCTNetworking (line 39) | class RCTNetworking extends NativeEventEmitter {
method constructor (line 40) | constructor() {
method sendRequest (line 44) | sendRequest(
method abortRequest (line 72) | abortRequest(requestId: number) {
method clearCookies (line 76) | clearCookies(callback: (result: boolean) => any) {
function getParts (line 81) | function getParts(data) {
FILE: Libraries/VRReactOverrides/TVEventHandler.vr.js
function TVEventHandler (line 14) | function TVEventHandler() {}
FILE: Libraries/VRReactOverrides/Text.vr.js
method if (line 229) | if (!this._handlers) {
FILE: Libraries/VRReactOverrides/YellowBox.vr.js
class YellowBox (line 22) | class YellowBox extends React.Component {
method render (line 23) | render() {
FILE: Libraries/VRReactOverrides/processTransform.vr.js
function processTransform (line 31) | function processTransform(transform: Object): Object {
FILE: Libraries/Video/MediaPlayerState.js
class MediaPlayerState (line 48) | class MediaPlayerState extends EventEmitter {
method constructor (line 58) | constructor(options) {
method play (line 75) | play() {
method pause (line 83) | pause() {
method seekTo (line 92) | seekTo(timeSec) {
method registerUserGesture (line 103) | registerUserGesture(commandID, commandArgs, reactTag) {
method unregisterUserGesture (line 112) | unregisterUserGesture(reactTag) {
method setVolume (line 120) | setVolume(value) {
method setMuted (line 128) | setMuted(value) {
method onDurationChange (line 133) | onDurationChange(event) {
method onTimeUpdate (line 140) | onTimeUpdate(event) {
method onPlayStatusChange (line 147) | onPlayStatusChange(event) {
FILE: Libraries/Video/Video.js
method componentWillMount (line 183) | componentWillMount() {
method componentWillReceiveProps (line 189) | componentWillReceiveProps(nextProps) {
method componentWillUnmount (line 200) | componentWillUnmount() {
method _subscribe (line 206) | _subscribe(playerState) {
method _unsubscribe (line 220) | _unsubscribe(playerState) {
method _registerUserGesture (line 230) | _registerUserGesture(commandID, commandArgs, reactTag) {
method _unregisterUserGesture (line 238) | _unregisterUserGesture(reactTag) {
method _play (line 246) | _play() {
method _pause (line 254) | _pause() {
method _seekTo (line 262) | _seekTo(timeSec) {
method _volumeChange (line 270) | _volumeChange(volume) {
method _mutedChange (line 274) | _mutedChange(muted) {
FILE: Libraries/Video/VideoControl.js
constant IMAGE_PLAY (line 27) | const IMAGE_PLAY = createGlyph(ControlGlyphs.PLAY);
constant IMAGE_PAUSE (line 28) | const IMAGE_PAUSE = createGlyph(ControlGlyphs.PAUSE);
constant IMAGE_MUTE (line 29) | const IMAGE_MUTE = createGlyph(ControlGlyphs.MUTE);
constant IMAGE_UNMUTE (line 30) | const IMAGE_UNMUTE = createGlyph(ControlGlyphs.UNMUTE);
class VideoControlButton (line 32) | class VideoControlButton extends React.Component {
class VideoSliderBar (line 64) | class VideoSliderBar extends React.Component {
method componentWillMount (line 158) | componentWillMount() {
method componentWillReceiveProps (line 165) | componentWillReceiveProps(nextProps) {
method componentWillUnmount (line 176) | componentWillUnmount() {
method _subscribe (line 182) | _subscribe(playerState) {
method _unsubscribe (line 197) | _unsubscribe(playerState) {
method _volumeChange (line 205) | _volumeChange(volume) {
method _mutedChange (line 209) | _mutedChange(muted) {
method _durationChange (line 213) | _durationChange(duration) {
method _timeUpdate (line 217) | _timeUpdate(currentTime) {
method _playStatusChange (line 221) | _playStatusChange(playStatus) {
method _onPlayButtonClick (line 225) | _onPlayButtonClick() {
method _onPlayButtonPress (line 235) | _onPlayButtonPress(event) {
method _onPlayButtonRelease (line 249) | _onPlayButtonRelease(event) {
method _onPlayButtonExit (line 259) | _onPlayButtonExit() {
method _onMuteButtonClick (line 266) | _onMuteButtonClick() {
method _onVolumeClick (line 270) | _onVolumeClick(volume) {
method _onClickProgress (line 274) | _onClickProgress(progress) {
FILE: Libraries/Video/VideoUtils.js
function videoTimeFormat (line 12) | function videoTimeFormat(time) {
FILE: Libraries/VideoPano/VideoPano.js
method componentWillMount (line 193) | componentWillMount() {
method componentWillReceiveProps (line 199) | componentWillReceiveProps(nextProps) {
method componentWillUnmount (line 210) | componentWillUnmount() {
method _subscribe (line 216) | _subscribe(playerState) {
method _unsubscribe (line 230) | _unsubscribe(playerState) {
method _registerUserGesture (line 240) | _registerUserGesture(commandID, commandArgs, reactTag) {
method _unregisterUserGesture (line 248) | _unregisterUserGesture(reactTag) {
method _play (line 256) | _play() {
method _pause (line 264) | _pause() {
method _seekTo (line 272) | _seekTo(timeSec) {
method _volumeChange (line 280) | _volumeChange(volume) {
method _mutedChange (line 284) | _mutedChange(muted) {
FILE: Libraries/VrAnimated/VrAnimated.js
class AnimatedValueArray (line 21) | class AnimatedValueArray extends AnimatedWithChildren {
method constructor (line 24) | constructor(valueArray: Array<Object>) {
method getArrayElement (line 29) | getArrayElement(index: number) {
method __getValue (line 33) | __getValue(): Array<Object> {
method __getAnimatedValue (line 43) | __getAnimatedValue(): Array<Object> {
method __attach (line 53) | __attach(): void {
method __detach (line 61) | __detach(): void {
FILE: Libraries/VrButton/VrButton.js
constant SOUND_PROP_NAMES (line 151) | const SOUND_PROP_NAMES = [
constant LONG_PRESS_THRESHOLD (line 159) | const LONG_PRESS_THRESHOLD = 500;
constant MAX_MS_PLAYSOUND_AFTER_CLICK (line 160) | const MAX_MS_PLAYSOUND_AFTER_CLICK = 100;
function shouldPlaySound (line 162) | function shouldPlaySound(event) {
function maybeEmitMockEvent (line 183) | function maybeEmitMockEvent(node, eventType, nativeEvent) {
class VrButton (line 248) | class VrButton extends React.Component {
method componentWillMount (line 361) | componentWillMount() {
method componentWillReceiveProps (line 379) | componentWillReceiveProps(nextProps) {
method componentWillUnmount (line 394) | componentWillUnmount() {
method render (line 618) | render() {
FILE: Libraries/react-360.js
method View (line 18) | get View() {
method Image (line 21) | get Image() {
method Text (line 24) | get Text() {
method AmbientLight (line 29) | get AmbientLight() {
method Box (line 32) | get Box() {
method LiveEnvCamera (line 35) | get LiveEnvCamera() {
method Cylinder (line 38) | get Cylinder() {
method CylindricalPanel (line 41) | get CylindricalPanel() {
method QuadPanel (line 44) | get QuadPanel() {
method Plane (line 47) | get Plane() {
method Sphere (line 50) | get Sphere() {
method DirectionalLight (line 53) | get DirectionalLight() {
method PointLight (line 56) | get PointLight() {
method SpotLight (line 59) | get SpotLight() {
method Model (line 62) | get Model() {
method Pano (line 65) | get Pano() {
method Prefetch (line 68) | get Prefetch() {
method Scene (line 71) | get Scene() {
method Sound (line 74) | get Sound() {
method Video (line 77) | get Video() {
method VideoPano (line 80) | get VideoPano() {
method VideoControl (line 83) | get VideoControl() {
method MediaPlayerState (line 86) | get MediaPlayerState() {
method VrAnimated (line 89) | get VrAnimated() {
method VrButton (line 92) | get VrButton() {
method VrHeadModel (line 95) | get VrHeadModel() {
method VrSoundEffects (line 98) | get VrSoundEffects() {
method Environment (line 102) | get Environment() {
method asset (line 107) | get asset() {
method staticAssetURL (line 110) | get staticAssetURL() {
method texture (line 113) | get texture() {
method Animated (line 118) | get Animated() {
method AppRegistry (line 121) | get AppRegistry() {
method AsyncStorage (line 124) | get AsyncStorage() {
method NativeModules (line 127) | get NativeModules() {
method StyleSheet (line 130) | get StyleSheet() {
FILE: React360/js/Audio/MediaError.js
constant MEDIA_ERR_ABORTED (line 16) | const MEDIA_ERR_ABORTED = 1;
constant MEDIA_ERR_NETWORK (line 17) | const MEDIA_ERR_NETWORK = 2;
constant MEDIA_ERR_DECODE (line 18) | const MEDIA_ERR_DECODE = 3;
constant MEDIA_ERR_SRC_NOT_SUPPORTED (line 19) | const MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
class MediaError (line 21) | class MediaError {
method constructor (line 25) | constructor(code: number, message: string) {
FILE: React360/js/Audio/VRAudioBufferManager.js
function fetch (line 27) | function fetch(url: string, audioContext: VRAudioContext, onLoad: OnLoad...
function releaseRef (line 82) | function releaseRef(url: string) {
function _onRequestSucceed (line 91) | function _onRequestSucceed(url: string, buffer: AudioBuffer) {
function _onRequestError (line 103) | function _onRequestError(url: string, error: MediaError) {
FILE: React360/js/Audio/VRAudioComponent.js
constant DEFAULT_VOLUME (line 20) | const DEFAULT_VOLUME = 1.0;
constant DEFAULT_PANNING_MODEL (line 21) | const DEFAULT_PANNING_MODEL = 'HRTF';
constant DEFAULT_DISTANCE_MODEL (line 22) | const DEFAULT_DISTANCE_MODEL = 'inverse';
constant DEFAULT_CONE_INNER_ANGLE (line 23) | const DEFAULT_CONE_INNER_ANGLE = 60;
constant DEFAULT_CONE_OUTER_ANGLE (line 24) | const DEFAULT_CONE_OUTER_ANGLE = 120;
constant DEFAULT_CONE_OUTER_GAIN (line 25) | const DEFAULT_CONE_OUTER_GAIN = 0.25;
class VRAudioComponent (line 30) | class VRAudioComponent {
FILE: React360/js/Audio/VRAudioContext.js
constant IS_SUPPORTED (line 20) | const IS_SUPPORTED =
class VRAudioContext (line 27) | class VRAudioContext {
method constructor (line 30) | constructor() {
method supported (line 38) | static supported() {
method getWebAudioContext (line 42) | getWebAudioContext() {
method frame (line 46) | frame(camera: Camera) {
FILE: React360/js/Audio/getSupportedFormats.js
constant FORMATS (line 9) | const FORMATS = {
function getSupportedFormats (line 19) | function getSupportedFormats() {
FILE: React360/js/Bridge/WebWorkerBridge.js
constant BRIDGE_CODE (line 21) | const BRIDGE_CODE = `
class WebWorkerBridge (line 105) | class WebWorkerBridge extends Bridge {
method constructor (line 108) | constructor(options: WorkerBridgeOptions = {}) {
method postMessage (line 130) | postMessage(msg: string | Object) {
method getWorker (line 134) | getWorker() {
FILE: React360/js/Compositor/Audio/AudioNode.js
method constructor (line 29) | constructor(buffer: AudioBuffer, ctx: AudioContext) {
method _replaceBufferSource (line 54) | _replaceBufferSource() {
method isPlaying (line 66) | isPlaying(): boolean {
method setBuffer (line 70) | setBuffer(buffer: AudioBuffer) {
method setLoop (line 74) | setLoop(loop: boolean) {
method setVolume (line 78) | setVolume(vol: number) {
method getVolume (line 83) | getVolume(): number {
method setMuted (line 87) | setMuted(muted: boolean) {
method setPosition (line 95) | setPosition(pos: Vec3) {
method seekTo (line 99) | seekTo(time: number) {
method if (line 129) | if (!this._playing) {
method if (line 138) | if (!this._playing) {
FILE: React360/js/Compositor/Compositor.js
constant LEFT (line 25) | const LEFT = 'left';
constant RIGHT (line 26) | const RIGHT = 'right';
method for (line 58) | for (const player of customVideoPlayers) {
FILE: React360/js/Compositor/Cursor.js
constant CURSOR_MESH_SIZE (line 14) | const CURSOR_MESH_SIZE = 0.05;
FILE: React360/js/Compositor/Environment/CubemapGeometry.js
class CubemapGeometry (line 14) | class CubemapGeometry extends THREE.BufferGeometry {
method constructor (line 20) | constructor(size: number, columns: number, rows: number, expansionCoef...
method size (line 96) | get size(): number {
method columns (line 100) | get columns(): number {
method rows (line 104) | get rows(): number {
method expansionCoef (line 108) | get expansionCoef(): number {
FILE: React360/js/Compositor/Environment/Environment.js
function loadImage (line 34) | function loadImage(src: string): Promise<Image> {
method if (line 133) | if (this._resourceManager) {
method return (line 136) | return (this._resourceManager
method if (line 398) | if (this._screens[oldId] != null) {
FILE: React360/js/Compositor/Environment/Screen.js
class ScreenMesh (line 17) | class ScreenMesh extends THREE.Mesh {
FILE: React360/js/Compositor/Environment/StereoBasicTextureMaterial.js
constant DEFAULT_UNIFORM_COLOR (line 16) | const DEFAULT_UNIFORM_COLOR = new THREE.Color();
constant DEFAULT_OFFSET_REPEATS (line 17) | const DEFAULT_OFFSET_REPEATS = [new THREE.Vector4(0, 0, 1, 1)];
method constructor (line 23) | constructor(parameters: Object) {
method copy (line 49) | copy(source: StereoBasicTextureMaterial) {
method color (line 55) | set color(value: THREE.Color) {
method color (line 59) | get color(): THREE.Color {
method opacity (line 63) | set opacity(value: number) {
method opacity (line 67) | get opacity(): number {
FILE: React360/js/Compositor/Glyphs.js
constant SVG_NS (line 12) | const SVG_NS = 'http://www.w3.org/2000/svg';
constant COMPASS_PATHS (line 15) | const COMPASS_PATHS = [
constant VIEW_VR_PATHS (line 21) | const VIEW_VR_PATHS = [
function createGlyph (line 26) | function createGlyph(
function createCompassGlyph (line 55) | function createCompassGlyph(
function createViewInVrGlyph (line 63) | function createViewInVrGlyph(
FILE: React360/js/Compositor/Location.js
class Location (line 14) | class Location {
method constructor (line 19) | constructor(position?: Vec3, rotation?: Quaternion) {
method setWorldPosition (line 33) | setWorldPosition(x: number, y: number, z: number) {
method setWorldRotation (line 40) | setWorldRotation(x: number, y: number, z: number, w: number) {
method isDirty (line 48) | isDirty(): boolean {
method clearDirtyFlag (line 52) | clearDirtyFlag() {
FILE: React360/js/Compositor/Overlay.js
function setStyles (line 18) | function setStyles(node: Element, styles: {[style: string]: any}) {
constant WRAPPER_STYLES (line 37) | const WRAPPER_STYLES = {
constant COMPASS_WRAPPER_STYLES (line 46) | const COMPASS_WRAPPER_STYLES = {
constant COMPASS_STYLES (line 57) | const COMPASS_STYLES = {
constant VR_BUTTON_STYLES (line 62) | const VR_BUTTON_STYLES = {
constant VR_BUTTON_LABEL_STYLES (line 79) | const VR_BUTTON_LABEL_STYLES = {
FILE: React360/js/Compositor/Surface.js
constant DEFAULT_DENSITY (line 24) | const DEFAULT_DENSITY = 4680;
constant DEFAULT_RADIUS (line 25) | const DEFAULT_RADIUS = 4;
class Surface (line 50) | class Surface {
method constructor (line 68) | constructor(width: number, height: number, shape: ShapeType = SurfaceS...
method setDensity (line 117) | setDensity(density: number) {
method setRadius (line 129) | setRadius(radius: number) {
method setShape (line 144) | setShape(shape: ShapeType) {
method setAngle (line 159) | setAngle(yaw: number, pitch: number, roll: number = 0) {
method recenter (line 173) | recenter(cameraQuat: Quaternion, centerControl: SurfaceCenterControl) {
method setOpacity (line 195) | setOpacity(opacity: number) {
method setVisibility (line 205) | setVisibility(visible: boolean) {
method attachSubNode (line 209) | attachSubNode(subNode: THREE.Object3D) {
method removeSubNode (line 213) | removeSubNode(subNode: THREE.Object3D) {
method getWidth (line 217) | getWidth(): number {
method getHeight (line 221) | getHeight(): number {
method getScene (line 225) | getScene(): THREE.Scene {
method getCamera (line 229) | getCamera(): THREE.Camera {
method getRenderTarget (line 233) | getRenderTarget(): THREE.WebGLRenderTarget {
method getNode (line 237) | getNode(): THREE.Object3D {
method resize (line 245) | resize(width: number, height: number) {
method _regenerateGeometry (line 266) | _regenerateGeometry() {
method _recomputeOrientation (line 298) | _recomputeOrientation() {
method createCylinderGeometry (line 331) | static createCylinderGeometry(width: number, height: number, density: ...
method createFlatGeometry (line 350) | static createFlatGeometry(width: number, height: number, density: numb...
FILE: React360/js/Compositor/Video/BrowserVideoPlayer.js
constant FORMATS (line 21) | const FORMATS = {
function fillSupportCache (line 29) | function fillSupportCache() {
method if (line 262) | if (!supportCache) {
FILE: React360/js/Compositor/Video/VideoPlayerManager.js
class VideoPlayerManager (line 18) | class VideoPlayerManager {
method for (line 61) | for (const Impl of this._playerImplementations) {
method if (line 73) | if (this._supportCache != null) {
method if (line 82) | if (supportCache.indexOf(format) < 0) {
FILE: React360/js/Controls/CameraControllers/DeviceOrientationCameraController.js
constant DEFAULT_FOV (line 23) | const DEFAULT_FOV = Math.PI / 6;
constant DEG_TO_RAD (line 24) | const DEG_TO_RAD = Math.PI / 180;
constant HALF_PI (line 25) | const HALF_PI = Math.PI / 2;
constant TWO_PI (line 26) | const TWO_PI = Math.PI * 2;
constant SCREEN_ROTATION (line 27) | const SCREEN_ROTATION = [-Math.sqrt(0.5), 0, 0, Math.sqrt(0.5)];
function getScreenOrientation (line 36) | function getScreenOrientation(): number {
function isSupported (line 42) | function isSupported() {
FILE: React360/js/Controls/CameraControllers/MousePanCameraController.js
constant DEFAULT_FOV (line 15) | const DEFAULT_FOV = Math.PI / 6;
constant HALF_PI (line 16) | const HALF_PI = Math.PI / 2;
class MousePanCameraController (line 18) | class MousePanCameraController implements CameraController {
method constructor (line 31) | constructor(frame: HTMLElement, fov: number = DEFAULT_FOV) {
method _onMouseDown (line 59) | _onMouseDown(e: MouseEvent) {
method _onMouseMove (line 68) | _onMouseMove(e: MouseEvent) {
method _onMouseUp (line 84) | _onMouseUp() {
method _onTouchStart (line 88) | _onTouchStart(e: TouchEvent) {
method _onTouchMove (line 97) | _onTouchMove(e: TouchEvent) {
method _onTouchEnd (line 115) | _onTouchEnd(e: TouchEvent) {
method enable (line 119) | enable() {
method disable (line 125) | disable() {
method fillCameraProperties (line 131) | fillCameraProperties(position: Vec3, rotation: Quaternion): boolean {
FILE: React360/js/Controls/CameraControllers/ScrollPanCameraController.js
constant DEFAULT_FOV (line 15) | const DEFAULT_FOV = Math.PI / 6;
constant HALF_PI (line 16) | const HALF_PI = Math.PI / 2;
class ScrollPanCameraController (line 18) | class ScrollPanCameraController implements CameraController {
method constructor (line 27) | constructor(frame: HTMLElement, fov: number = DEFAULT_FOV) {
method _onWheel (line 40) | _onWheel(e: WheelEvent) {
method enable (line 55) | enable() {
method disable (line 59) | disable() {
method fillCameraProperties (line 63) | fillCameraProperties(position: Vec3, rotation: Quaternion): boolean {
FILE: React360/js/Controls/InputChannels/GamepadInputChannel.js
constant LONG_PRESS_TIME (line 30) | const LONG_PRESS_TIME = 500;
constant MAPPING_SHARED_TOUCH (line 33) | const MAPPING_SHARED_TOUCH = [
constant MAPPING_SHARED_MSMR (line 41) | const MAPPING_SHARED_MSMR = [
constant WELL_KNOWN_MAPPINGS (line 48) | const WELL_KNOWN_MAPPINGS = {
constant STANDARD_MAPPING (line 67) | const STANDARD_MAPPING = [
constant DEFAULT_MAPPING (line 86) | const DEFAULT_MAPPING = ['confirm'];
class GamepadInputChannel (line 88) | class GamepadInputChannel implements InputChannel {
FILE: React360/js/Controls/Raycasters/ControllerRaycaster.js
constant TYPE (line 18) | const TYPE = 'controller';
function basicArmModel (line 25) | function basicArmModel(origin: Vec3, orientation: Quaternion, hand: ?str...
method constructor (line 44) | constructor(scene: THREE.Scene) {
FILE: React360/js/Controls/Raycasters/MouseRaycaster.js
constant TYPE (line 15) | const TYPE = 'mouse';
class MouseRaycaster (line 17) | class MouseRaycaster implements Raycaster {
method constructor (line 24) | constructor(frame: HTMLElement, fov: number = 60) {
method _onMouseMove (line 35) | _onMouseMove(e: MouseEvent) {
method enable (line 47) | enable() {
method disable (line 51) | disable() {
method getType (line 55) | getType(): string {
method getMaxLength (line 59) | getMaxLength(): number {
method fillDirection (line 63) | fillDirection(direction: Vec3): boolean {
method fillOrigin (line 86) | fillOrigin(origin: Vec3): boolean {
method drawsCursor (line 97) | drawsCursor() {
method hasAbsoluteCoordinates (line 101) | hasAbsoluteCoordinates() {
FILE: React360/js/Controls/Raycasters/TouchRaycaster.js
constant TYPE (line 15) | const TYPE = 'touch';
constant TOUCH_RELEASE_DELAY (line 16) | const TOUCH_RELEASE_DELAY = 300;
class TouchRaycaster (line 18) | class TouchRaycaster implements Raycaster {
method constructor (line 26) | constructor(frame: HTMLElement, fov: number = 60) {
method _onTouchMove (line 44) | _onTouchMove(e: TouchEvent) {
method _onTouchEnd (line 70) | _onTouchEnd(e: TouchEvent) {
method _endTouch (line 77) | _endTouch() {
method _resetLastReading (line 89) | _resetLastReading() {
method enable (line 94) | enable() {
method disable (line 98) | disable() {
method getType (line 102) | getType(): string {
method getMaxLength (line 106) | getMaxLength(): number {
method fillDirection (line 110) | fillDirection(direction: Vec3): boolean {
method fillOrigin (line 133) | fillOrigin(origin: Vec3): boolean {
method drawsCursor (line 144) | drawsCursor() {
method hasAbsoluteCoordinates (line 148) | hasAbsoluteCoordinates() {
FILE: React360/js/Controls/Utils/ControllerRenderer.js
function createFadeMaterial (line 17) | function createFadeMaterial(color: string) {
function createControllerMesh (line 38) | function createControllerMesh(color: string = '#fff') {
FILE: React360/js/Events/MediaEvent.js
class MediaEvent (line 17) | class MediaEvent {
method constructor (line 18) | constructor(event: Object) {
FILE: React360/js/Executor/ReactExecutor.js
class ReactExecutor (line 16) | class ReactExecutor {
method constructor (line 19) | constructor() {
method poll (line 26) | poll() {
method moduleConfig (line 34) | moduleConfig(moduleDescription: Array<any>) {
method setConstant (line 38) | setConstant(key: string, value: void | null | boolean | number | strin...
method exec (line 42) | exec(url: string) {
method call (line 46) | call(module: string, fn: string, args: Array<any>) {
method invoke (line 50) | invoke(id: number, args: Array<any>) {
method flush (line 54) | flush() {
method replaceHiddenAttributes (line 63) | static replaceHiddenAttributes<T>(key: string, value: T): T | void {
FILE: React360/js/Executor/ReactExecutorIframe.js
class ReactExecutorIframe (line 14) | class ReactExecutorIframe extends ReactExecutor {
method constructor (line 17) | constructor(options: ExecutorOptions = {}) {
method moduleConfig (line 81) | moduleConfig(moduleDescription: Array<any>) {
method setConstant (line 92) | setConstant(key: string, value: void | null | boolean | number | strin...
method exec (line 101) | exec(url: string) {
method call (line 106) | call(module: string, fn: string, args: Array<any>) {
method invoke (line 116) | invoke(id: number, args: Array<any>) {
method flush (line 125) | flush() {
FILE: React360/js/Executor/ReactExecutorNonBlobWebWorker.js
class ReactExecutorNonBlobWebWorker (line 14) | class ReactExecutorNonBlobWebWorker extends ReactExecutor {
method constructor (line 17) | constructor(bridgeFileURL: string, options: ExecutorOptions = {}) {
method moduleConfig (line 38) | moduleConfig(moduleDescription: Array<any>) {
method setConstant (line 49) | setConstant(key: string, value: void | null | boolean | number | strin...
method exec (line 58) | exec(url: string) {
method call (line 63) | call(module: string, fn: string, args: Array<any>) {
method invoke (line 73) | invoke(id: number, args: Array<any>) {
method flush (line 82) | flush() {
FILE: React360/js/Executor/ReactExecutorWebWorker.js
class ReactExecutorWebWorker (line 14) | class ReactExecutorWebWorker extends ReactExecutor {
method constructor (line 17) | constructor(options: ExecutorOptions = {}) {
method moduleConfig (line 46) | moduleConfig(moduleDescription: Array<any>) {
method setConstant (line 57) | setConstant(key: string, value: void | null | boolean | number | strin...
method exec (line 66) | exec(url: string) {
method call (line 71) | call(module: string, fn: string, args: Array<any>) {
method invoke (line 81) | invoke(id: number, args: Array<any>) {
method flush (line 90) | flush() {
FILE: React360/js/Loaders/GLTF2ModelLoader.js
function recursiveDispose (line 22) | function recursiveDispose(node) {
method if (line 129) | if (this.mixer) {
FILE: React360/js/Loaders/ModelLoaderRegistry.js
method if (line 68) | if (modelLoaders[index].canLoad(modelDefinition)) {
FILE: React360/js/Loaders/ObjModelLoader.js
class ObjMeshInstance (line 33) | class ObjMeshInstance {
method constructor (line 46) | constructor(
method _setOBJ (line 96) | _setOBJ(value: string | null) {
method _setMTL (line 138) | _setMTL(value: string | null) {
method _updateMeshes (line 185) | _updateMeshes(previousGroup?: Group) {
method _getMaterial (line 279) | _getMaterial(name: string) {
method update (line 294) | update(definition: any): boolean {
method setLit (line 299) | setLit(flag: boolean): void {
method setTexture (line 307) | setTexture(value: string): void {}
method setWireframe (line 308) | setWireframe(value: boolean): void {
method frame (line 314) | frame(timeStamp: number, deltaTime: number) {}
method dispose (line 317) | dispose(): void {
class ObjModelLoader (line 338) | class ObjModelLoader {
method canLoad (line 340) | canLoad(definition: any): boolean {
method createInstance (line 345) | createInstance(
FILE: React360/js/Loaders/WavefrontOBJ/MTLLoader.js
method if (line 70) | if (tex.options.bumpMultiplier) {
method if (line 108) | if (isPhong) {
FILE: React360/js/Loaders/WavefrontOBJ/MTLParser.js
constant CHANNELS_TEST (line 67) | const CHANNELS_TEST = /^\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)/;
function readTextureOptions (line 100) | function readTextureOptions(remainder: string): Texture {
function readLine (line 304) | function readLine(state: MTLParserState, line: string, lineNumber: numbe...
FILE: React360/js/Loaders/WavefrontOBJ/OBJGroup.js
class OBJGroup (line 34) | class OBJGroup {
method constructor (line 43) | constructor(
method setSmoothing (line 68) | setSmoothing(smooth: boolean) {
method addFace (line 72) | addFace(face: Face) {
method addMaterial (line 104) | addMaterial(name: string, lib: string) {
method _pushGeometryPoint (line 118) | _pushGeometryPoint(position: number, uv: number, normal: number) {
FILE: React360/js/Loaders/WavefrontOBJ/OBJParser.js
constant POINTS_TEST (line 23) | const POINTS_TEST = /^\s+(-?[\d.eE+-]+)\s+(-?[\d.eE+-]+)\s+(-?[\d.eE+-]+)/;
constant TEXTURE_POINTS_TEST (line 24) | const TEXTURE_POINTS_TEST = /^\s+(-?[\d.eE+-]+)\s+(-?[\d.eE+-]+)/;
constant PAIR_TEST (line 25) | const PAIR_TEST = /^\s*(-?\d+)(\/-?\d+)?\s*/;
constant TRIPLET_TEST (line 26) | const TRIPLET_TEST = /^\s*(-?\d+)\/?(-?\d+)?(\/-?\d+)?\s*/;
constant SMOOTHING_TEST (line 27) | const SMOOTHING_TEST = /^\s*(\d+|on|off)/;
function readLine (line 164) | function readLine(
FILE: React360/js/Loaders/WavefrontOBJ/__tests__/OBJGroup-test.js
function generateOBJ (line 18) | function generateOBJ() {
FILE: React360/js/Loaders/WavefrontOBJ/__tests__/OBJLoader-test.js
function Deferred (line 39) | function Deferred() {
FILE: React360/js/Modules/AndroidConstants.js
class AndroidConstants (line 20) | class AndroidConstants extends Module {
method constructor (line 23) | constructor() {
FILE: React360/js/Modules/AsyncLocalStorage.js
class AsyncLocalStorage (line 25) | class AsyncLocalStorage extends Module {
method constructor (line 31) | constructor(rnctx: ReactNativeContext) {
method _prepareDB (line 47) | _prepareDB(): Promise<IDBDatabase> {
FILE: React360/js/Modules/AudioModule.js
constant FORWARD (line 25) | const FORWARD = [0, 0, -1];
function decodeAudioData (line 30) | function decodeAudioData(ctx, compressed) {
class AudioModule (line 37) | class AudioModule extends Module {
FILE: React360/js/Modules/ControllerInfo.js
function extractInfo (line 20) | function extractInfo(gamepad) {
class ControllerInfo (line 42) | class ControllerInfo extends Module {
method constructor (line 45) | constructor(rnctx: ReactNativeContext) {
method $getControllers (line 68) | $getControllers(success: number) {
FILE: React360/js/Modules/EnvironmentModule.js
method constructor (line 67) | constructor(env: Environment) {
method loadScene (line 74) | loadScene(scene: SceneDef, transition: SceneTransition) {
method preloadScene (line 101) | preloadScene(scene: SceneDef) {
method setScreen (line 117) | setScreen(screen: ScreenDef) {
method animateFade (line 127) | animateFade(fadeLevel: number, fadeTime: number) {
FILE: React360/js/Modules/ExternalAssets.js
class ExternalAssets (line 20) | class ExternalAssets extends Module {
method constructor (line 26) | constructor(assetRoot: string) {
FILE: React360/js/Modules/GlyphTextures.js
function drawGlyph (line 31) | function drawGlyph(
class GlyphTextures (line 88) | class GlyphTextures extends Module {
method constructor (line 91) | constructor(rnctx: ReactNativeContext) {
method registerGlyph (line 96) | registerGlyph(name: string, glyph: GlyphData) {
FILE: React360/js/Modules/History.js
method constructor (line 29) | constructor(rnctx: ReactNativeContext) {
method $length (line 49) | $length(success: number) {
method $state (line 57) | $state(success: number) {
method $back (line 65) | $back(success: number) {
method $forward (line 74) | $forward(success: number) {
method $go (line 87) | $go(delta: number, success: number) {
method if (line 104) | if (args.length < 4) {
method if (line 139) | if (args.length < 4) {
FILE: React360/js/Modules/LinkingManager.js
class LinkingManager (line 27) | class LinkingManager extends Module {
method constructor (line 33) | constructor(rnctx: ReactNativeContext) {
method $openURL (line 49) | $openURL(url: string, success: number, fail: number) {
method $canOpenURL (line 65) | $canOpenURL(url: string, success: number, fail: number) {
method $getInitialURL (line 74) | $getInitialURL(success: number, fail: number) {
FILE: React360/js/Modules/Location.js
class Location (line 21) | class Location extends Module {
method constructor (line 36) | constructor(rnctx: ReactNativeContext) {
method reload (line 57) | reload(forceReload: boolean) {
method replace (line 65) | replace(url: string) {
FILE: React360/js/Modules/LocationObserver.js
function encodePosition (line 23) | function encodePosition({coords, timestamp}) {
class LocationObserver (line 42) | class LocationObserver extends Module {
method constructor (line 47) | constructor(rnctx: ReactNativeContext) {
method requestAuthorization (line 53) | requestAuthorization() {
method getCurrentPosition (line 59) | getCurrentPosition(options: GeoOptions, onSuccess: number, onError: nu...
method startObserving (line 81) | startObserving(options: GeoOptions) {
method stopObserving (line 109) | stopObserving() {
FILE: React360/js/Modules/Module.js
class Module (line 40) | class Module {
method constructor (line 50) | constructor(name: string) {
method getName (line 61) | getName(): string {
method __describe (line 76) | __describe(): ModuleDescription {
FILE: React360/js/Modules/Networking.js
class Networking (line 26) | class Networking extends Module {
method constructor (line 32) | constructor(rnctx: ReactNativeContext) {
method sendRequest (line 47) | sendRequest(
method _handleText (line 114) | _handleText(requestId: number, responseData: string) {
method _handleBase64 (line 134) | _handleBase64(requestId: number, responseData: Blob) {
FILE: React360/js/Modules/RCTAudioModule.js
constant MEDIA_EVENT_CALLBACK_NAME (line 22) | const MEDIA_EVENT_CALLBACK_NAME = {
FILE: React360/js/Modules/RCTExceptionsManager.js
class RCTExceptionsManager (line 28) | class RCTExceptionsManager extends Module {
method constructor (line 31) | constructor() {
method displayStackAndMessage (line 36) | displayStackAndMessage(stack: Stack, message: string) {
method reportSoftException (line 56) | reportSoftException(message: string, stack: Stack, exceptionId: number) {
method reportFatalException (line 66) | reportFatalException(message: string, stack: Stack, exceptionId: numbe...
method updateExceptionMessage (line 77) | updateExceptionMessage(message: string, stack: Stack, exceptionId: num...
method reportUnhandledException (line 93) | reportUnhandledException(message: string, stack: Stack) {
FILE: React360/js/Modules/RCTSourceCode.js
class RCTSourceCode (line 21) | class RCTSourceCode extends Module {
method constructor (line 25) | constructor(rnctx: ReactNativeContext) {
method getScriptText (line 36) | getScriptText(resolve: number, reject: number) {
FILE: React360/js/Modules/RCTVideoModule.js
constant MEDIA_EVENT_CALLBACK_NAME (line 33) | const MEDIA_EVENT_CALLBACK_NAME = {
class RCTVideoModule (line 43) | class RCTVideoModule extends Module {
FILE: React360/js/Modules/ReactVRConstants.js
class ReactVRConstants (line 21) | class ReactVRConstants extends Module {
method constructor (line 28) | constructor() {
FILE: React360/js/Modules/Timing.js
constant IDLE_CALLBACK_THRESHOLD (line 23) | const IDLE_CALLBACK_THRESHOLD = 1;
class Timing (line 34) | class Timing extends Module {
FILE: React360/js/Modules/UIManager.js
constant STYLES_THAT_DONT_ALTER_LAYOUT (line 59) | const STYLES_THAT_DONT_ALTER_LAYOUT = {
class UIManager (line 88) | class UIManager extends Module {
method for (line 332) | for (let i = 0; i < moveFrom.length; i++) {
FILE: React360/js/Modules/VideoModule.js
function getExt (line 22) | function getExt(url: string) {
class VideoModule (line 30) | class VideoModule extends Module {
method constructor (line 36) | constructor(ctx: ReactNativeContext, videoPlayers: VideoPlayerManager) {
method _applyParams (line 47) | _applyParams(player: VideoPlayer, params: VideoPlayOptions) {
method _onVideoEvents (line 56) | _onVideoEvents(handle: string, event: Object) {
method createPlayer (line 67) | createPlayer(handle: string) {
method destroyPlayer (line 75) | destroyPlayer(handle: string) {
method play (line 79) | play(handle: string, options: VideoOptions) {
method pause (line 126) | pause(handle: string) {
method resume (line 134) | resume(handle: string) {
method stop (line 142) | stop(handle: string) {
method seek (line 151) | seek(handle: string, timeMs: number) {
method setParams (line 159) | setParams(handle: string, options: VideoPlayOptions) {
FILE: React360/js/Modules/WebSocketModule.js
class WebSocketModule (line 23) | class WebSocketModule extends Module {
FILE: React360/js/Modules/__tests__/Module-test.js
class ModuleSubclass (line 16) | class ModuleSubclass extends Module {
method constructor (line 17) | constructor() {
class Implementation (line 39) | class Implementation extends Module {
method constructor (line 40) | constructor() {
method normalMethod (line 44) | normalMethod(cb) {}
method $promiseMethod (line 46) | $promiseMethod(resolve, reject) {}
method otherNormalMethod (line 48) | otherNormalMethod() {}
FILE: React360/js/OVRUI/FourByFourRect/VectorGeometry.js
constant VG_MOVETO (line 18) | const VG_MOVETO = 0;
constant VG_LINETO (line 19) | const VG_LINETO = 1;
constant VG_BEZIERTO (line 20) | const VG_BEZIERTO = 2;
constant VG_KAPPA90 (line 22) | const VG_KAPPA90 = 0.5522847493;
function vgAddPoint (line 24) | function vgAddPoint(geom, pt) {
function vgAddPointBorder (line 38) | function vgAddPointBorder(geom, ptA, ptB) {
function vgTesselateBezier (line 54) | function vgTesselateBezier(geom, x1, y1, x2, y2, x3, y3, x4, y4, level) {
function vgTesselateBezierBorder (line 111) | function vgTesselateBezierBorder(
function vgFlattenPaths (line 218) | function vgFlattenPaths(commands, w, h) {
function vgFlattenPathsBorder (line 283) | function vgFlattenPathsBorder(commands, w, h) {
function vgRect (line 358) | function vgRect(x, y, w, h) {
function vgRoundedRectVarying (line 372) | function vgRoundedRectVarying(
function vgGenerateIndicesConvex (line 432) | function vgGenerateIndicesConvex(length) {
function vgRoundedBorderRectVarying (line 446) | function vgRoundedBorderRectVarying(
function vgGenerateIndicesBorder (line 580) | function vgGenerateIndicesBorder(offset, length) {
function VectorGeometry (line 594) | function VectorGeometry(
FILE: React360/js/OVRUI/SDFFont/DefaultFont.js
constant DEFAULT_FONT_TEXTURE (line 13) | const DEFAULT_FONT_TEXTURE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhE...
constant DEFAULT_FONT_JSON (line 15) | const DEFAULT_FONT_JSON = {
FILE: React360/js/OVRUI/SDFFont/SDFFont.js
constant BASELINE (line 31) | const BASELINE = 'baseline';
constant BOTTOM (line 32) | const BOTTOM = 'bottom';
constant CENTER (line 33) | const CENTER = 'center';
constant CENTER_FIXEDHEIGHT (line 34) | const CENTER_FIXEDHEIGHT = 'center_fixedheight';
constant CENTER_LINE (line 35) | const CENTER_LINE = 'center_line';
constant LEFT (line 36) | const LEFT = 'left';
constant RIGHT (line 37) | const RIGHT = 'right';
constant RIGHT_LINE (line 38) | const RIGHT_LINE = 'right_line';
constant TOP (line 39) | const TOP = 'top';
constant SDFFONT_MARKER_COLOR (line 40) | const SDFFONT_MARKER_COLOR = 0;
function isBreakable (line 45) | function isBreakable(code) {
function isNewLine (line 48) | function isNewLine(code) {
function isWhiteSpace (line 51) | function isWhiteSpace(code) {
function LineBreaker (line 119) | function LineBreaker(text, fontObject, fontHeight) {
function splitLines (line 213) | function splitLines(
function wrapLines (line 278) | function wrapLines(
function measureText (line 306) | function measureText(fontObject, text, fontHeight) {
function BitmapFontGeometry (line 380) | function BitmapFontGeometry(fontObject, text, fontHeight, config = {}) {
function loadFont (line 670) | function loadFont(fontName, fontTexture, loader) {
function addFontFallback (line 778) | function addFontFallback(fontObject, fallbackFontObject) {
FILE: React360/js/OVRUI/UIView/GuiSys.js
constant DEFAULT_Z_OFFSET_SCALE (line 39) | const DEFAULT_Z_OFFSET_SCALE = 0.001;
constant DEFAULT_CURSOR_DISTANCE (line 40) | const DEFAULT_CURSOR_DISTANCE = 2.0;
constant DEFAULT_CURSOR_WIDTH (line 41) | const DEFAULT_CURSOR_WIDTH = 0.025;
constant RENDERSORT_DISTANCE_MULTIPLIER (line 42) | const RENDERSORT_DISTANCE_MULTIPLIER = 64;
constant RENDERSORT_DISTANCE_SHIFT (line 43) | const RENDERSORT_DISTANCE_SHIFT = 9;
constant DEFAULT_TOUCH_RELEASE_DELAY (line 44) | const DEFAULT_TOUCH_RELEASE_DELAY = 300;
function matrixDistance (line 53) | function matrixDistance(matrixA, matrixB) {
function applyUpdates (line 60) | function applyUpdates(node, currentOpacity, updateContext, index, clipRe...
function updateBillboard (line 114) | function updateBillboard(node, updateContext) {
function intersectObject (line 123) | function intersectObject(object, raycaster, intersects) {
class GuiSys (line 137) | class GuiSys {
method constructor (line 138) | constructor(root, params = {}) {
method add (line 217) | add(child, container) {
method remove (line 229) | remove(child) {
method requestFrameFunction (line 239) | requestFrameFunction(func) {
method cancelFrameFunction (line 248) | cancelFrameFunction(uid) {
method applyUpdates (line 252) | applyUpdates(camera, root) {
method frameRenderUpdates (line 274) | frameRenderUpdates(camera) {
method frameInputEvents (line 315) | frameInputEvents(camera, renderer) {
method _processRayData (line 353) | _processRayData(
method setLastHit (line 463) | setLastHit(lastHit, source) {
method setCursorProperties (line 468) | setCursorProperties(rayOrigin, rayDirection, drawsCursor) {
method frame (line 479) | frame(camera, renderer) {
method updateLastHit (line 489) | updateLastHit(hit, source) {
method addCursor (line 578) | addCursor() {
method updateCursor (line 592) | updateCursor(camera) {
method makeDefaultCursor (line 657) | makeDefaultCursor() {
method _updateMouseCursorStyle (line 692) | _updateMouseCursorStyle(renderTarget) {
method _onPresentChange (line 703) | _onPresentChange(e) {
method _fireInputEvents (line 707) | _fireInputEvents(target) {
method _onTouchImmediate (line 735) | _onTouchImmediate(event) {
method registerOffscreenRender (line 746) | registerOffscreenRender(scene, camera, renderTarget) {
method unregisterOffscreenRender (line 752) | unregisterOffscreenRender(uid) {
method getOffscreenRenders (line 759) | getOffscreenRenders() {
method setFont (line 763) | setFont(font) {
method setMouseCursorInactiveStyle (line 770) | setMouseCursorInactiveStyle(style) {
method setMouseCursorActiveStyle (line 777) | setMouseCursorActiveStyle(style) {
method setCursorVisibility (line 784) | setCursorVisibility(visibility) {
method setCursorAutoDepth (line 796) | setCursorAutoDepth(flag) {
method setCursorFixedDistance (line 803) | setCursorFixedDistance(distance: number) {
method setRaycasters (line 810) | setRaycasters(raycasters) {
method setLastLocalIntersect (line 819) | setLastLocalIntersect(x, y) {
method getLastLocalIntersect (line 824) | getLastLocalIntersect() {
FILE: React360/js/OVRUI/UIView/GuiSysEvent.js
class GuiSysEvent (line 15) | class GuiSysEvent {
method constructor (line 16) | constructor(eventType, args) {
class UIViewEvent (line 28) | class UIViewEvent {
method constructor (line 29) | constructor(view, eventType, args) {
FILE: React360/js/OVRUI/UIView/UIView.js
constant DEFAULT_Z_OFFSET (line 27) | const DEFAULT_Z_OFFSET = 1;
constant BACKGROUND_MAT_INDEX (line 29) | const BACKGROUND_MAT_INDEX = 0;
constant BORDER_MAT_INDEX (line 30) | const BORDER_MAT_INDEX = 1;
constant IMAGE_MAT_INDEX (line 31) | const IMAGE_MAT_INDEX = 2;
constant DEFAULT_BACKGROUND_COLOR (line 33) | const DEFAULT_BACKGROUND_COLOR = 0xffffff;
constant DEFAULT_BORDER_COLOR (line 34) | const DEFAULT_BORDER_COLOR = 0x000000;
constant DEFAULT_IMAGE_COLOR (line 35) | const DEFAULT_IMAGE_COLOR = 0xffffff;
function UIView (line 77) | function UIView(guiSys, params) {
function intersectRectangle (line 855) | function intersectRectangle(frame, slop) {
FILE: React360/js/OVRUI/UIView/UIViewUtil.js
function setParams (line 17) | function setParams(object, params) {
function defaultScaleType (line 125) | function defaultScaleType() {
function resizeModetoScaleType (line 130) | function resizeModetoScaleType(resizeModeValue) {
FILE: React360/js/ReactInstance.js
constant DEFAULT_SURFACE_DEPTH (line 84) | const DEFAULT_SURFACE_DEPTH = 4;
FILE: React360/js/ReactNativeContext.js
constant ROOT_VIEW_INCREMENT (line 58) | const ROOT_VIEW_INCREMENT = 10;
constant ONMOVE_EPSILON (line 59) | const ONMOVE_EPSILON = 0.0001;
function describe (line 68) | function describe(ctx: ReactNativeContext) {
FILE: React360/js/Runtime/Runtime.js
method if (line 50) | if (object.visible === false || object.raycastDisabled === true) {
method if (line 92) | if (DEVTOOLS_FLAG.test(location.search)) {
method for (line 129) | for (let i = 0; i < modules.length; i++) {
method if (line 241) | if (this.guiSys) {
method for (line 249) | for (let i = 0; i < events.length; i++) {
FILE: React360/js/Utils/CubePano.js
function CubePanoBufferGeometry (line 21) | function CubePanoBufferGeometry(size, columns, rows, expansionCoef) {
FILE: React360/js/Utils/Fader.js
constant MAX_DELTA (line 22) | const MAX_DELTA = 1;
function clampFade (line 24) | function clampFade(value: number): number {
FILE: React360/js/Utils/HPano.js
function sign (line 21) | function sign(value) {
function clipLinePlane (line 25) | function clipLinePlane(plane, p0, p1, uv0, uv1) {
function zeroPrepend (line 103) | function zeroPrepend(str) {
constant HPANO_MAP_UNLOADED (line 111) | const HPANO_MAP_UNLOADED = 0;
constant HPANO_MAP_LOADING (line 112) | const HPANO_MAP_LOADING = 1;
constant HPANO_MAP_LOADED (line 113) | const HPANO_MAP_LOADED = 2;
function HPanoBufferGeometry (line 115) | function HPanoBufferGeometry(rad, maxLevels, baseurl) {
function fillQuad (line 185) | function fillQuad(ctx, tl, tr, bl, br, tile, side, level) {
FILE: React360/js/Utils/Math.js
function rotateByQuaternion (line 26) | function rotateByQuaternion(v: Vec3, q: Quaternion) {
function quaternionMultiply (line 55) | function quaternionMultiply(a: Quaternion, b: Quaternion) {
function quaternionPremultiply (line 71) | function quaternionPremultiply(b: Quaternion, a: Quaternion) {
function setQuatFromEuler (line 87) | function setQuatFromEuler(quat: Quaternion, x: number, y: number, z: num...
function setQuatFromAxisAngle (line 100) | function setQuatFromAxisAngle(quat: Quaternion, axis: Vec3, angle: numbe...
function setQuatFromXRotation (line 110) | function setQuatFromXRotation(quat: Quaternion, x: number) {
function setQuatFromYRotation (line 118) | function setQuatFromYRotation(quat: Quaternion, y: number) {
function setQuatFromZRotation (line 126) | function setQuatFromZRotation(quat: Quaternion, z: number) {
function matrixMultiply4 (line 134) | function matrixMultiply4(a: Mat4, b: Mat4) {
FILE: React360/js/Utils/RCTBindedResource.js
function RCTBindedResource (line 13) | function RCTBindedResource(resourceManager) {
FILE: React360/js/Utils/RCTHeadModel.js
class RCTHeadModel (line 17) | class RCTHeadModel {
method constructor (line 18) | constructor(rnctx) {
method sendHeadModel (line 22) | sendHeadModel(camera) {
method frame (line 61) | frame(camera) {
FILE: React360/js/Utils/RCTInputControls.js
function isConfirmEvent (line 119) | function isConfirmEvent(event: Object) {
FILE: React360/js/Utils/RCTResourceManager.js
function RCTResourceManager (line 17) | function RCTResourceManager() {
method isValidProtocol (line 40) | isValidProtocol(protocol) {
method genUrl (line 81) | genUrl(protocol, handle) {
FILE: React360/js/Utils/RCTVideoPlayer.js
function RCTVideoPlayer (line 20) | function RCTVideoPlayer(rnctx, tag) {
method _updateTexture (line 51) | _updateTexture() {
method _updateTextureWithPoster (line 61) | _updateTextureWithPoster() {
method _onCanPlay (line 65) | _onCanPlay(handle, event) {
method _onPlaying (line 79) | _onPlaying() {
method _onPause (line 84) | _onPause() {
method _onEnded (line 88) | _onEnded(handle, event) {
method _onError (line 100) | _onError(handle, event) {
method _onDurationChange (line 107) | _onDurationChange(handle, event) {
method _onTimeUpdate (line 117) | _onTimeUpdate(handle, event) {
method _chooseSupportSource (line 127) | _chooseSupportSource(source) {
method setSource (line 155) | setSource(source) {
method setPoster (line 218) | setPoster(url) {
method play (line 243) | play() {
method pause (line 249) | pause() {
method seekTo (line 255) | seekTo(position) {
method setPlayControl (line 259) | setPlayControl(playControl) {
method setAutoPlay (line 272) | setAutoPlay(autoPlay) {
method setLoop (line 276) | setLoop(loop) {
method setMuted (line 280) | setMuted(muted) {
method setVolume (line 287) | setVolume(volume) {
method dispose (line 295) | dispose() {
FILE: React360/js/Utils/RefCountCache.js
method if (line 72) | if (this._cleanup) {
FILE: React360/js/Utils/ResourceManager.js
method if (line 101) | if (this._resourceMap[url]) {
method if (line 105) | if (this._pendingResources[url]) {
method if (line 139) | if (this._refCountCache.has(url)) {
method for (line 145) | for (const url in this._resourceMap) {
FILE: React360/js/Utils/TextureManager.js
class TextureManager (line 34) | class TextureManager {
method if (line 101) | if (this._textureMap[url]) {
method if (line 105) | if (this._pendingTextures[url]) {
method if (line 110) | if (url.startsWith('texture://')) {
method if (line 157) | if (url.startsWith('texture://')) {
method if (line 161) | if (this._refCountCache.has(url)) {
FILE: React360/js/Utils/Yoga.bundle.js
function __webpack_require__ (line 49) | function __webpack_require__(moduleId) {
function defaultSetTimout (line 127) | function defaultSetTimout() {
function defaultClearTimeout (line 130) | function defaultClearTimeout () {
function runTimeout (line 153) | function runTimeout(fun) {
function runClearTimeout (line 178) | function runClearTimeout(marker) {
function cleanUpNextTick (line 210) | function cleanUpNextTick() {
function drainQueue (line 225) | function drainQueue() {
function Item (line 263) | function Item(fun, array) {
function noop (line 277) | function noop() {}
function globalEval (line 307) | function globalEval(x){eval.call(null,x)}
function assert (line 307) | function assert(condition,text){if(!condition){abort("Assertion failed: ...
function getCFunc (line 307) | function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=e...
function parseJSFunc (line 307) | function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRe...
function ensureJSsource (line 307) | function ensureJSsource(){if(!JSsource){JSsource={};for(var fun in JSfun...
function setValue (line 307) | function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(...
function getValue (line 307) | function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.l...
function allocate (line 307) | function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof ...
function getMemory (line 307) | function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(siz...
function Pointer_stringify (line 307) | function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var ...
function AsciiToString (line 307) | function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];i...
function stringToAscii (line 307) | function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,...
function UTF8ArrayToString (line 307) | function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[end...
function UTF8ToString (line 307) | function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}
function stringToUTF8Array (line 307) | function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(m...
function stringToUTF8 (line 307) | function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Arr...
function lengthBytesUTF8 (line 307) | function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){va...
function demangle (line 307) | function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"...
function demangleAll (line 307) | function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(...
function jsStackTrace (line 307) | function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new E...
function stackTrace (line 307) | function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"]...
function updateGlobalBufferViews (line 307) | function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(b...
function abortOnCannotGrowMemory (line 307) | function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. ...
function enlargeMemory (line 307) | function enlargeMemory(){abortOnCannotGrowMemory()}
function getTotalMemory (line 307) | function getTotalMemory(){return TOTAL_MEMORY}
function callRuntimeCallbacks (line 307) | function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var c...
function preRun (line 307) | function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="func...
function ensureInitRuntime (line 307) | function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitial...
function preMain (line 307) | function preMain(){callRuntimeCallbacks(__ATMAIN__)}
function exitRuntime (line 307) | function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}
function postRun (line 307) | function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="f...
function addOnPreRun (line 307) | function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}
function addOnInit (line 307) | function addOnInit(cb){__ATINIT__.unshift(cb)}
function addOnPreMain (line 307) | function addOnPreMain(cb){__ATMAIN__.unshift(cb)}
function addOnExit (line 307) | function addOnExit(cb){__ATEXIT__.unshift(cb)}
function addOnPostRun (line 307) | function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}
function intArrayFromString (line 307) | function intArrayFromString(stringy,dontAddNull,length){var len=length>0...
function intArrayToString (line 307) | function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i...
function writeStringToMemory (line 307) | function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce...
function writeArrayToMemory (line 307) | function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}
function writeAsciiToMemory (line 307) | function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.le...
function getUniqueRunDependency (line 307) | function getUniqueRunDependency(id){return id}
function addRunDependency (line 307) | function addRunDependency(id){runDependencies++;if(Module["monitorRunDep...
function removeRunDependency (line 307) | function removeRunDependency(id){runDependencies--;if(Module["monitorRun...
function _emscripten_asm_const_iiiiiiii (line 307) | function _emscripten_asm_const_iiiiiiii(code,a0,a1,a2,a3,a4,a5,a6){retur...
function _emscripten_asm_const_iiiii (line 307) | function _emscripten_asm_const_iiiii(code,a0,a1,a2,a3){return ASM_CONSTS...
function _emscripten_asm_const_iiidddddd (line 307) | function _emscripten_asm_const_iiidddddd(code,a0,a1,a2,a3,a4,a5,a6,a7){r...
function _emscripten_asm_const_iiididi (line 307) | function _emscripten_asm_const_iiididi(code,a0,a1,a2,a3,a4,a5){return AS...
function _emscripten_asm_const_iiii (line 307) | function _emscripten_asm_const_iiii(code,a0,a1,a2){return ASM_CONSTS[cod...
function _emscripten_asm_const_iiiid (line 307) | function _emscripten_asm_const_iiiid(code,a0,a1,a2,a3){return ASM_CONSTS...
function _emscripten_asm_const_iiiiii (line 307) | function _emscripten_asm_const_iiiiii(code,a0,a1,a2,a3,a4){return ASM_CO...
function _atexit (line 307) | function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}
function ___cxa_atexit (line 307) | function ___cxa_atexit(){return _atexit.apply(null,arguments)}
function _abort (line 307) | function _abort(){Module["abort"]()}
function __decorate (line 307) | function __decorate(decorators,target,key,desc){var c=arguments.length,r...
function _defineHidden (line 307) | function _defineHidden(value){return(function(target,key){Object.defineP...
function __nbind_free_external (line 307) | function __nbind_free_external(num){_nbind.externalList[num].dereference...
function __nbind_reference_external (line 307) | function __nbind_reference_external(num){_nbind.externalList[num].refere...
function _llvm_stackrestore (line 307) | function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLV...
function __nbind_register_pool (line 307) | function __nbind_register_pool(pageSize,usedPtr,rootPtr,pagePtr){_nbind....
function _emscripten_set_main_loop_timing (line 307) | function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.t...
function _emscripten_get_now (line 307) | function _emscripten_get_now(){abort()}
function _emscripten_set_main_loop (line 307) | function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noS...
function finish (line 307) | function finish(audio){if(done)return;done=true;Module["preloadedAudios"...
function fail (line 307) | function fail(){if(done)return;done=true;Module["preloadedAudios"][name]...
function encode64 (line 307) | function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkl...
function pointerLockChange (line 307) | function pointerLockChange(){Browser.pointerLock=document["pointerLockEl...
function fullscreenChange (line 307) | function fullscreenChange(){Browser.isFullscreen=false;var canvasContain...
function ___syscall6 (line 307) | function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var str...
function ___syscall54 (line 307) | function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return...
function _typeModule (line 307) | function _typeModule(self){var structureList=[[0,1,"X"],[1,1,"const X"],...
function __nbind_register_type (line 307) | function __nbind_register_type(id,namePtr){var name=_nbind.readAsciiStri...
function __nbind_register_callback_signature (line 307) | function __nbind_register_callback_signature(typeListPtr,typeCount){var ...
function __extends (line 307) | function __extends(Class,Parent){for(var key in Parent)if(Parent.hasOwnP...
function __nbind_register_class (line 307) | function __nbind_register_class(idListPtr,policyListPtr,superListPtr,upc...
function _removeAccessorPrefix (line 307) | function _removeAccessorPrefix(name){var prefixMatcher=/^[Gg]et_?([A-Z]?...
function __nbind_register_function (line 307) | function __nbind_register_function(boundID,policyListPtr,typeListPtr,typ...
function _nbind_value (line 307) | function _nbind_value(name,proto){if(!_nbind.typeNameTbl[name])_nbind.th...
function __nbind_get_value_object (line 307) | function __nbind_get_value_object(num,ptr){var obj=_nbind.popValue(num);...
function _emscripten_memcpy_big (line 307) | function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray...
function __nbind_register_primitive (line 307) | function __nbind_register_primitive(id,size,flags){var spec={flags:1024|...
function ___setErrNo (line 307) | function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module...
function _llvm_stacksave (line 307) | function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDS...
function ___syscall140 (line 307) | function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var s...
function ___syscall146 (line 307) | function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var s...
function __nbind_finish (line 307) | function __nbind_finish(){for(var _i=0,_a=_nbind.BindClass.list;_i<_a.le...
function Pool (line 307) | function Pool(){}
function constructType (line 307) | function constructType(kind,spec){var construct=kind==10240?_nbind.makeT...
function getType (line 307) | function getType(id){return typeIdTbl[id]}
function queryType (line 307) | function queryType(id){var placeholderFlag=HEAPU8[id];var paramCount=_nb...
function getTypes (line 307) | function getTypes(idList,place){return idList.map((function(id){return t...
function readTypeIdList (line 307) | function readTypeIdList(typeListPtr,typeCount){return Array.prototype.sl...
function readAsciiString (line 307) | function readAsciiString(ptr){var endPtr=ptr;while(HEAPU8[endPtr++]);ret...
function readPolicyList (line 307) | function readPolicyList(policyListPtr){var policyTbl={};if(policyListPtr...
function getDynCall (line 307) | function getDynCall(typeList,name){var mangleMap={float32_t:"d",float64_...
function addMethod (line 307) | function addMethod(obj,name,func,arity){var overload=obj[name];if(obj.ha...
function throwError (line 307) | function throwError(message){throw new Error(message)}
function BindType (line 307) | function BindType(){var _this=_super!==null&&_super.apply(this,arguments...
function PrimitiveType (line 307) | function PrimitiveType(spec){var _this=_super.call(this,spec)||this;var ...
function pushCString (line 307) | function pushCString(str,policyTbl){if(str===null||str===undefined){if(p...
function popCString (line 307) | function popCString(ptr){if(ptr===0)return null;return Module.Pointer_st...
function CStringType (line 307) | function CStringType(){var _this=_super!==null&&_super.apply(this,argume...
function BooleanType (line 307) | function BooleanType(){var _this=_super!==null&&_super.apply(this,argume...
function Wrapper (line 307) | function Wrapper(){}
function makeBound (line 307) | function makeBound(policyTbl,bindClass){var Bound=(function(_super){__ex...
function disableMember (line 307) | function disableMember(obj,name){function die(){throw new Error("Accessi...
function BindClass (line 307) | function BindClass(spec){var _this=_super.call(this,spec)||this;_this.wi...
function popPointer (line 307) | function popPointer(ptr,type){return ptr?new type.proto(_nbind.ptrMarker...
function pushPointer (line 307) | function pushPointer(obj,type,tryValue){if(!(obj instanceof _nbind.Wrapp...
function pushMutablePointer (line 307) | function pushMutablePointer(obj,type){var ptr=pushPointer(obj,type);if(o...
function BindClassPtr (line 307) | function BindClassPtr(spec){var _this=_super.call(this,spec)||this;_this...
function popShared (line 307) | function popShared(ptr,type){var shared=HEAPU32[ptr/4];var unsafe=HEAPU3...
function pushShared (line 307) | function pushShared(obj,type){if(!(obj instanceof type.proto))throw new ...
function pushMutableShared (line 307) | function pushMutableShared(obj,type){if(!(obj instanceof type.proto))thr...
function SharedClassPtr (line 307) | function SharedClassPtr(spec){var _this=_super.call(this,spec)||this;_th...
function External (line 307) | function External(data){this.refCount=1;this.data=data}
function popExternal (line 307) | function popExternal(num){var obj=_nbind.externalList[num];obj.dereferen...
function pushExternal (line 307) | function pushExternal(obj){var external=new External(obj);external.refer...
function ExternalType (line 307) | function ExternalType(){var _this=_super!==null&&_super.apply(this,argum...
function CallbackType (line 307) | function CallbackType(){var _this=_super!==null&&_super.apply(this,argum...
function pushValue (line 307) | function pushValue(value){var num=firstFreeValue;if(num){firstFreeValue=...
function popValue (line 307) | function popValue(num,type){if(!num)_nbind.throwError("Value type JavaSc...
function push64 (line 307) | function push64(num){if(typeof num=="number")return num;return pushValue...
function pop64 (line 307) | function pop64(num){if(num<valueBase)return num;return popValue((num-val...
function CreateValueType (line 307) | function CreateValueType(){return _super!==null&&_super.apply(this,argum...
function Int64Type (line 307) | function Int64Type(){var _this=_super!==null&&_super.apply(this,argument...
function pushArray (line 307) | function pushArray(arr,type){if(!arr)return 0;var length=arr.length;if((...
function popArray (line 307) | function popArray(ptr,type){if(ptr===0)return null;var length=HEAPU32[pt...
function ArrayType (line 307) | function ArrayType(spec){var _this=_super.call(this,spec)||this;_this.wi...
function pushString (line 307) | function pushString(str,policyTbl){if(str===null||str===undefined){if(po...
function popString (line 307) | function popString(ptr){if(ptr===0)return null;var length=HEAPU32[ptr/4]...
function StringType (line 307) | function StringType(){var _this=_super!==null&&_super.apply(this,argumen...
function makeArgList (line 307) | function makeArgList(argCount){return Array.apply(null,Array(argCount))....
function anyNeedsWireWrite (line 307) | function anyNeedsWireWrite(typeList,policyTbl){return typeList.reduce((f...
function anyNeedsWireRead (line 307) | function anyNeedsWireRead(typeList,policyTbl){return typeList.reduce((fu...
function makeWireRead (line 307) | function makeWireRead(convertParamList,policyTbl,type,expr){var paramNum...
function makeWireWrite (line 307) | function makeWireWrite(convertParamList,policyTbl,type,expr){var wireWri...
function buildCallerFunction (line 307) | function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWire...
function buildJSCallerFunction (line 307) | function buildJSCallerFunction(returnType,argTypeList){var argList=makeA...
function makeJSCaller (line 307) | function makeJSCaller(idList){var argCount=idList.length-1;var typeList=...
function makeMethodCaller (line 307) | function makeMethodCaller(ptrType,spec){var argCount=spec.typeList.lengt...
function makeCaller (line 307) | function makeCaller(spec){var argCount=spec.typeList.length-1;var typeLi...
function makeOverloader (line 307) | function makeOverloader(func,arity){var callerList=[];function call(){re...
function Resource (line 307) | function Resource(open,close){var _this=this;this.makeOpen=(function(){r...
function listResources (line 307) | function listResources(readList,writeList){var result=new Resource;for(v...
function ExternalBuffer (line 307) | function ExternalBuffer(buf,ptr){var _this=_super.call(this,buf)||this;_...
function getBuffer (line 307) | function getBuffer(buf){if(buf instanceof ArrayBuffer){return new Uint8A...
function pushBuffer (line 307) | function pushBuffer(buf,policyTbl){if(buf===null||buf===undefined){if(po...
function BufferType (line 307) | function BufferType(){var _this=_super!==null&&_super.apply(this,argumen...
function commitBuffer (line 307) | function commitBuffer(num,data,length){var buf=_nbind.externalList[num]....
function sweep (line 307) | function sweep(){for(var _i=0,dirtyList_1=dirtyList;_i<dirtyList_1.lengt...
function toggleLightGC (line 307) | function toggleLightGC(enable){if(enable){_nbind.mark=(function(obj){dir...
function invoke_viiiii (line 307) | function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"...
function invoke_vid (line 307) | function invoke_vid(index,a1,a2){try{Module["dynCall_vid"](index,a1,a2)}...
function invoke_fiff (line 307) | function invoke_fiff(index,a1,a2,a3){try{return Module["dynCall_fiff"](i...
function invoke_vi (line 307) | function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e)...
function invoke_vii (line 307) | function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}...
function invoke_ii (line 307) | function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}c...
function invoke_viddi (line 307) | function invoke_viddi(index,a1,a2,a3,a4){try{Module["dynCall_viddi"](ind...
function invoke_vidd (line 307) | function invoke_vidd(index,a1,a2,a3){try{Module["dynCall_vidd"](index,a1...
function invoke_iiii (line 307) | function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](i...
function invoke_diii (line 307) | function invoke_diii(index,a1,a2,a3){try{return Module["dynCall_diii"](i...
function invoke_di (line 307) | function invoke_di(index,a1){try{return Module["dynCall_di"](index,a1)}c...
function invoke_iid (line 307) | function invoke_iid(index,a1,a2){try{return Module["dynCall_iid"](index,...
function invoke_iii (line 307) | function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,...
function invoke_viiddi (line 307) | function invoke_viiddi(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiddi"...
function invoke_viiiiii (line 307) | function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_vii...
function invoke_dii (line 307) | function invoke_dii(index,a1,a2){try{return Module["dynCall_dii"](index,...
function invoke_i (line 307) | function invoke_i(index){try{return Module["dynCall_i"](index)}catch(e){...
function invoke_viiid (line 307) | function invoke_viiid(index,a1,a2,a3,a4){try{Module["dynCall_viiid"](ind...
function invoke_viififi (line 307) | function invoke_viififi(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_vii...
function invoke_viii (line 307) | function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1...
function invoke_v (line 307) | function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(type...
function invoke_viid (line 307) | function invoke_viid(index,a1,a2,a3){try{Module["dynCall_viid"](index,a1...
function invoke_idd (line 307) | function invoke_idd(index,a1,a2){try{return Module["dynCall_idd"](index,...
function invoke_viiii (line 307) | function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](ind...
function Eb (line 311) | function Eb(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}
function Fb (line 311) | function Fb(){return l|0}
function Gb (line 311) | function Gb(a){a=a|0;l=a}
function Hb (line 311) | function Hb(a,b){a=a|0;b=b|0;l=a;m=b}
function Ib (line 311) | function Ib(a,b){a=a|0;b=b|0;if(!p){p=a;q=b}}
function Jb (line 311) | function Jb(a){a=a|0;A=a}
function Kb (line 311) | function Kb(){return A|0}
function Lb (line 311) | function Lb(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f+8|0;d=f;b=lb[c...
function Mb (line 311) | function Mb(a){a=a|0;if(!a)return;jb[c[4]&127](c[a+8>>2]|0);jb[c[4]&127]...
function Nb (line 311) | function Nb(a){a=a|0;if(!a)a=0;else a=c[a+4>>2]|0;return a|0}
function Ob (line 311) | function Ob(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l...
function Pb (line 311) | function Pb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+8|0;e=(c[d>>2]|0)+(...
function Qb (line 311) | function Qb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=c[a+4>>2]|0;if(!e){g=...
function Rb (line 311) | function Rb(a,b){a=a|0;b=b|0;if(!(Nb(a)|0)){b=0;return b|0}b=c[(c[a+8>>2...
function Sb (line 311) | function Sb(){var a=0,b=0,d=0;d=l;l=l+16|0;b=d;a=lb[c[2]&31](980)|0;if(!...
function Tb (line 311) | function Tb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2...
function Ub (line 311) | function Ub(a,b,d){a=a|0;b=b|0;d=d|0;if(!a){d=Hz(c[491]|0,b,d)|0;return ...
function Vb (line 311) | function Vb(a){a=a|0;var b=0,d=0;b=a+940|0;d=c[b>>2]|0;if(d|0){Qb(c[d+94...
function Wb (line 311) | function Wb(a){a=a|0;return Nb(c[a+944>>2]|0)|0}
function Xb (line 311) | function Xb(a,b){a=a|0;b=b|0;return Rb(c[a+944>>2]|0,b)|0}
function Yb (line 311) | function Yb(a,b){a=a|0;b=b|0;if(!(Qb(c[a+944>>2]|0,b)|0))return;c[b+940>...
function Zb (line 311) | function Zb(b){b=b|0;var d=0;while(1){d=b+968|0;if(a[d>>0]|0){b=4;break}...
function _b (line 311) | function _b(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e+8|0;b=e;if(Wb(a)|0...
function $b (line 311) | function $b(){return c[2326]|0}
function ac (line 311) | function ac(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(b)if(!(...
function bc (line 311) | function bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=...
function cc (line 311) | function cc(a){a=a|0;return c[a+940>>2]|0}
function dc (line 311) | function dc(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(!(c[a+952>>2]|0)){c...
function ec (line 311) | function ec(b){b=b|0;return (a[b+968>>0]|0)!=0|0}
function fc (line 311) | function fc(a,b){a=a|0;b=b|0;if(!(Gz(a,b,400)|0))return;KA(a|0,b|0,400)|...
function gc (line 311) | function gc(a){a=a|0;var b=fb;b=T(g[a+44>>2]);if(hc(b)|0){b=T(g[a+40>>2]...
function hc (line 311) | function hc(a){a=T(a);return ((ic(a)|0)&2147483647)>>>0>2139095040|0}
function ic (line 311) | function ic(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}
function jc (line 311) | function jc(a){a=a|0;var b=fb;b=T(g[a+48>>2]);if(hc(b)|0){b=T(g[a+40>>2]...
function kc (line 311) | function kc(a,b){a=a|0;b=b|0;var d=0,e=0;e=lc(b)|0;d=c[e+4>>2]|0;b=a;c[b...
function lc (line 311) | function lc(a){a=a|0;var b=fb;switch(c[a+56>>2]|0){case 0:case 3:{b=T(g[...
function mc (line 311) | function mc(a,b){a=a|0;b=T(b);var c=0;c=a+40|0;if(!(T(g[c>>2])!=b))retur...
function nc (line 311) | function nc(a,b){a=a|0;b=b|0;c[a+964>>2]=b;return}
function oc (line 311) | function oc(a){a=a|0;return c[a+964>>2]|0}
function pc (line 311) | function pc(b,c){b=b|0;c=c|0;a[b+969>>0]=c&1;return}
function qc (line 311) | function qc(b){b=b|0;return (a[b+969>>0]|0)!=0|0}
function rc (line 311) | function rc(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;if((c[d>>2]|0)==(b|0))retur...
function sc (line 311) | function sc(a){a=a|0;return c[a+4>>2]|0}
function tc (line 311) | function tc(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;if((c[d>>2]|0)==(b|0))retur...
function uc (line 311) | function uc(a){a=a|0;return c[a+8>>2]|0}
function vc (line 311) | function vc(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;if((c[d>>2]|0)==(b|0))retu...
function wc (line 311) | function wc(a){a=a|0;return c[a+12>>2]|0}
function xc (line 311) | function xc(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;if((c[d>>2]|0)==(b|0))retu...
function yc (line 311) | function yc(a){a=a|0;return c[a+16>>2]|0}
function zc (line 311) | function zc(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;if((c[d>>2]|0)==(b|0))retu...
function Ac (line 311) | function Ac(a){a=a|0;return c[a+20>>2]|0}
function Bc (line 311) | function Bc(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;if((c[d>>2]|0)==(b|0))retu...
function Cc (line 311) | function Cc(a){a=a|0;return c[a+24>>2]|0}
function Dc (line 311) | function Dc(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;if((c[d>>2]|0)==(b|0))retu...
function Ec (line 311) | function Ec(a){a=a|0;return c[a+28>>2]|0}
function Fc (line 311) | function Fc(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;if((c[d>>2]|0)==(b|0))retu...
function Gc (line 311) | function Gc(a){a=a|0;return c[a+32>>2]|0}
function Hc (line 311) | function Hc(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;if((c[d>>2]|0)==(b|0))retu...
function Ic (line 311) | function Ic(a){a=a|0;return c[a+36>>2]|0}
function Jc (line 311) | function Jc(a,b){a=a|0;b=T(b);var c=0;c=a+44|0;if(!(T(g[c>>2])!=b))retur...
function Kc (line 311) | function Kc(a,b){a=a|0;b=T(b);var c=0;c=a+48|0;if(!(T(g[c>>2])!=b))retur...
function Lc (line 311) | function Lc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+52|0;d=a+56|0;if(!(T(g[e>>...
function Mc (line 311) | function Mc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+52|0;d=a+56|0;if(!(T(g[e>>...
function Nc (line 311) | function Nc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+132+(b<<3)|0;b=a+132+(...
function Oc (line 311) | function Oc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+132+(b<<3)|0;b=a+132+(...
function Pc (line 311) | function Pc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+132+(d<<3)|0;b=c[e+4>>2...
function Qc (line 311) | function Qc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+60+(b<<3)|0;b=a+60+(b<...
function Rc (line 311) | function Rc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+60+(b<<3)|0;b=a+60+(b<...
function Sc (line 311) | function Sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+60+(d<<3)|0;b=c[e+4>>2]...
function Tc (line 311) | function Tc(a,b){a=a|0;b=b|0;var d=0;d=a+60+(b<<3)+4|0;if((c[d>>2]|0)==3...
function Uc (line 311) | function Uc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+204+(b<<3)|0;b=a+204+(...
function Vc (line 311) | function Vc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+204+(b<<3)|0;b=a+204+(...
function Wc (line 311) | function Wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+204+(d<<3)|0;b=c[e+4>>2...
function Xc (line 311) | function Xc(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;e=a+276+(b<<3)|0;b=a+276+(...
function Yc (line 311) | function Yc(a,b){a=a|0;b=b|0;return T(g[a+276+(b<<3)>>2])}
function Zc (line 311) | function Zc(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+348|0;d=a+352|0;if(!(T(g[e...
function _c (line 311) | function _c(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+348|0;d=a+352|0;if(!(T(g[e...
function $c (line 311) | function $c(a){a=a|0;var b=0;b=a+352|0;if((c[b>>2]|0)==3)return;g[a+348>...
function ad (line 311) | function ad(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+348|0;d=c[e+4>>2]|0;b=a;c[b...
function bd (line 311) | function bd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+356|0;d=a+360|0;if(!(T(g[e...
function cd (line 311) | function cd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+356|0;d=a+360|0;if(!(T(g[e...
function dd (line 311) | function dd(a){a=a|0;var b=0;b=a+360|0;if((c[b>>2]|0)==3)return;g[a+356>...
function ed (line 311) | function ed(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+356|0;d=c[e+4>>2]|0;b=a;c[b...
function fd (line 311) | function fd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+364|0;d=a+368|0;if(!(T(g[e...
function gd (line 311) | function gd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+364|0;d=a+368|0;if(!(T(g[e...
function hd (line 311) | function hd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+364|0;d=c[e+4>>2]|0;b=a;c[b...
function id (line 311) | function id(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+372|0;d=a+376|0;if(!(T(g[e...
function jd (line 311) | function jd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+372|0;d=a+376|0;if(!(T(g[e...
function kd (line 311) | function kd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+372|0;d=c[e+4>>2]|0;b=a;c[b...
function ld (line 311) | function ld(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+380|0;d=a+384|0;if(!(T(g[e...
function md (line 311) | function md(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+380|0;d=a+384|0;if(!(T(g[e...
function nd (line 311) | function nd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+380|0;d=c[e+4>>2]|0;b=a;c[b...
function od (line 311) | function od(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+388|0;d=a+392|0;if(!(T(g[e...
function pd (line 311) | function pd(a,b){a=a|0;b=T(b);var d=0,e=0;e=a+388|0;d=a+392|0;if(!(T(g[e...
function qd (line 311) | function qd(a,b){a=a|0;b=b|0;var d=0,e=0;e=b+388|0;d=c[e+4>>2]|0;b=a;c[b...
function rd (line 311) | function rd(a,b){a=a|0;b=T(b);var c=0;c=a+396|0;if(!(T(g[c>>2])!=b))retu...
function sd (line 311) | function sd(a){a=a|0;return T(g[a+396>>2])}
function td (line 311) | function td(a){a=a|0;return T(g[a+400>>2])}
function ud (line 311) | function ud(a){a=a|0;return T(g[a+404>>2])}
function vd (line 311) | function vd(a){a=a|0;return T(g[a+408>>2])}
function wd (line 311) | function wd(a){a=a|0;return T(g[a+412>>2])}
function xd (line 311) | function xd(a){a=a|0;return T(g[a+416>>2])}
function yd (line 311) | function yd(a){a=a|0;return T(g[a+420>>2])}
function zd (line 311) | function zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>...
function Ad (line 311) | function Ad(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>...
function Bd (line 311) | function Bd(a,b){a=a|0;b=b|0;var d=0,e=0,f=fb;e=l;l=l+16|0;d=e;if(b>>>0>...
function Cd (line 311) | function Cd(a,b){a=a|0;b=b|0;Dd(a,b,0);return}
function Dd (line 311) | function Dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0...
function Ed (line 311) | function Ed(a){a=a|0;var b=0,c=0,d=0;d=l;l=l+16|0;c=d;if(!a){l=d;return}...
function Fd (line 311) | function Fd(a,b){a=a|0;b=T(b);var d=0,e=0;e=l;l=l+16|0;d=e;if(hc(b)|0){l...
function Gd (line 311) | function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0.0;f=l;l=l+32|0;e=f;d=c[...
function Hd (line 311) | function Hd(a){a=a|0;var b=0,d=0,e=0,f=0;e=l;l=l+16|0;d=e+8|0;b=e;f=a+8|...
function Id (line 311) | function Id(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if(b>>...
function Jd (line 311) | function Jd(a,b){a=a|0;b=b|0;var d=fb,e=0,f=0;f=l;l=l+32|0;e=f;d=T(g[b>>...
function Kd (line 311) | function Kd(a,b){a=T(a);b=T(b);var c=0;if(hc(a)|0){c=hc(b)|0;return c|0}...
function Ld (line 311) | function Ld(a,b){a=a|0;b=b|0;var d=0,e=fb;d=c[a+4>>2]|0;if((d|0)!=(c[b+4...
function Md (line 311) | function Md(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=T(b);c=c|0;d=T(d);e=e|0;f=T...
function Nd (line 311) | function Nd(a,b,c){a=a|0;b=T(b);c=T(c);if((a|0)==1)a=Kd(b,c)|0;else a=0;...
function Od (line 311) | function Od(a,b,c,d){a=a|0;b=T(b);c=c|0;d=T(d);if((a|0)==2&(c|0)==0)if(!...
function Pd (line 311) | function Pd(a,b,c,d,e){a=a|0;b=T(b);c=c|0;d=T(d);e=T(e);if(!((a|0)==2&(c...
function Qd (line 311) | function Qd(b,d,e,f,i,j,k,m,n,o){b=b|0;d=T(d);e=T(e);f=f|0;i=i|0;j=j|0;k...
function Rd (line 311) | function Rd(a,b,c){a=a|0;b=b|0;c=T(c);var d=fb;d=T(Xd(a,b,c));return T(d...
function Sd (line 311) | function Sd(a){a=a|0;return (a>>>0>60?4834:4834+(60-a)|0)|0}
function Td (line 311) | function Td(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f+12|0;e=f;c...
function Ud (line 311) | function Ud(b,d,e,f,h,i,k,m,n){b=b|0;d=T(d);e=T(e);f=f|0;h=h|0;i=i|0;k=T...
function Vd (line 311) | function Vd(a,b){a=a|0;b=b|0;a=c[a>>2]|0;return ((a|0)==0?(b|0?b:1):a)|0}
function Wd (line 311) | function Wd(a,b){a=a|0;b=b|0;var c=0;a:do if((b|0)==2){switch(a|0){case ...
function Xd (line 311) | function Xd(a,b,d){a=a|0;b=b|0;d=T(d);if(fe(b)|0?(c[a+96>>2]|0)!=0:0)a=a...
function Yd (line 311) | function Yd(a,b,d){a=a|0;b=b|0;d=T(d);if(fe(b)|0?(c[a+104>>2]|0)!=0:0)a=...
function Zd (line 311) | function Zd(a,b){a=a|0;b=b|0;var d=fb;if((fe(b)|0?c[a+312>>2]|0:0)?(d=T(...
function _d (line 311) | function _d(a,b){a=a|0;b=b|0;var d=fb;if((fe(b)|0?c[a+320>>2]|0:0)?(d=T(...
function $d (line 311) | function $d(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;if((fe(b)|0?c[a+240>>2]|0...
function ae (line 311) | function ae(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;if((fe(b)|0?c[a+248>>2]|0...
function be (line 311) | function be(a,b,d,e,f,h,i){a=a|0;b=T(b);d=T(d);e=e|0;f=f|0;h=T(h);i=T(i)...
function ce (line 311) | function ce(a,b,c,d,e,f,h){a=a|0;b=T(b);c=T(c);d=d|0;e=e|0;f=T(f);h=T(h)...
function de (line 311) | function de(a,b,c,d,e,f,h){a=a|0;b=T(b);c=T(c);d=d|0;e=e|0;f=T(f);h=T(h)...
function ee (line 311) | function ee(a,b){a=a|0;b=b|0;if(!(Ee(a)|0)){b=0;return b|0}b=Wd(2,b)|0;r...
function fe (line 311) | function fe(a){a=a|0;return (a|1|0)==3|0}
function ge (line 311) | function ge(a,b,c){a=a|0;b=b|0;c=T(c);c=T($d(a,b,c));return T(c+T(Zd(a,b...
function he (line 311) | function he(a,b,c){a=a|0;b=b|0;c=T(c);c=T(ae(a,b,c));return T(c+T(_d(a,b...
function ie (line 311) | function ie(a,b,c){a=a|0;b=b|0;c=T(c);var d=fb;d=T(ge(a,b,c));return T(d...
function je (line 311) | function je(a,b){a=a|0;b=T(b);switch(c[a+4>>2]|0){case 2:{b=T(T(T(g[a>>2...
function ke (line 311) | function ke(a){a=a|0;if(c[a+24>>2]|0){a=0;return a|0}if(T(gc(a))!=T(0.0)...
function le (line 311) | function le(b){b=b|0;var d=0,e=0;HA(b+400|0,0,536)|0;a[b+969>>0]=1;e=Wb(...
function me (line 311) | function me(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f+8|0;d=f;b=...
function ne (line 311) | function ne(a,b,d,e,f){a=a|0;b=b|0;d=T(d);e=T(e);f=T(f);var h=0,i=fb;h=W...
function oe (line 311) | function oe(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=T(d);e=e|0;f=T(f);h=T(h);i=...
function pe (line 311) | function pe(a,b,c,d,e){a=a|0;b=b|0;c=T(c);d=T(d);e=T(e);d=T(ze(a,b,c,d))...
function qe (line 311) | function qe(a,b,d){a=a|0;b=b|0;d=T(d);a=c[a+972+(c[1028+(b<<2)>>2]<<2)>>...
function re (line 311) | function re(a,b){a=a|0;b=b|0;b=b+20|0;b=c[((c[b>>2]|0)==0?a+16|0:b)>>2]|...
function se (line 311) | function se(a,b,d){a=T(a);b=b|0;d=d|0;var e=fb;switch(c[b>>2]|0){case 2:...
function te (line 311) | function te(a,b){a=a|0;b=b|0;a=a+132|0;if(fe(b)|0?c[(Id(a,4,1e3)|0)+4>>2...
function ue (line 311) | function ue(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;a=a+132|0;if(!(fe(b)|0?(e=...
function ve (line 311) | function ve(a,b,d){a=a|0;b=b|0;d=T(d);var e=fb;e=T(g[a+904+(c[1028+(b<<2...
function we (line 311) | function we(a){a=a|0;var b=0,d=0,e=0;if(Ee(c[a+4>>2]|0)|0){d=0;return d|...
function xe (line 311) | function xe(a,b){a=a|0;b=b|0;var d=fb;d=T(g[a+904+(c[1028+(b<<2)>>2]<<2)...
function ye (line 311) | function ye(a){a=a|0;var b=0,d=fb,e=0,f=0,h=0,i=0,j=0,k=fb,m=0;j=l;l=l+1...
function ze (line 311) | function ze(a,b,c,d){a=a|0;b=b|0;c=T(c);d=T(d);var e=fb,f=0;if(!(Ee(b)|0...
function Ae (line 311) | function Ae(a,b,d,e,f,h){a=a|0;b=b|0;d=T(d);e=e|0;f=T(f);h=h|0;var i=fb,...
function Be (line 311) | function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=fb,f=0;f=c[1028+(d<<2)>>2]|0;...
function Ce (line 311) | function Ce(a,b){a=a|0;b=b|0;a=a+132|0;if(fe(b)|0?c[(Id(a,5,1e3)|0)+4>>2...
function De (line 311) | function De(a,b,d){a=a|0;b=b|0;d=T(d);var e=0;a=a+132|0;if(!(fe(b)|0?(e=...
function Ee (line 311) | function Ee(a){a=a|0;return (a|1|0)==1|0}
function Fe (line 311) | function Fe(b){b=b|0;return (a[11740+b>>0]|0)!=0|0}
function Ge (line 311) | function Ge(a,b,c){a=a|0;b=b|0;c=T(c);if(te(a,b)|0){c=T(ue(a,b,c));retur...
function He (line 311) | function He(a,b){a=a|0;b=T(b);if((c[a+4>>2]|0)==3){b=T(0.0);return T(b)}...
function Ie (line 311) | function Ie(b,d,e,f){b=b|0;d=T(d);e=T(e);f=f|0;var g=fb,h=fb,i=0,j=0;c[2...
function Je (line 311) | function Je(a){a=a|0;var b=0,d=0,e=fb,f=fb,h=0,i=fb,j=fb,k=fb;b=a+400|0;...
function Ke (line 311) | function Ke(b,c){b=b|0;c=c|0;a[11740+b>>0]=c&1;return}
function Le (line 311) | function Le(){var a=0;a=zA(8)|0;Me(a);return a|0}
function Me (line 311) | function Me(a){a=a|0;var b=0;b=Sb()|0;c[a>>2]=b;c[a+4>>2]=0;nc(b,a);return}
function Ne (line 311) | function Ne(a){a=a|0;if(a|0){Oe(a);BA(a)}return}
function Oe (line 311) | function Oe(a){a=a|0;var b=0;Vb(c[a>>2]|0);b=a+4|0;a=c[b>>2]|0;c[b>>2]=0...
function Pe (line 311) | function Pe(a){a=a|0;Qe(a);return}
function Qe (line 311) | function Qe(a){a=a|0;a=c[a>>2]|0;if(a|0)Za(a|0);return}
function Re (line 311) | function Re(a){a=a|0;return oc(a)|0}
function Se (line 311) | function Se(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=0;if(b|0){P...
function Te (line 311) | function Te(a,b){a=a|0;b=b|0;fc(c[a>>2]|0,c[b>>2]|0);return}
function Ue (line 311) | function Ue(a,b){a=a|0;b=b|0;Bc(c[a>>2]|0,b);return}
function Ve (line 311) | function Ve(a,b,d){a=a|0;b=b|0;d=+d;Nc(c[a>>2]|0,b,T(d));return}
function We (line 311) | function We(a,b,d){a=a|0;b=b|0;d=+d;Oc(c[a>>2]|0,b,T(d));return}
function Xe (line 311) | function Xe(a,b){a=a|0;b=b|0;vc(c[a>>2]|0,b);return}
function Ye (line 311) | function Ye(a,b){a=a|0;b=b|0;xc(c[a>>2]|0,b);return}
function Ze (line 311) | function Ze(a,b){a=a|0;b=b|0;zc(c[a>>2]|0,b);return}
function _e (line 311) | function _e(a,b){a=a|0;b=b|0;rc(c[a>>2]|0,b);return}
function $e (line 311) | function $e(a,b){a=a|0;b=b|0;Dc(c[a>>2]|0,b);return}
function af (line 311) | function af(a,b){a=a|0;b=b|0;tc(c[a>>2]|0,b);return}
function bf (line 311) | function bf(a,b,d){a=a|0;b=b|0;d=+d;Qc(c[a>>2]|0,b,T(d));return}
function cf (line 311) | function cf(a,b,d){a=a|0;b=b|0;d=+d;Rc(c[a>>2]|0,b,T(d));return}
function df (line 311) | function df(a,b){a=a|0;b=b|0;Tc(c[a>>2]|0,b);return}
function ef (line 311) | function ef(a,b){a=a|0;b=b|0;Fc(c[a>>2]|0,b);return}
function ff (line 311) | function ff(a,b){a=a|0;b=b|0;Hc(c[a>>2]|0,b);return}
function gf (line 311) | function gf(a,b){a=a|0;b=+b;mc(c[a>>2]|0,T(b));return}
function hf (line 311) | function hf(a,b){a=a|0;b=+b;Lc(c[a>>2]|0,T(b));return}
function jf (line 311) | function jf(a,b){a=a|0;b=+b;Mc(c[a>>2]|0,T(b));return}
function kf (line 311) | function kf(a,b){a=a|0;b=+b;Jc(c[a>>2]|0,T(b));return}
function lf (line 311) | function lf(a,b){a=a|0;b=+b;Kc(c[a>>2]|0,T(b));return}
function mf (line 311) | function mf(a,b){a=a|0;b=+b;Zc(c[a>>2]|0,T(b));return}
function nf (line 311) | function nf(a,b){a=a|0;b=+b;_c(c[a>>2]|0,T(b));return}
function of (line 311) | function of(a){a=a|0;$c(c[a>>2]|0);return}
function pf (line 311) | function pf(a,b){a=a|0;b=+b;bd(c[a>>2]|0,T(b));return}
function qf (line 311) | function qf(a,b){a=a|0;b=+b;cd(c[a>>2]|0,T(b));return}
function rf (line 311) | function rf(a){a=a|0;dd(c[a>>2]|0);return}
function sf (line 311) | function sf(a,b){a=a|0;b=+b;fd(c[a>>2]|0,T(b));return}
function tf (line 311) | function tf(a,b){a=a|0;b=+b;gd(c[a>>2]|0,T(b));return}
function uf (line 311) | function uf(a,b){a=a|0;b=+b;id(c[a>>2]|0,T(b));return}
function vf (line 311) | function vf(a,b){a=a|0;b=+b;jd(c[a>>2]|0,T(b));return}
function wf (line 311) | function wf(a,b){a=a|0;b=+b;ld(c[a>>2]|0,T(b));return}
function xf (line 311) | function xf(a,b){a=a|0;b=+b;md(c[a>>2]|0,T(b));return}
function yf (line 311) | function yf(a,b){a=a|0;b=+b;od(c[a>>2]|0,T(b));return}
function zf (line 311) | function zf(a,b){a=a|0;b=+b;pd(c[a>>2]|0,T(b));return}
function Af (line 311) | function Af(a,b){a=a|0;b=+b;rd(c[a>>2]|0,T(b));return}
function Bf (line 311) | function Bf(a,b,d){a=a|0;b=b|0;d=+d;Xc(c[a>>2]|0,b,T(d));return}
function Cf (line 311) | function Cf(a,b,d){a=a|0;b=b|0;d=+d;Uc(c[a>>2]|0,b,T(d));return}
function Df (line 311) | function Df(a,b,d){a=a|0;b=b|0;d=+d;Vc(c[a>>2]|0,b,T(d));return}
function Ef (line 311) | function Ef(a){a=a|0;return Cc(c[a>>2]|0)|0}
function Ff (line 311) | function Ff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Pc(f,c...
function Gf (line 311) | function Gf(a,b){a=a|0;b=b|0;Hf(a,c[b+4>>2]|0,+T(g[b>>2]));return}
function Hf (line 311) | function Hf(a,b,d){a=a|0;b=b|0;d=+d;c[a>>2]=b;h[a+8>>3]=d;return}
function If (line 311) | function If(a){a=a|0;return wc(c[a>>2]|0)|0}
function Jf (line 311) | function Jf(a){a=a|0;return yc(c[a>>2]|0)|0}
function Kf (line 311) | function Kf(a){a=a|0;return Ac(c[a>>2]|0)|0}
function Lf (line 311) | function Lf(a){a=a|0;return sc(c[a>>2]|0)|0}
function Mf (line 311) | function Mf(a){a=a|0;return Ec(c[a>>2]|0)|0}
function Nf (line 311) | function Nf(a){a=a|0;return uc(c[a>>2]|0)|0}
function Of (line 311) | function Of(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Sc(f,c...
function Pf (line 311) | function Pf(a){a=a|0;return Gc(c[a>>2]|0)|0}
function Qf (line 311) | function Qf(a){a=a|0;return Ic(c[a>>2]|0)|0}
function Rf (line 311) | function Rf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;kc(e,c[b>>2]|0...
function Sf (line 311) | function Sf(a){a=a|0;return +(+T(gc(c[a>>2]|0)))}
function Tf (line 311) | function Tf(a){a=a|0;return +(+T(jc(c[a>>2]|0)))}
function Uf (line 311) | function Uf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;ad(e,c[b>>2]|0...
function Vf (line 311) | function Vf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;ed(e,c[b>>2]|0...
function Wf (line 311) | function Wf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;hd(e,c[b>>2]|0...
function Xf (line 311) | function Xf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;kd(e,c[b>>2]|0...
function Yf (line 311) | function Yf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;nd(e,c[b>>2]|0...
function Zf (line 311) | function Zf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;qd(e,c[b>>2]|0...
function _f (line 311) | function _f(a){a=a|0;return +(+T(sd(c[a>>2]|0)))}
function $f (line 311) | function $f(a,b){a=a|0;b=b|0;return +(+T(Yc(c[a>>2]|0,b)))}
function ag (line 311) | function ag(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wc(f,c...
function bg (line 311) | function bg(a,b,d){a=a|0;b=b|0;d=d|0;bc(c[a>>2]|0,c[b>>2]|0,d);return}
function cg (line 311) | function cg(a,b){a=a|0;b=b|0;Yb(c[a>>2]|0,c[b>>2]|0);return}
function dg (line 311) | function dg(a){a=a|0;return Wb(c[a>>2]|0)|0}
function eg (line 311) | function eg(a){a=a|0;a=cc(c[a>>2]|0)|0;if(!a)a=0;else a=Re(a)|0;return a|0}
function fg (line 311) | function fg(a,b){a=a|0;b=b|0;a=Xb(c[a>>2]|0,b)|0;if(!a)a=0;else a=Re(a)|...
function gg (line 311) | function gg(a,b){a=a|0;b=b|0;var d=0,e=0;e=zA(4)|0;hg(e,b);d=a+4|0;b=c[d...
function hg (line 311) | function hg(a,b){a=a|0;b=b|0;Bg(a,b);return}
function ig (line 311) | function ig(a,b,c,d,e,f){a=a|0;b=b|0;c=T(c);d=d|0;e=T(e);f=f|0;var i=0,j...
function jg (line 311) | function jg(a,b,d,e,f,g){a=a|0;b=b|0;d=+d;e=e|0;f=+f;g=g|0;var i=0,j=0,k...
function kg (line 311) | function kg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0...
function lg (line 311) | function lg(a){a=a|0;return c[a>>2]|0}
function mg (line 311) | function mg(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=d|0;e=+e;f=f|0;var g=0;g=og(...
function ng (line 311) | function ng(){var b=0;if(!(a[8840]|0)){yg(9316);b=8840;c[b>>2]=1;c[b+4>>...
function og (line 311) | function og(a){a=a|0;return c[a+8>>2]|0}
function pg (line 311) | function pg(a){a=+a;return +(+xg(a))}
function qg (line 311) | function qg(a){a=a|0;return wg(a)|0}
function rg (line 311) | function rg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f;e=b;if(!(e...
function sg (line 311) | function sg(b,d){b=b|0;d=d|0;vg(b,d);c[b+8>>2]=0;a[b+24>>0]=0;return}
function tg (line 311) | function tg(a,b){a=a|0;b=b|0;b=b+8|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2]...
function ug (line 311) | function ug(b){b=b|0;a[b+24>>0]=0;return}
function vg (line 311) | function vg(a,b){a=a|0;b=b|0;c[a>>2]=b;return}
function wg (line 311) | function wg(a){a=a|0;return a|0}
function xg (line 311) | function xg(a){a=+a;return +a}
function yg (line 311) | function yg(a){a=a|0;Ag(a,zg()|0,4);return}
function zg (line 311) | function zg(){return 1100}
function Ag (line 311) | function Ag(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=Xa(...
function Bg (line 311) | function Bg(a,b){a=a|0;b=b|0;b=c[b>>2]|0;c[a>>2]=b;ya(b|0);return}
function Cg (line 311) | function Cg(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;c[d>>2]=0;if(b|0){P...
function Dg (line 311) | function Dg(a){a=a|0;dc(c[a>>2]|0);return}
function Eg (line 311) | function Eg(a){a=a|0;return ec(c[a>>2]|0)|0}
function Fg (line 311) | function Fg(a,b){a=a|0;b=b|0;pc(c[a>>2]|0,b);return}
function Gg (line 311) | function Gg(a){a=a|0;return qc(c[a>>2]|0)|0}
function Hg (line 311) | function Hg(a,b,d,e){a=a|0;b=+b;d=+d;e=e|0;Ie(c[a>>2]|0,T(b),T(d),e);ret...
function Ig (line 311) | function Ig(a){a=a|0;return +(+T(td(c[a>>2]|0)))}
function Jg (line 311) | function Jg(a){a=a|0;return +(+T(vd(c[a>>2]|0)))}
function Kg (line 311) | function Kg(a){a=a|0;return +(+T(ud(c[a>>2]|0)))}
function Lg (line 311) | function Lg(a){a=a|0;return +(+T(wd(c[a>>2]|0)))}
function Mg (line 311) | function Mg(a){a=a|0;return +(+T(xd(c[a>>2]|0)))}
function Ng (line 311) | function Ng(a){a=a|0;return +(+T(yd(c[a>>2]|0)))}
function Og (line 311) | function Og(a,b){a=a|0;b=b|0;h[a>>3]=+T(td(c[b>>2]|0));h[a+8>>3]=+T(vd(c...
function Pg (line 311) | function Pg(a,b){a=a|0;b=b|0;return +(+T(zd(c[a>>2]|0,b)))}
function Qg (line 311) | function Qg(a,b){a=a|0;b=b|0;return +(+T(Ad(c[a>>2]|0,b)))}
function Rg (line 311) | function Rg(a,b){a=a|0;b=b|0;return +(+T(Bd(c[a>>2]|0,b)))}
function Sg (line 311) | function Sg(a,b){a=a|0;b=b|0;Ke(a,b);return}
function Tg (line 311) | function Tg(a){a=a|0;return Fe(a)|0}
function Ug (line 311) | function Ug(){return $b()|0}
function Vg (line 311) | function Vg(){Wg();Xg();Yg();Zg();_g();$g();ah();return}
function Wg (line 311) | function Wg(){lt(11756,6156,1);return}
function Xg (line 311) | function Xg(){Vs(11755,6127,3);return}
function Yg (line 311) | function Yg(){Es(11754,6110,1);return}
function Zg (line 311) | function Zg(){Sr(10416);return}
function _g (line 311) | function _g(){yr(10376);return}
function $g (line 311) | function $g(){Pq(10292);return}
function ah (line 311) | function ah(){bh(9328);return}
function bh (line 311) | function bh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
function ch (line 311) | function ch(a,b){a=a|0;b=b|0;var d=0;d=Eq()|0;c[a>>2]=d;Fq(d,b);Jt(c[a>>...
function dh (line 311) | function dh(a,b,c){a=a|0;b=b|0;c=c|0;nq(a,Ah(b)|0,c,0);return a|0}
function eh (line 311) | function eh(a,b,c){a=a|0;b=b|0;c=c|0;Yp(a,Ah(b)|0,c,0);return a|0}
function fh (line 311) | function fh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function gh (line 311) | function gh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function hh (line 311) | function hh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function ih (line 311) | function ih(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function jh (line 311) | function jh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function kh (line 311) | function kh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function lh (line 311) | function lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function mh (line 311) | function mh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function nh (line 311) | function nh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function oh (line 311) | function oh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function ph (line 311) | function ph(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function qh (line 311) | function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function rh (line 311) | function rh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function sh (line 311) | function sh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function th (line 311) | function th(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function uh (line 311) | function uh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function vh (line 311) | function vh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function wh (line 311) | function wh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function xh (line 311) | function xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function yh (line 311) | function yh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function zh (line 311) | function zh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Ah (line 311) | function Ah(a){a=a|0;return a|0}
function Bh (line 311) | function Bh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Ch (line 311) | function Ch(){var b=0,d=0;if(!(a[8848]|0)){Qh(9332);Fa(24,9332,o|0)|0;d=...
function Dh (line 311) | function Dh(a){a=a|0;return 0}
function Eh (line 311) | function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Fh (line 311) | function Fh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
function Gh (line 311) | function Gh(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=H...
function Hh (line 311) | function Hh(a){a=a|0;return c[a>>2]|0}
function Ih (line 311) | function Ih(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[a>>2]=b;c...
function Jh (line 311) | function Jh(a,b){a=a|0;b=b|0;return b|a|0}
function Kh (line 311) | function Kh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Lh (line 311) | function Lh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Mh (line 311) | function Mh(a){a=a|0;return 357913941}
function Nh (line 311) | function Nh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Oh (line 311) | function Oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Ph (line 311) | function Ph(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Qh (line 311) | function Qh(a){a=a|0;Uh(a);return}
function Rh (line 311) | function Rh(a){a=a|0;Th(a+24|0);return}
function Sh (line 311) | function Sh(a){a=a|0;return c[a>>2]|0}
function Th (line 311) | function Th(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Uh (line 311) | function Uh(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,4,b,Wh()|0,0);c[a+24>>2]=0;...
function Vh (line 311) | function Vh(){return 9424}
function Wh (line 311) | function Wh(){return 1176}
function Xh (line 311) | function Xh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function Yh (line 311) | function Yh(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c[a>>2]=b;c...
function Zh (line 311) | function Zh(a){a=a|0;return (c[(Ch()|0)+24>>2]|0)+(a*12|0)|0}
function _h (line 311) | function _h(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+48|0;e=f;d=c[b>>2]|...
function $h (line 311) | function $h(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(...
function ai (line 311) | function ai(){var b=0;if(!(a[8864]|0)){ri(9380);Fa(25,9380,o|0)|0;b=8864...
function bi (line 311) | function bi(a){a=a|0;return c[a+36>>2]|0}
function ci (line 311) | function ci(a,b){a=a|0;b=b|0;c[a>>2]=b;c[a+4>>2]=a;c[a+8>>2]=0;return}
function di (line 311) | function di(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>...
function ei (line 311) | function ei(a,b){a=a|0;b=b|0;li(b,a,a+8|0,a+16|0,a+24|0,a+32|0,a+40|0)|0...
function fi (line 311) | function fi(a){a=a|0;return c[(c[a+4>>2]|0)+8>>2]|0}
function gi (line 311) | function gi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;d=...
function hi (line 311) | function hi(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[...
function ii (line 311) | function ii(a){a=a|0;tA(a);BA(a);return}
function ji (line 311) | function ji(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}
function ki (line 311) | function ki(a){a=a|0;BA(a);return}
function li (line 311) | function li(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=m...
function mi (line 311) | function mi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var...
function ni (line 311) | function ni(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var h=0;h...
function oi (line 311) | function oi(){var b=0;if(!(a[8856]|0)){pi(9368);b=8856;c[b>>2]=1;c[b+4>>...
function pi (line 311) | function pi(a){a=a|0;Ag(a,qi()|0,6);return}
function qi (line 311) | function qi(){return 1148}
function ri (line 311) | function ri(a){a=a|0;xi(a);return}
function si (line 311) | function si(a){a=a|0;ti(a+24|0);ui(a+16|0);return}
function ti (line 311) | function ti(a){a=a|0;wi(a);return}
function ui (line 311) | function ui(a){a=a|0;vi(a);return}
function vi (line 311) | function vi(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;B...
function wi (line 311) | function wi(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;B...
function xi (line 311) | function xi(b){b=b|0;var d=0;c[b+16>>2]=0;c[b+20>>2]=0;d=b+24|0;c[d>>2]=...
function yi (line 311) | function yi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function zi (line 311) | function zi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Ai (line 311) | function Ai(){var b=0,d=0;if(!(a[8872]|0)){Ji(9428);Fa(26,9428,o|0)|0;d=...
function Bi (line 311) | function Bi(a){a=a|0;return 0}
function Ci (line 311) | function Ci(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Di (line 311) | function Di(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Ei (line 311) | function Ei(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Fi (line 311) | function Fi(a){a=a|0;return 357913941}
function Gi (line 311) | function Gi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Hi (line 311) | function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Ii (line 311) | function Ii(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Ji (line 311) | function Ji(a){a=a|0;Mi(a);return}
function Ki (line 311) | function Ki(a){a=a|0;Li(a+24|0);return}
function Li (line 311) | function Li(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Mi (line 311) | function Mi(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,Ni()|0,3);c[a+24>>2]=0;...
function Ni (line 311) | function Ni(){return 1180}
function Oi (line 311) | function Oi(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0;g...
function Pi (line 311) | function Pi(a){a=a|0;return (c[(Ai()|0)+24>>2]|0)+(a*12|0)|0}
function Qi (line 311) | function Qi(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=+e;f=f|0;var g=0,h=0,i=0,j=0,k...
function Ri (line 311) | function Ri(a,b){a=a|0;b=+b;return}
function Si (line 311) | function Si(a,b){a=a|0;b=+b;return +(+Wi(b))}
function Ti (line 311) | function Ti(a,b){a=a|0;b=b|0;return}
function Ui (line 311) | function Ui(a,b){a=a|0;b=b|0;return Vi(b)|0}
function Vi (line 311) | function Vi(a){a=a|0;return a|0}
function Wi (line 311) | function Wi(a){a=+a;return +a}
function Xi (line 311) | function Xi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Yi (line 311) | function Yi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Zi (line 311) | function Zi(){var b=0,d=0;if(!(a[8880]|0)){gj(9464);Fa(27,9464,o|0)|0;d=...
function _i (line 311) | function _i(a){a=a|0;return 0}
function $i (line 311) | function $i(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function aj (line 311) | function aj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function bj (line 311) | function bj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function cj (line 311) | function cj(a){a=a|0;return 357913941}
function dj (line 311) | function dj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function ej (line 311) | function ej(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function fj (line 311) | function fj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function gj (line 311) | function gj(a){a=a|0;jj(a);return}
function hj (line 311) | function hj(a){a=a|0;ij(a+24|0);return}
function ij (line 311) | function ij(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function jj (line 311) | function jj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,kj()|0,0);c[a+24>>2]=0;...
function kj (line 311) | function kj(){return 1196}
function lj (line 311) | function lj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function mj (line 311) | function mj(a){a=a|0;return (c[(Zi()|0)+24>>2]|0)+(a*12|0)|0}
function nj (line 311) | function nj(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function oj (line 311) | function oj(a){a=a|0;return a&1|0}
function pj (line 311) | function pj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function qj (line 311) | function qj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function rj (line 311) | function rj(){var b=0,d=0;if(!(a[8888]|0)){Aj(9500);Fa(28,9500,o|0)|0;d=...
function sj (line 311) | function sj(a){a=a|0;return 0}
function tj (line 311) | function tj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function uj (line 311) | function uj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function vj (line 311) | function vj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function wj (line 311) | function wj(a){a=a|0;return 357913941}
function xj (line 311) | function xj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function yj (line 311) | function yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function zj (line 311) | function zj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Aj (line 311) | function Aj(a){a=a|0;Dj(a);return}
function Bj (line 311) | function Bj(a){a=a|0;Cj(a+24|0);return}
function Cj (line 311) | function Cj(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Dj (line 311) | function Dj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,Ej()|0,1);c[a+24>>2]=0;...
function Ej (line 311) | function Ej(){return 1200}
function Fj (line 311) | function Fj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function Gj (line 311) | function Gj(a){a=a|0;return (c[(rj()|0)+24>>2]|0)+(a*12|0)|0}
function Hj (line 311) | function Hj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function Ij (line 311) | function Ij(a,b){a=a|0;b=b|0;return}
function Jj (line 311) | function Jj(a,b){a=a|0;b=b|0;return Kj(b)|0}
function Kj (line 311) | function Kj(a){a=a|0;return (a|0)!=0|0}
function Lj (line 311) | function Lj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Mj (line 311) | function Mj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Nj (line 311) | function Nj(){var b=0,d=0;if(!(a[8896]|0)){Wj(9536);Fa(29,9536,o|0)|0;d=...
function Oj (line 311) | function Oj(a){a=a|0;return 0}
function Pj (line 311) | function Pj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Qj (line 311) | function Qj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Rj (line 311) | function Rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Sj (line 311) | function Sj(a){a=a|0;return 357913941}
function Tj (line 311) | function Tj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Uj (line 311) | function Uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Vj (line 311) | function Vj(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Wj (line 311) | function Wj(a){a=a|0;Zj(a);return}
function Xj (line 311) | function Xj(a){a=a|0;Yj(a+24|0);return}
function Yj (line 311) | function Yj(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Zj (line 311) | function Zj(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,_j()|0,1);c[a+24>>2]=0;...
function _j (line 311) | function _j(){return 1208}
function $j (line 311) | function $j(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function ak (line 311) | function ak(a){a=a|0;return (c[(Nj()|0)+24>>2]|0)+(a*12|0)|0}
function bk (line 311) | function bk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function ck (line 311) | function ck(a,b){a=a|0;b=b|0;fk(a,b);return}
function dk (line 311) | function dk(a,b){a=a|0;b=b|0;return a|0}
function ek (line 311) | function ek(a){a=a|0;Pe(a);return}
function fk (line 311) | function fk(a,b){a=a|0;b=b|0;gk(a,b);return}
function gk (line 311) | function gk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}
function hk (line 311) | function hk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function ik (line 311) | function ik(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function jk (line 311) | function jk(){var b=0,d=0;if(!(a[8904]|0)){sk(9572);Fa(30,9572,o|0)|0;d=...
function kk (line 311) | function kk(a){a=a|0;return 0}
function lk (line 311) | function lk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function mk (line 311) | function mk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function nk (line 311) | function nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function ok (line 311) | function ok(a){a=a|0;return 357913941}
function pk (line 311) | function pk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function qk (line 311) | function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function rk (line 311) | function rk(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function sk (line 311) | function sk(a){a=a|0;vk(a);return}
function tk (line 311) | function tk(a){a=a|0;uk(a+24|0);return}
function uk (line 311) | function uk(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function vk (line 311) | function vk(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,wk()|0,1);c[a+24>>2]=0;...
function wk (line 311) | function wk(){return 1224}
function xk (line 311) | function xk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function yk (line 311) | function yk(a){a=a|0;return (c[(jk()|0)+24>>2]|0)+(a*12|0)|0}
function zk (line 311) | function zk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function Ak (line 311) | function Ak(a,b){a=a|0;b=b|0;return}
function Bk (line 311) | function Bk(a,b){a=a|0;b=b|0;return Dk(b)|0}
function Ck (line 311) | function Ck(a){a=a|0;return a|0}
function Dk (line 311) | function Dk(a){a=a|0;return a|0}
function Ek (line 311) | function Ek(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Fk (line 311) | function Fk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Gk (line 311) | function Gk(){var b=0,d=0;if(!(a[8912]|0)){Pk(9608);Fa(31,9608,o|0)|0;d=...
function Hk (line 311) | function Hk(a){a=a|0;return 0}
function Ik (line 311) | function Ik(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Jk (line 311) | function Jk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Kk (line 311) | function Kk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Lk (line 311) | function Lk(a){a=a|0;return 357913941}
function Mk (line 311) | function Mk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Nk (line 311) | function Nk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Ok (line 311) | function Ok(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Pk (line 311) | function Pk(a){a=a|0;Sk(a);return}
function Qk (line 311) | function Qk(a){a=a|0;Rk(a+24|0);return}
function Rk (line 311) | function Rk(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Sk (line 311) | function Sk(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,Tk()|0,0);c[a+24>>2]=0;...
function Tk (line 311) | function Tk(){return 1240}
function Uk (line 311) | function Uk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function Vk (line 311) | function Vk(a){a=a|0;return (c[(Gk()|0)+24>>2]|0)+(a*12|0)|0}
function Wk (line 311) | function Wk(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function Xk (line 311) | function Xk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Yk (line 311) | function Yk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Zk (line 311) | function Zk(){var b=0,d=0;if(!(a[8920]|0)){gl(9644);Fa(32,9644,o|0)|0;d=...
function _k (line 311) | function _k(a){a=a|0;return 0}
function $k (line 311) | function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function al (line 311) | function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function bl (line 311) | function bl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function cl (line 311) | function cl(a){a=a|0;return 357913941}
function dl (line 311) | function dl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function el (line 311) | function el(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function fl (line 311) | function fl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function gl (line 311) | function gl(a){a=a|0;jl(a);return}
function hl (line 311) | function hl(a){a=a|0;il(a+24|0);return}
function il (line 311) | function il(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function jl (line 311) | function jl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,7,b,kl()|0,0);c[a+24>>2]=0;...
function kl (line 311) | function kl(){return 1244}
function ll (line 311) | function ll(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function ml (line 311) | function ml(a){a=a|0;return (c[(Zk()|0)+24>>2]|0)+(a*12|0)|0}
function nl (line 311) | function nl(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function ol (line 311) | function ol(a){a=a|0;return a|0}
function pl (line 311) | function pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function ql (line 311) | function ql(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function rl (line 311) | function rl(){var b=0,d=0;if(!(a[8928]|0)){Al(9680);Fa(33,9680,o|0)|0;d=...
function sl (line 311) | function sl(a){a=a|0;return 0}
function tl (line 311) | function tl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function ul (line 311) | function ul(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function vl (line 311) | function vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function wl (line 311) | function wl(a){a=a|0;return 357913941}
function xl (line 311) | function xl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function yl (line 311) | function yl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function zl (line 311) | function zl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Al (line 311) | function Al(a){a=a|0;Dl(a);return}
function Bl (line 311) | function Bl(a){a=a|0;Cl(a+24|0);return}
function Cl (line 311) | function Cl(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Dl (line 311) | function Dl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,7,b,El()|0,1);c[a+24>>2]=0;...
function El (line 311) | function El(){return 1248}
function Fl (line 311) | function Fl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function Gl (line 311) | function Gl(a){a=a|0;return (c[(rl()|0)+24>>2]|0)+(a*12|0)|0}
function Hl (line 311) | function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function Il (line 311) | function Il(a,b){a=a|0;b=b|0;return}
function Jl (line 311) | function Jl(a,b){a=a|0;b=b|0;return Kl(b)|0}
function Kl (line 311) | function Kl(a){a=a|0;return a|0}
function Ll (line 311) | function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Ml (line 311) | function Ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Nl (line 311) | function Nl(){var b=0,d=0;if(!(a[8936]|0)){Wl(9716);Fa(34,9716,o|0)|0;d=...
function Ol (line 311) | function Ol(a){a=a|0;return 0}
function Pl (line 311) | function Pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Ql (line 311) | function Ql(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Rl (line 311) | function Rl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Sl (line 311) | function Sl(a){a=a|0;return 357913941}
function Tl (line 311) | function Tl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Ul (line 311) | function Ul(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Vl (line 311) | function Vl(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Wl (line 311) | function Wl(a){a=a|0;Zl(a);return}
function Xl (line 311) | function Xl(a){a=a|0;Yl(a+24|0);return}
function Yl (line 311) | function Yl(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Zl (line 311) | function Zl(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,_l()|0,2);c[a+24>>2]=0;...
function _l (line 311) | function _l(){return 1256}
function $l (line 311) | function $l(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l...
function am (line 311) | function am(a){a=a|0;return (c[(Nl()|0)+24>>2]|0)+(a*12|0)|0}
function bm (line 311) | function bm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l...
function cm (line 311) | function cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function dm (line 311) | function dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function em (line 311) | function em(){var b=0,d=0;if(!(a[8944]|0)){nm(9752);Fa(35,9752,o|0)|0;d=...
function fm (line 311) | function fm(a){a=a|0;return 0}
function gm (line 311) | function gm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function hm (line 311) | function hm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function im (line 311) | function im(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function jm (line 311) | function jm(a){a=a|0;return 357913941}
function km (line 311) | function km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function lm (line 311) | function lm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function mm (line 311) | function mm(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function nm (line 311) | function nm(a){a=a|0;qm(a);return}
function om (line 311) | function om(a){a=a|0;pm(a+24|0);return}
function pm (line 311) | function pm(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function qm (line 311) | function qm(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,rm()|0,1);c[a+24>>2]=0;...
function rm (line 311) | function rm(){return 1268}
function sm (line 311) | function sm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;f=l;l=l+1...
function tm (line 311) | function tm(a){a=a|0;return (c[(em()|0)+24>>2]|0)+(a*12|0)|0}
function um (line 311) | function um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0.0;g=l;l=l+16|0;...
function vm (line 311) | function vm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function wm (line 311) | function wm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function xm (line 311) | function xm(){var b=0,d=0;if(!(a[8952]|0)){Gm(9788);Fa(36,9788,o|0)|0;d=...
function ym (line 311) | function ym(a){a=a|0;return 0}
function zm (line 311) | function zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Am (line 311) | function Am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Bm (line 311) | function Bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Cm (line 311) | function Cm(a){a=a|0;return 357913941}
function Dm (line 311) | function Dm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Em (line 311) | function Em(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Fm (line 311) | function Fm(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Gm (line 311) | function Gm(a){a=a|0;Jm(a);return}
function Hm (line 311) | function Hm(a){a=a|0;Im(a+24|0);return}
function Im (line 311) | function Im(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Jm (line 311) | function Jm(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,5,b,Km()|0,0);c[a+24>>2]=0;...
function Km (line 311) | function Km(){return 1276}
function Lm (line 311) | function Lm(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e+...
function Mm (line 311) | function Mm(a){a=a|0;return (c[(xm()|0)+24>>2]|0)+(a*12|0)|0}
function Nm (line 311) | function Nm(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function Om (line 311) | function Om(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Pm (line 311) | function Pm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Qm (line 311) | function Qm(){var b=0,d=0;if(!(a[8960]|0)){Zm(9824);Fa(37,9824,o|0)|0;d=...
function Rm (line 311) | function Rm(a){a=a|0;return 0}
function Sm (line 311) | function Sm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Tm (line 311) | function Tm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Um (line 311) | function Um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Vm (line 311) | function Vm(a){a=a|0;return 357913941}
function Wm (line 311) | function Wm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Xm (line 311) | function Xm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Ym (line 311) | function Ym(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Zm (line 311) | function Zm(a){a=a|0;an(a);return}
function _m (line 311) | function _m(a){a=a|0;$m(a+24|0);return}
function $m (line 311) | function $m(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function an (line 311) | function an(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,bn()|0,0);c[a+24>>2]=0;...
function bn (line 311) | function bn(){return 1320}
function cn (line 311) | function cn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function dn (line 311) | function dn(a){a=a|0;return (c[(Qm()|0)+24>>2]|0)+(a*12|0)|0}
function en (line 311) | function en(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b>>2]|...
function fn (line 311) | function fn(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(...
function gn (line 311) | function gn(){var b=0;if(!(a[8976]|0)){un(9872);Fa(25,9872,o|0)|0;b=8976...
function hn (line 311) | function hn(a,b){a=a|0;b=b|0;on(b,a,a+8|0)|0;return}
function jn (line 311) | function jn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|...
function kn (line 311) | function kn(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[...
function ln (line 311) | function ln(a){a=a|0;tA(a);BA(a);return}
function mn (line 311) | function mn(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}
function nn (line 311) | function nn(a){a=a|0;BA(a);return}
function on (line 311) | function on(a,b,d){a=a|0;b=b|0;d=d|0;b=pn(c[a>>2]|0,b,d)|0;d=a+4|0;c[(c[...
function pn (line 311) | function pn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wy(f);...
function qn (line 311) | function qn(a,b,c){a=a|0;b=b|0;c=+c;var d=0;d=og(rn()|0)|0;b=qg(b)|0;ret...
function rn (line 311) | function rn(){var b=0;if(!(a[8968]|0)){sn(9860);b=8968;c[b>>2]=1;c[b+4>>...
function sn (line 311) | function sn(a){a=a|0;Ag(a,tn()|0,2);return}
function tn (line 311) | function tn(){return 1308}
function un (line 311) | function un(a){a=a|0;xi(a);return}
function vn (line 311) | function vn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function wn (line 311) | function wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function xn (line 311) | function xn(){var b=0,d=0;if(!(a[8984]|0)){Gn(9916);Fa(38,9916,o|0)|0;d=...
function yn (line 311) | function yn(a){a=a|0;return 0}
function zn (line 311) | function zn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function An (line 311) | function An(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Bn (line 311) | function Bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Cn (line 311) | function Cn(a){a=a|0;return 357913941}
function Dn (line 312) | function Dn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function En (line 312) | function En(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Fn (line 312) | function Fn(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Gn (line 312) | function Gn(a){a=a|0;Jn(a);return}
function Hn (line 312) | function Hn(a){a=a|0;In(a+24|0);return}
function In (line 312) | function In(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Jn (line 312) | function Jn(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,6,b,Kn()|0,1);c[a+24>>2]=0;...
function Kn (line 312) | function Kn(){return 1324}
function Ln (line 312) | function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function Mn (line 312) | function Mn(a){a=a|0;return (c[(xn()|0)+24>>2]|0)+(a*12|0)|0}
function Nn (line 312) | function Nn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+32|0;f=...
function On (line 312) | function On(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Pn (line 312) | function Pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Qn (line 312) | function Qn(){var b=0,d=0;if(!(a[8992]|0)){Zn(9952);Fa(39,9952,o|0)|0;d=...
function Rn (line 312) | function Rn(a){a=a|0;return 0}
function Sn (line 312) | function Sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Tn (line 312) | function Tn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Un (line 312) | function Un(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Vn (line 312) | function Vn(a){a=a|0;return 357913941}
function Wn (line 312) | function Wn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Xn (line 312) | function Xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Yn (line 312) | function Yn(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Zn (line 312) | function Zn(a){a=a|0;ao(a);return}
function _n (line 312) | function _n(a){a=a|0;$n(a+24|0);return}
function $n (line 312) | function $n(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function ao (line 312) | function ao(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,9,b,bo()|0,0);c[a+24>>2]=0;...
function bo (line 312) | function bo(){return 1332}
function co (line 312) | function co(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function eo (line 312) | function eo(a){a=a|0;return (c[(Qn()|0)+24>>2]|0)+(a*12|0)|0}
function fo (line 312) | function fo(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function go (line 312) | function go(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function ho (line 312) | function ho(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function io (line 312) | function io(){var b=0,d=0;if(!(a[9e3]|0)){ro(9988);Fa(40,9988,o|0)|0;d=9...
function jo (line 312) | function jo(a){a=a|0;return 0}
function ko (line 312) | function ko(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function lo (line 312) | function lo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function mo (line 312) | function mo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function no (line 312) | function no(a){a=a|0;return 357913941}
function oo (line 312) | function oo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function po (line 312) | function po(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function qo (line 312) | function qo(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function ro (line 312) | function ro(a){a=a|0;uo(a);return}
function so (line 312) | function so(a){a=a|0;to(a+24|0);return}
function to (line 312) | function to(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function uo (line 312) | function uo(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,vo()|0,1);c[a+24>>2]=0;...
function vo (line 312) | function vo(){return 1336}
function wo (line 312) | function wo(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e...
function xo (line 312) | function xo(a){a=a|0;return (c[(io()|0)+24>>2]|0)+(a*12|0)|0}
function yo (line 312) | function yo(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=c...
function zo (line 312) | function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Ao (line 312) | function Ao(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Bo (line 312) | function Bo(){var b=0,d=0;if(!(a[9008]|0)){Ko(10024);Fa(41,10024,o|0)|0;...
function Co (line 312) | function Co(a){a=a|0;return 0}
function Do (line 312) | function Do(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Eo (line 312) | function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Fo (line 312) | function Fo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Go (line 312) | function Go(a){a=a|0;return 357913941}
function Ho (line 312) | function Ho(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Io (line 312) | function Io(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Jo (line 312) | function Jo(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Ko (line 312) | function Ko(a){a=a|0;No(a);return}
function Lo (line 312) | function Lo(a){a=a|0;Mo(a+24|0);return}
function Mo (line 312) | function Mo(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function No (line 312) | function No(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,1,b,Oo()|0,2);c[a+24>>2]=0;...
function Oo (line 312) | function Oo(){return 1344}
function Po (line 312) | function Po(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;f=l;l=l+...
function Qo (line 312) | function Qo(a){a=a|0;return (c[(Bo()|0)+24>>2]|0)+(a*12|0)|0}
function Ro (line 312) | function Ro(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;i=l;l=l+...
function So (line 312) | function So(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function To (line 312) | function To(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Uo (line 312) | function Uo(){var b=0,d=0;if(!(a[9016]|0)){bp(10060);Fa(42,10060,o|0)|0;...
function Vo (line 312) | function Vo(a){a=a|0;return 0}
function Wo (line 312) | function Wo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Xo (line 312) | function Xo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Yo (line 312) | function Yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Zo (line 312) | function Zo(a){a=a|0;return 357913941}
function _o (line 312) | function _o(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function $o (line 312) | function $o(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function ap (line 312) | function ap(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function bp (line 312) | function bp(a){a=a|0;ep(a);return}
function cp (line 312) | function cp(a){a=a|0;dp(a+24|0);return}
function dp (line 312) | function dp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function ep (line 312) | function ep(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,8,b,fp()|0,1);c[a+24>>2]=0;...
function fp (line 312) | function fp(){return 1356}
function gp (line 312) | function gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function hp (line 312) | function hp(a){a=a|0;return (c[(Uo()|0)+24>>2]|0)+(a*12|0)|0}
function ip (line 312) | function ip(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function jp (line 312) | function jp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function kp (line 312) | function kp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function lp (line 312) | function lp(){var b=0,d=0;if(!(a[9024]|0)){up(10096);Fa(43,10096,o|0)|0;...
function mp (line 312) | function mp(a){a=a|0;return 0}
function np (line 312) | function np(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function op (line 312) | function op(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function pp (line 312) | function pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function qp (line 312) | function qp(a){a=a|0;return 357913941}
function rp (line 312) | function rp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function sp (line 312) | function sp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function tp (line 312) | function tp(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function up (line 312) | function up(a){a=a|0;xp(a);return}
function vp (line 312) | function vp(a){a=a|0;wp(a+24|0);return}
function wp (line 312) | function wp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function xp (line 312) | function xp(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,9,b,yp()|0,1);c[a+24>>2]=0;...
function yp (line 312) | function yp(){return 1364}
function zp (line 312) | function zp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=...
function Ap (line 312) | function Ap(a){a=a|0;return (c[(lp()|0)+24>>2]|0)+(a*12|0)|0}
function Bp (line 312) | function Bp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=...
function Cp (line 312) | function Cp(a,b){a=a|0;b=b|0;return}
function Dp (line 312) | function Dp(a,b){a=a|0;b=b|0;return Ep(b)|0}
function Ep (line 312) | function Ep(a){a=a|0;return a|0}
function Fp (line 312) | function Fp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+16|...
function Gp (line 312) | function Gp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0...
function Hp (line 312) | function Hp(){var b=0,d=0;if(!(a[9032]|0)){Qp(10132);Fa(44,10132,o|0)|0;...
function Ip (line 312) | function Ip(a){a=a|0;return 0}
function Jp (line 312) | function Jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Kp (line 312) | function Kp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;c[a>>2]=c[b>>...
function Lp (line 312) | function Lp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Mp (line 312) | function Mp(a){a=a|0;return 357913941}
function Np (line 312) | function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Op (line 312) | function Op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Pp (line 312) | function Pp(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Qp (line 312) | function Qp(a){a=a|0;Tp(a);return}
function Rp (line 312) | function Rp(a){a=a|0;Sp(a+24|0);return}
function Sp (line 312) | function Sp(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Tp (line 312) | function Tp(a){a=a|0;var b=0;b=Vh()|0;Yh(a,2,24,b,Up()|0,0);c[a+24>>2]=0...
function Up (line 312) | function Up(){return 1388}
function Vp (line 312) | function Vp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d+8|0;f=...
function Wp (line 312) | function Wp(a){a=a|0;return (c[(Hp()|0)+24>>2]|0)+(a*12|0)|0}
function Xp (line 312) | function Xp(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;b=c[b+4>>2]|0;a=a+(b>>1...
function Yp (line 312) | function Yp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=Z...
function Zp (line 312) | function Zp(){var b=0,d=0;if(!(a[9040]|0)){gq(10168);Fa(45,10168,o|0)|0;...
function _p (line 312) | function _p(a){a=a|0;return a|0}
function $p (line 312) | function $p(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function aq (line 312) | function aq(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function bq (line 312) | function bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function cq (line 312) | function cq(a){a=a|0;return 536870911}
function dq (line 312) | function dq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function eq (line 312) | function eq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function fq (line 312) | function fq(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function gq (line 312) | function gq(a){a=a|0;jq(a);return}
function hq (line 312) | function hq(a){a=a|0;iq(a+24|0);return}
function iq (line 312) | function iq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function jq (line 312) | function jq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,25,b,El()|0,1);c[a+24>>2]=0...
function kq (line 312) | function kq(a,b){a=a|0;b=b|0;mq(c[(lq(a)|0)>>2]|0,b);return}
function lq (line 312) | function lq(a){a=a|0;return (c[(Zp()|0)+24>>2]|0)+(a<<3)|0}
function mq (line 312) | function mq(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Il(d,b);b=Jl(d...
function nq (line 312) | function nq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=o...
function oq (line 312) | function oq(){var b=0,d=0;if(!(a[9048]|0)){xq(10204);Fa(46,10204,o|0)|0;...
function pq (line 312) | function pq(a){a=a|0;return a|0}
function qq (line 312) | function qq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function rq (line 312) | function rq(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function sq (line 312) | function sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function tq (line 312) | function tq(a){a=a|0;return 536870911}
function uq (line 312) | function uq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function vq (line 312) | function vq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function wq (line 312) | function wq(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function xq (line 312) | function xq(a){a=a|0;Aq(a);return}
function yq (line 312) | function yq(a){a=a|0;zq(a+24|0);return}
function zq (line 312) | function zq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Aq (line 312) | function Aq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,17,b,Tk()|0,0);c[a+24>>2]=0...
function Bq (line 312) | function Bq(a){a=a|0;return Dq(c[(Cq(a)|0)>>2]|0)|0}
function Cq (line 312) | function Cq(a){a=a|0;return (c[(oq()|0)+24>>2]|0)+(a<<3)|0}
function Dq (line 312) | function Dq(a){a=a|0;return Ck(wb[a&7]()|0)|0}
function Eq (line 312) | function Eq(){var b=0;if(!(a[9064]|0)){Oq(10248);Fa(25,10248,o|0)|0;b=90...
function Fq (line 312) | function Fq(a,b){a=a|0;b=b|0;c[a>>2]=Gq()|0;c[a+4>>2]=Hq()|0;c[a+12>>2]=...
function Gq (line 312) | function Gq(){return 11752}
function Hq (line 312) | function Hq(){return 1232}
function Iq (line 312) | function Iq(){return Mq()|0}
function Jq (line 312) | function Jq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function Kq (line 312) | function Kq(a,b){a=a|0;b=b|0;return b&a|0}
function Lq (line 312) | function Lq(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function Mq (line 312) | function Mq(){var b=0;if(!(a[9056]|0)){c[2560]=Nq()|0;c[2561]=0;b=9056;c...
function Nq (line 312) | function Nq(){return 0}
function Oq (line 312) | function Oq(a){a=a|0;xi(a);return}
function Pq (line 312) | function Pq(a){a=a|0;Qq(a,6092);Rq(a)|0;Sq(a)|0;return}
function Qq (line 312) | function Qq(a,b){a=a|0;b=b|0;var d=0;d=gn()|0;c[a>>2]=d;qr(d,b);Jt(c[a>>...
function Rq (line 312) | function Rq(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,er()|0);return a|0}
function Sq (line 312) | function Sq(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Tq()|0);return a|0}
function Tq (line 312) | function Tq(){var b=0;if(!(a[9072]|0)){Vq(10296);Fa(47,10296,o|0)|0;b=90...
function Uq (line 312) | function Uq(a,b){a=a|0;b=b|0;Fh(a,0,b,0,0,0);return}
function Vq (line 312) | function Vq(a){a=a|0;Yq(a);_q(a,9);return}
function Wq (line 312) | function Wq(a){a=a|0;Xq(a+24|0);return}
function Xq (line 312) | function Xq(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Yq (line 312) | function Yq(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,1,b,br()|0,2);c[a+24>>2]=0;...
function Zq (line 312) | function Zq(a,b,c){a=a|0;b=b|0;c=+c;$q(a,b,c);return}
function _q (line 312) | function _q(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}
function $q (line 312) | function $q(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0,j=0;e=l;l=l+16|0...
function ar (line 312) | function ar(b,d,e){b=b|0;d=d|0;e=e|0;Hf(b+8|0,c[d>>2]|0,+h[e>>3]);a[b+24...
function br (line 312) | function br(){return 1392}
function cr (line 312) | function cr(a,b){a=a|0;b=+b;return dr(a,b)|0}
function dr (line 312) | function dr(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0...
function er (line 312) | function er(){var b=0;if(!(a[9080]|0)){fr(10332);Fa(48,10332,o|0)|0;b=90...
function fr (line 312) | function fr(a){a=a|0;ir(a);_q(a,49);return}
function gr (line 312) | function gr(a){a=a|0;hr(a+24|0);return}
function hr (line 312) | function hr(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function ir (line 312) | function ir(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,3,b,nr()|0,0);c[a+24>>2]=0;...
function jr (line 312) | function jr(a){a=a|0;kr(a);return}
function kr (line 312) | function kr(a){a=a|0;lr(a);return}
function lr (line 312) | function lr(b){b=b|0;mr(b+8|0);a[b+24>>0]=1;return}
function mr (line 312) | function mr(a){a=a|0;c[a>>2]=0;h[a+8>>3]=0.0;return}
function nr (line 312) | function nr(){return 1412}
function or (line 312) | function or(){return pr()|0}
function pr (line 312) | function pr(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d...
function qr (line 312) | function qr(a,b){a=a|0;b=b|0;c[a>>2]=rr()|0;c[a+4>>2]=sr()|0;c[a+12>>2]=...
function rr (line 312) | function rr(){return 11753}
function sr (line 312) | function sr(){return 1404}
function tr (line 312) | function tr(){return wr()|0}
function ur (line 312) | function ur(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function vr (line 312) | function vr(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function wr (line 312) | function wr(){var b=0;if(!(a[9088]|0)){c[2592]=xr()|0;c[2593]=0;b=9088;c...
function xr (line 312) | function xr(){return c[354]|0}
function yr (line 312) | function yr(a){a=a|0;zr(a,6098);Ar(a)|0;return}
function zr (line 312) | function zr(a,b){a=a|0;b=b|0;var d=0;d=ai()|0;c[a>>2]=d;Mr(d,b);Jt(c[a>>...
function Ar (line 312) | function Ar(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Br()|0);return a|0}
function Br (line 312) | function Br(){var b=0;if(!(a[9096]|0)){Cr(10380);Fa(50,10380,o|0)|0;b=90...
function Cr (line 312) | function Cr(a){a=a|0;Fr(a);_q(a,51);return}
function Dr (line 312) | function Dr(a){a=a|0;Er(a+24|0);return}
function Er (line 312) | function Er(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Fr (line 312) | function Fr(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,4,b,Jr()|0,0);c[a+24>>2]=0;...
function Gr (line 312) | function Gr(a){a=a|0;Hr(a);return}
function Hr (line 312) | function Hr(a){a=a|0;Ir(a);return}
function Ir (line 312) | function Ir(b){b=b|0;var d=0,e=0;d=b+8|0;e=d+48|0;do{c[d>>2]=0;d=d+4|0}w...
function Jr (line 312) | function Jr(){return 1420}
function Kr (line 312) | function Kr(){return Lr()|0}
function Lr (line 312) | function Lr(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;a=h+4|0;b...
function Mr (line 312) | function Mr(a,b){a=a|0;b=b|0;c[a>>2]=Nr()|0;c[a+4>>2]=Or()|0;c[a+12>>2]=...
function Nr (line 312) | function Nr(){return 11747}
function Or (line 312) | function Or(){return 1424}
function Pr (line 312) | function Pr(){return wr()|0}
function Qr (line 312) | function Qr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function Rr (line 312) | function Rr(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function Sr (line 312) | function Sr(a){a=a|0;Tr(a,6105);Ur(a)|0;Vr(a)|0;return}
function Tr (line 312) | function Tr(a,b){a=a|0;b=b|0;var d=0;d=ws()|0;c[a>>2]=d;xs(d,b);Jt(c[a>>...
function Ur (line 312) | function Ur(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,ks()|0);return a|0}
function Vr (line 312) | function Vr(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,Wr()|0);return a|0}
function Wr (line 312) | function Wr(){var b=0;if(!(a[9104]|0)){Xr(10420);Fa(52,10420,o|0)|0;b=91...
function Xr (line 312) | function Xr(a){a=a|0;_r(a);_q(a,1);return}
function Yr (line 312) | function Yr(a){a=a|0;Zr(a+24|0);return}
function Zr (line 312) | function Zr(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function _r (line 312) | function _r(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,1,b,ds()|0,2);c[a+24>>2]=0;...
function $r (line 312) | function $r(a,b,c){a=a|0;b=+b;c=+c;as(a,b,c);return}
function as (line 312) | function as(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,g=0,i=0;d=l;l=l+32|0;...
function bs (line 312) | function bs(b,c,d){b=b|0;c=c|0;d=d|0;cs(b+8|0,+h[c>>3],+h[d>>3]);a[b+24>...
function cs (line 312) | function cs(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}
function ds (line 312) | function ds(){return 1460}
function es (line 312) | function es(a,b){a=+a;b=+b;return fs(a,b)|0}
function fs (line 312) | function fs(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l+16|0;...
function gs (line 312) | function gs(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[...
function hs (line 312) | function hs(a){a=a|0;tA(a);BA(a);return}
function is (line 312) | function is(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}
function js (line 312) | function js(a){a=a|0;BA(a);return}
function ks (line 312) | function ks(){var b=0;if(!(a[9112]|0)){ls(10456);Fa(53,10456,o|0)|0;b=91...
function ls (line 312) | function ls(a){a=a|0;os(a);_q(a,54);return}
function ms (line 312) | function ms(a){a=a|0;ns(a+24|0);return}
function ns (line 312) | function ns(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function os (line 312) | function os(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,5,b,ts()|0,0);c[a+24>>2]=0;...
function ps (line 312) | function ps(a){a=a|0;qs(a);return}
function qs (line 312) | function qs(a){a=a|0;rs(a);return}
function rs (line 312) | function rs(b){b=b|0;ss(b+8|0);a[b+24>>0]=1;return}
function ss (line 312) | function ss(a){a=a|0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0;return}
function ts (line 312) | function ts(){return 1480}
function us (line 312) | function us(){return vs()|0}
function vs (line 312) | function vs(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d...
function ws (line 312) | function ws(){var b=0;if(!(a[9120]|0)){Ds(10492);Fa(25,10492,o|0)|0;b=91...
function xs (line 312) | function xs(a,b){a=a|0;b=b|0;c[a>>2]=ys()|0;c[a+4>>2]=zs()|0;c[a+12>>2]=...
function ys (line 312) | function ys(){return 11743}
function zs (line 312) | function zs(){return 1472}
function As (line 312) | function As(){return wr()|0}
function Bs (line 312) | function Bs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function Cs (line 312) | function Cs(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function Ds (line 312) | function Ds(a){a=a|0;xi(a);return}
function Es (line 312) | function Es(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=Fs(c)|0;c=Gs(c,0)|0;$t(...
function Fs (line 312) | function Fs(a){a=a|0;return a|0}
function Gs (line 312) | function Gs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function Hs (line 312) | function Hs(){var b=0,d=0;if(!(a[9128]|0)){Is(10536);Fa(55,10536,o|0)|0;...
function Is (line 312) | function Is(a){a=a|0;Ls(a);return}
function Js (line 312) | function Js(a){a=a|0;Ks(a+24|0);return}
function Ks (line 312) | function Ks(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Ls (line 312) | function Ls(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,18,b,kl()|0,0);c[a+24>>2]=0...
function Ms (line 312) | function Ms(a){a=a|0;return Os(c[(Ns(a)|0)>>2]|0)|0}
function Ns (line 312) | function Ns(a){a=a|0;return (c[(Hs()|0)+24>>2]|0)+(a<<3)|0}
function Os (line 312) | function Os(a){a=a|0;return ol(wb[a&7]()|0)|0}
function Ps (line 312) | function Ps(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function Qs (line 312) | function Qs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Rs (line 312) | function Rs(a){a=a|0;return 536870911}
function Ss (line 312) | function Ss(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Ts (line 312) | function Ts(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Us (line 312) | function Us(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Vs (line 312) | function Vs(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=Ws(c)|0;c=Xs(c,0)|0;$t(...
function Ws (line 312) | function Ws(a){a=a|0;return a|0}
function Xs (line 312) | function Xs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function Ys (line 312) | function Ys(){var b=0,d=0;if(!(a[9136]|0)){Zs(10572);Fa(56,10572,o|0)|0;...
function Zs (line 312) | function Zs(a){a=a|0;at(a);return}
function _s (line 312) | function _s(a){a=a|0;$s(a+24|0);return}
function $s (line 312) | function $s(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function at (line 312) | function at(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,10,b,bt()|0,1);c[a+24>>2]=0...
function bt (line 312) | function bt(){return 1484}
function ct (line 312) | function ct(a,b){a=a|0;b=b|0;return et(c[(dt(a)|0)>>2]|0,b)|0}
function dt (line 312) | function dt(a){a=a|0;return (c[(Ys()|0)+24>>2]|0)+(a<<3)|0}
function et (line 312) | function et(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Ti(d,b);b=Ui(d...
function ft (line 312) | function ft(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function gt (line 312) | function gt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function ht (line 312) | function ht(a){a=a|0;return 536870911}
function it (line 312) | function it(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function jt (line 312) | function jt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function kt (line 312) | function kt(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function lt (line 312) | function lt(a,b,c){a=a|0;b=b|0;c=c|0;a=Ah(b)|0;b=mt(c)|0;c=nt(c,0)|0;$t(...
function mt (line 312) | function mt(a){a=a|0;return a|0}
function nt (line 312) | function nt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function ot (line 312) | function ot(){var b=0,d=0;if(!(a[9144]|0)){pt(10608);Fa(57,10608,o|0)|0;...
function pt (line 312) | function pt(a){a=a|0;st(a);return}
function qt (line 312) | function qt(a){a=a|0;rt(a+24|0);return}
function rt (line 312) | function rt(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function st (line 312) | function st(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,10,b,tt()|0,2);c[a+24>>2]=0...
function tt (line 312) | function tt(){return 1492}
function ut (line 312) | function ut(a,b,d){a=a|0;b=b|0;d=d|0;wt(c[(vt(a)|0)>>2]|0,b,d);return}
function vt (line 312) | function vt(a){a=a|0;return (c[(ot()|0)+24>>2]|0)+(a<<3)|0}
function wt (line 312) | function wt(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+1|...
function xt (line 312) | function xt(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function yt (line 312) | function yt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function zt (line 312) | function zt(a){a=a|0;return 536870911}
function At (line 312) | function At(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Bt (line 312) | function Bt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Ct (line 312) | function Ct(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Dt (line 312) | function Dt(){Et();return}
function Et (line 312) | function Et(){Ft(10644);return}
function Ft (line 312) | function Ft(a){a=a|0;Gt(a,6186);return}
function Gt (line 312) | function Gt(a,b){a=a|0;b=b|0;var d=0;d=Ht()|0;c[a>>2]=d;It(d,b);Jt(c[a>>...
function Ht (line 312) | function Ht(){var b=0;if(!(a[9152]|0)){Tt(10652);Fa(25,10652,o|0)|0;b=91...
function It (line 312) | function It(a,b){a=a|0;b=b|0;c[a>>2]=Ot()|0;c[a+4>>2]=Pt()|0;c[a+12>>2]=...
function Jt (line 312) | function Jt(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;Kt()|0;c[d>>2]=a;Lt(10...
function Kt (line 312) | function Kt(){if(!(a[11757]|0)){c[2662]=0;Fa(58,10648,o|0)|0;a[11757]=1}...
function Lt (line 312) | function Lt(a,b){a=a|0;b=b|0;var d=0;d=zA(8)|0;c[d+4>>2]=c[b>>2];c[d>>2]...
function Mt (line 312) | function Mt(a){a=a|0;Nt(a);return}
function Nt (line 312) | function Nt(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{d=b;b=c[b>>2]|0;B...
function Ot (line 312) | function Ot(){return 11758}
function Pt (line 312) | function Pt(){return 1504}
function Qt (line 312) | function Qt(){return Mq()|0}
function Rt (line 312) | function Rt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function St (line 312) | function St(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function Tt (line 312) | function Tt(a){a=a|0;xi(a);return}
function Ut (line 312) | function Ut(a,b){a=a|0;b=b|0;var d=0,e=0;Kt()|0;d=c[2662]|0;a:do if(d|0)...
function Vt (line 312) | function Vt(a){a=a|0;return c[a+12>>2]|0}
function Wt (line 312) | function Wt(a,b){a=a|0;b=b|0;var d=0;a=a+36|0;d=c[a>>2]|0;if(d|0){Pe(d);...
function Xt (line 312) | function Xt(){if(!(a[11759]|0)){c[2674]=0;Fa(59,10696,o|0)|0;a[11759]=1}...
function Yt (line 312) | function Yt(){var b=0;if(!(a[11760]|0)){Zt();c[2675]=1512;a[11760]=1;b=1...
function Zt (line 312) | function Zt(){if(!(a[11784]|0)){a[11761]=Jh(Jh(8,0)|0,0)|0;a[11762]=Jh(J...
function _t (line 312) | function _t(){return 1580}
function $t (line 312) | function $t(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
function au (line 312) | function au(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=z...
function bu (line 312) | function bu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function cu (line 312) | function cu(a){a=a|0;return c[a+12>>2]|0}
function du (line 312) | function du(a){a=a|0;return c[a+12>>2]|0}
function eu (line 312) | function eu(a){a=a|0;return c[a+16>>2]|0}
function fu (line 312) | function fu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+32|0;d=f;e=c[a>>2]|...
function gu (line 312) | function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l...
function hu (line 312) | function hu(a){a=a|0;return c[a+8>>2]|0}
function iu (line 312) | function iu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l...
function ju (line 312) | function ju(a){a=a|0;return c[a>>2]|0}
function ku (line 312) | function ku(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;nu(a,b,c,d,...
function lu (line 312) | function lu(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function mu (line 312) | function mu(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function nu (line 312) | function nu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
function ou (line 312) | function ou(a,b){a=a|0;b=b|0;var d=0,e=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]...
function pu (line 312) | function pu(a,b){a=a|0;b=b|0;var d=0,e=0;c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]...
function qu (line 312) | function qu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0...
function ru (line 312) | function ru(){var b=0;if(!(a[9168]|0)){Iu(10748);b=9168;c[b>>2]=1;c[b+4>...
function su (line 312) | function su(a){a=a|0;return Au(a)|0}
function tu (line 312) | function tu(a){a=a|0;return yu(a)|0}
function uu (line 312) | function uu(a){a=a|0;return ol(a)|0}
function vu (line 312) | function vu(a){a=a|0;return zu(a)|0}
function wu (line 312) | function wu(a){a=a|0;return xu(a)|0}
function xu (line 312) | function xu(a){a=a|0;var b=0,d=0,e=0;e=(c[a+4>>2]|0)-(c[a>>2]|0)|0;d=e>>...
function yu (line 312) | function yu(a){a=a|0;return a|0}
function zu (line 312) | function zu(a){a=a|0;var b=0,d=0,e=0;e=(c[a+4>>2]|0)-(c[a>>2]|0)|0;d=e>>...
function Au (line 312) | function Au(a){a=a|0;var b=0,c=0,d=0,e=0;e=l;l=l+32|0;b=e+12|0;c=e;d=bi(...
function Bu (line 312) | function Bu(){var b=0;if(!(a[9160]|0)){Hu(10704);Fa(25,10704,o|0)|0;b=91...
function Cu (line 312) | function Cu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|...
function Du (line 312) | function Du(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[...
function Eu (line 312) | function Eu(a){a=a|0;tA(a);BA(a);return}
function Fu (line 312) | function Fu(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}
function Gu (line 312) | function Gu(a){a=a|0;BA(a);return}
function Hu (line 312) | function Hu(a){a=a|0;xi(a);return}
function Iu (line 312) | function Iu(a){a=a|0;Ag(a,Ju()|0,5);return}
function Ju (line 312) | function Ju(){return 1684}
function Ku (line 312) | function Ku(a,b){a=a|0;b=b|0;var d=0;if((Mu(a)|0)>>>0<b>>>0)sA(a);if(b>>...
function Lu (line 312) | function Lu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0)...
function Mu (line 312) | function Mu(a){a=a|0;return 1073741823}
function Nu (line 312) | function Nu(a,b){a=a|0;b=b|0;var d=0;if((Pu(a)|0)>>>0<b>>>0)sA(a);if(b>>...
function Ou (line 312) | function Ou(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=a+4|0;a=d-b|0;if((a|0)>0)...
function Pu (line 312) | function Pu(a){a=a|0;return 1073741823}
function Qu (line 312) | function Qu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Ru (line 312) | function Ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Su (line 312) | function Su(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Tu (line 312) | function Tu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Uu (line 312) | function Uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Vu (line 312) | function Vu(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Wu (line 312) | function Wu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
function Xu (line 312) | function Xu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qv(a,b,c,d);return}
function Yu (line 312) | function Yu(a,b,c){a=a|0;b=b|0;c=c|0;pv(a,b,c);return}
function Zu (line 312) | function Zu(a){a=a|0;return a|0}
function _u (line 312) | function _u(a,b,c){a=a|0;b=b|0;c=c|0;kv(a,b,c);return}
function $u (line 312) | function $u(a){a=a|0;return a+16|0}
function av (line 312) | function av(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|...
function bv (line 312) | function bv(a,b,c){a=a|0;b=b|0;c=c|0;dv(a,b,c);return}
function cv (line 312) | function cv(a){a=a|0;return a+24|0}
function dv (line 312) | function dv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+32|...
function ev (line 312) | function ev(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=l;l=l+32|...
function fv (line 312) | function fv(){var b=0;if(!(a[9176]|0)){gv(10760);b=9176;c[b>>2]=1;c[b+4>...
function gv (line 312) | function gv(a){a=a|0;Ag(a,hv()|0,2);return}
function hv (line 312) | function hv(){return 1740}
function iv (line 312) | function iv(a){a=a|0;return c[a>>2]|0}
function jv (line 312) | function jv(a){a=a|0;return c[a>>2]|0}
function kv (line 312) | function kv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;g=...
function lv (line 312) | function lv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;g=...
function mv (line 312) | function mv(){var b=0;if(!(a[9184]|0)){nv(10772);b=9184;c[b>>2]=1;c[b+4>...
function nv (line 312) | function nv(a){a=a|0;Ag(a,ov()|0,2);return}
function ov (line 312) | function ov(){return 1752}
function pv (line 312) | function pv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+32|0;g=...
function qv (line 312) | function qv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l...
function rv (line 312) | function rv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l...
function sv (line 312) | function sv(){var b=0;if(!(a[9192]|0)){vv(10784);b=9192;c[b>>2]=1;c[b+4>...
function tv (line 312) | function tv(a){a=a|0;return uv(a)|0}
function uv (line 312) | function uv(a){a=a|0;return a&255|0}
function vv (line 312) | function vv(a){a=a|0;Ag(a,wv()|0,3);return}
function wv (line 312) | function wv(){return 1764}
function xv (line 312) | function xv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function yv (line 312) | function yv(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;Wy(f);...
function zv (line 312) | function zv(a,b){a=a|0;b=b|0;var d=0;d=c[a>>2]|0;if(d|0)Za(d|0);c[a>>2]=...
function Av (line 312) | function Av(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
function Bv (line 312) | function Bv(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0...
function Cv (line 312) | function Cv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=l;l=l...
function Dv (line 312) | function Dv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l...
function Ev (line 312) | function Ev(){var b=0;if(!(a[9200]|0)){Gv(10796);b=9200;c[b>>2]=1;c[b+4>...
function Fv (line 312) | function Fv(a,b){a=a|0;b=b|0;gk(a,b);return}
function Gv (line 312) | function Gv(a){a=a|0;Ag(a,Hv()|0,2);return}
function Hv (line 312) | function Hv(){return 1780}
function Iv (line 312) | function Iv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
function Jv (line 312) | function Jv(){var b=0;if(!(a[9208]|0)){Kv(10808);b=9208;c[b>>2]=1;c[b+4>...
function Kv (line 312) | function Kv(a){a=a|0;Ag(a,Lv()|0,3);return}
function Lv (line 312) | function Lv(){return 1792}
function Mv (line 312) | function Mv(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0...
function Nv (line 312) | function Nv(){var b=0;if(!(a[9216]|0)){Ov(10820);b=9216;c[b>>2]=1;c[b+4>...
function Ov (line 312) | function Ov(a){a=a|0;Ag(a,Pv()|0,3);return}
function Pv (line 312) | function Pv(){return 1808}
function Qv (line 312) | function Qv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=og(Rv()|0)|0;Fv(a,_a(0,d|...
function Rv (line 312) | function Rv(){var b=0;if(!(a[9224]|0)){Sv(10832);b=9224;c[b>>2]=1;c[b+4>...
function Sv (line 312) | function Sv(a){a=a|0;Ag(a,Tv()|0,1);return}
function Tv (line 312) | function Tv(){return 1824}
function Uv (line 312) | function Uv(){Vv();Wv();Xv();return}
function Vv (line 312) | function Vv(){c[2712]=AA(65536)|0;return}
function Wv (line 312) | function Wv(){sw(10896);return}
function Xv (line 312) | function Xv(){Yv(10856);return}
function Yv (line 312) | function Yv(a){a=a|0;Zv(a,6275);_v(a)|0;return}
function Zv (line 312) | function Zv(a,b){a=a|0;b=b|0;var d=0;d=Bu()|0;c[a>>2]=d;mw(d,b);Jt(c[a>>...
function _v (line 312) | function _v(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,$v()|0);return a|0}
function $v (line 312) | function $v(){var b=0;if(!(a[9232]|0)){aw(10860);Fa(60,10860,o|0)|0;b=92...
function aw (line 312) | function aw(a){a=a|0;dw(a);_q(a,26);return}
function bw (line 312) | function bw(a){a=a|0;cw(a+24|0);return}
function cw (line 312) | function cw(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function dw (line 312) | function dw(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,19,b,iw()|0,1);c[a+24>>2]=0...
function ew (line 312) | function ew(a,b){a=a|0;b=b|0;fw(a,b);return}
function fw (line 312) | function fw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=d+4|0;Ak...
function gw (line 312) | function gw(b,d){b=b|0;d=d|0;hw(b+4|0,c[d>>2]|0);a[b+8>>0]=1;return}
function hw (line 312) | function hw(a,b){a=a|0;b=b|0;c[a>>2]=b;return}
function iw (line 312) | function iw(){return 1832}
function jw (line 312) | function jw(a){a=a|0;return kw(a)|0}
function kw (line 312) | function kw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=l;l=l+16|0;f=d+4|...
function lw (line 312) | function lw(a){a=a|0;var b=0,d=0;a=a+7&-8;if(a>>>0<=32768?(b=c[2711]|0,a...
function mw (line 312) | function mw(a,b){a=a|0;b=b|0;c[a>>2]=nw()|0;c[a+4>>2]=ow()|0;c[a+12>>2]=...
function nw (line 312) | function nw(){return 11788}
function ow (line 312) | function ow(){return 1840}
function pw (line 312) | function pw(){return wr()|0}
function qw (line 312) | function qw(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function rw (line 312) | function rw(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function sw (line 312) | function sw(a){a=a|0;tw(a,6283);uw(a)|0;vw(a,6289,27)|0;ww(a,6300,1)|0;x...
function tw (line 312) | function tw(a,b){a=a|0;b=b|0;var d=0;d=Iy()|0;c[a>>2]=d;Jy(d,b);Jt(c[a>>...
function uw (line 312) | function uw(a){a=a|0;var b=0;b=c[a>>2]|0;Uq(b,ty()|0);return a|0}
function vw (line 312) | function vw(a,b,c){a=a|0;b=b|0;c=c|0;_x(a,Ah(b)|0,c,0);return a|0}
function ww (line 312) | function ww(a,b,c){a=a|0;b=b|0;c=c|0;Ix(a,Ah(b)|0,c,0);return a|0}
function xw (line 312) | function xw(a,b,c){a=a|0;b=b|0;c=c|0;jx(a,Ah(b)|0,c,0);return a|0}
function yw (line 312) | function yw(a,b,c){a=a|0;b=b|0;c=c|0;Tw(a,Ah(b)|0,c,0);return a|0}
function zw (line 312) | function zw(a,b){a=a|0;b=b|0;var d=0,e=0;a:while(1){d=c[2713]|0;while(1)...
function Aw (line 312) | function Aw(a,b,c){a=a|0;b=b|0;c=c|0;Bw(a,Ah(b)|0,c,0);return a|0}
function Bw (line 312) | function Bw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=C...
function Cw (line 312) | function Cw(){var b=0,d=0;if(!(a[9240]|0)){Lw(10900);Fa(61,10900,o|0)|0;...
function Dw (line 312) | function Dw(a){a=a|0;return a|0}
function Ew (line 312) | function Ew(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function Fw (line 312) | function Fw(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function Gw (line 312) | function Gw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Hw (line 312) | function Hw(a){a=a|0;return 536870911}
function Iw (line 312) | function Iw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Jw (line 312) | function Jw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Kw (line 312) | function Kw(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Lw (line 312) | function Lw(a){a=a|0;Ow(a);return}
function Mw (line 312) | function Mw(a){a=a|0;Nw(a+24|0);return}
function Nw (line 312) | function Nw(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Ow (line 312) | function Ow(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,12,b,Pw()|0,2);c[a+24>>2]=0...
function Pw (line 312) | function Pw(){return 1848}
function Qw (line 312) | function Qw(a,b,d){a=a|0;b=b|0;d=d|0;Sw(c[(Rw(a)|0)>>2]|0,b,d);return}
function Rw (line 312) | function Rw(a){a=a|0;return (c[(Cw()|0)+24>>2]|0)+(a<<3)|0}
function Sw (line 312) | function Sw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+1|...
function Tw (line 312) | function Tw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=U...
function Uw (line 312) | function Uw(){var b=0,d=0;if(!(a[9248]|0)){bx(10936);Fa(62,10936,o|0)|0;...
function Vw (line 312) | function Vw(a){a=a|0;return a|0}
function Ww (line 312) | function Ww(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function Xw (line 312) | function Xw(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function Yw (line 312) | function Yw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Zw (line 312) | function Zw(a){a=a|0;return 536870911}
function _w (line 312) | function _w(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function $w (line 312) | function $w(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function ax (line 312) | function ax(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function bx (line 312) | function bx(a){a=a|0;ex(a);return}
function cx (line 312) | function cx(a){a=a|0;dx(a+24|0);return}
function dx (line 312) | function dx(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function ex (line 312) | function ex(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,11,b,fx()|0,1);c[a+24>>2]=0...
function fx (line 312) | function fx(){return 1860}
function gx (line 312) | function gx(a,b){a=a|0;b=b|0;return ix(c[(hx(a)|0)>>2]|0,b)|0}
function hx (line 312) | function hx(a){a=a|0;return (c[(Uw()|0)+24>>2]|0)+(a<<3)|0}
function ix (line 312) | function ix(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+16|0;d=c;Ak(d,b);b=Bk(d...
function jx (line 312) | function jx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=k...
function kx (line 312) | function kx(){var b=0,d=0;if(!(a[9256]|0)){tx(10972);Fa(63,10972,o|0)|0;...
function lx (line 312) | function lx(a){a=a|0;return a|0}
function mx (line 312) | function mx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function nx (line 312) | function nx(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function ox (line 312) | function ox(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function px (line 312) | function px(a){a=a|0;return 536870911}
function qx (line 312) | function qx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function rx (line 312) | function rx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function sx (line 312) | function sx(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function tx (line 312) | function tx(a){a=a|0;wx(a);return}
function ux (line 312) | function ux(a){a=a|0;vx(a+24|0);return}
function vx (line 312) | function vx(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function wx (line 312) | function wx(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,7,b,xx()|0,2);c[a+24>>2]=0;...
function xx (line 312) | function xx(){return 1868}
function yx (line 312) | function yx(a,b,d){a=a|0;b=b|0;d=d|0;return Ax(c[(zx(a)|0)>>2]|0,b,d)|0}
function zx (line 312) | function zx(a){a=a|0;return (c[(kx()|0)+24>>2]|0)+(a<<3)|0}
function Ax (line 312) | function Ax(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=l;l=l...
function Bx (line 312) | function Bx(a,b){a=a|0;b=b|0;return}
function Cx (line 312) | function Cx(a,b,c){a=a|0;b=b|0;c=c|0;Ex(a,c);return}
function Dx (line 312) | function Dx(a){a=a|0;return lg(a)|0}
function Ex (line 312) | function Ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=f;e=b;if(!(e...
function Fx (line 312) | function Fx(b,d){b=b|0;d=d|0;vg(b,d);c[b+4>>2]=0;a[b+8>>0]=0;return}
function Gx (line 312) | function Gx(a,b){a=a|0;b=b|0;c[a>>2]=c[b+4>>2];return}
function Hx (line 312) | function Hx(b){b=b|0;a[b+8>>0]=0;return}
function Ix (line 312) | function Ix(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=J...
function Jx (line 312) | function Jx(){var b=0,d=0;if(!(a[9264]|0)){Sx(11008);Fa(64,11008,o|0)|0;...
function Kx (line 312) | function Kx(a){a=a|0;return a|0}
function Lx (line 312) | function Lx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function Mx (line 312) | function Mx(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function Nx (line 312) | function Nx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function Ox (line 312) | function Ox(a){a=a|0;return 536870911}
function Px (line 312) | function Px(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function Qx (line 312) | function Qx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function Rx (line 312) | function Rx(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function Sx (line 312) | function Sx(a){a=a|0;Vx(a);return}
function Tx (line 312) | function Tx(a){a=a|0;Ux(a+24|0);return}
function Ux (line 312) | function Ux(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function Vx (line 312) | function Vx(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,1,b,Wx()|0,5);c[a+24>>2]=0;...
function Wx (line 312) | function Wx(){return 1880}
function Xx (line 312) | function Xx(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;Zx(c[(Yx(a)...
function Yx (line 312) | function Yx(a){a=a|0;return (c[(Jx()|0)+24>>2]|0)+(a<<3)|0}
function Zx (line 312) | function Zx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0...
function _x (line 312) | function _x(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a>>2]|0;f=$...
function $x (line 312) | function $x(){var b=0,d=0;if(!(a[9272]|0)){iy(11044);Fa(65,11044,o|0)|0;...
function ay (line 312) | function ay(a){a=a|0;return a|0}
function by (line 312) | function by(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+16|...
function cy (line 312) | function cy(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;return}
function dy (line 312) | function dy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function ey (line 312) | function ey(a){a=a|0;return 536870911}
function fy (line 312) | function fy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;c[a+12>>2]=0;c[a+16...
function gy (line 312) | function gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=c[a>>2]|0;h=a+4|0...
function hy (line 312) | function hy(a){a=a|0;var b=0,d=0,e=0;b=c[a+4>>2]|0;d=a+8|0;e=c[d>>2]|0;i...
function iy (line 312) | function iy(a){a=a|0;ly(a);return}
function jy (line 312) | function jy(a){a=a|0;ky(a+24|0);return}
function ky (line 312) | function ky(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function ly (line 312) | function ly(a){a=a|0;var b=0;b=Vh()|0;Yh(a,1,13,b,my()|0,2);c[a+24>>2]=0...
function my (line 312) | function my(){return 1904}
function ny (line 312) | function ny(a,b,d){a=a|0;b=b|0;d=d|0;py(c[(oy(a)|0)>>2]|0,b,d);return}
function oy (line 312) | function oy(a){a=a|0;return (c[($x()|0)+24>>2]|0)+(a<<3)|0}
function py (line 312) | function py(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=l;l=l+16|0;f=d+4|...
function qy (line 312) | function qy(a,b){a=a|0;b=b|0;return}
function ry (line 312) | function ry(a,b){a=a|0;b=b|0;return sy(b)|0}
function sy (line 312) | function sy(a){a=a|0;return a|0}
function ty (line 312) | function ty(){var b=0;if(!(a[9280]|0)){uy(11080);Fa(66,11080,o|0)|0;b=92...
function uy (line 312) | function uy(a){a=a|0;xy(a);_q(a,67);return}
function vy (line 312) | function vy(a){a=a|0;wy(a+24|0);return}
function wy (line 312) | function wy(a){a=a|0;var b=0,d=0,e=0;d=c[a>>2]|0;e=d;if(d|0){a=a+4|0;b=c...
function xy (line 312) | function xy(a){a=a|0;var b=0;b=Vh()|0;Yh(a,5,6,b,By()|0,0);c[a+24>>2]=0;...
function yy (line 312) | function yy(a){a=a|0;zy(a);return}
function zy (line 312) | function zy(a){a=a|0;Ay(a);return}
function Ay (line 312) | function Ay(b){b=b|0;a[b+8>>0]=1;return}
function By (line 312) | function By(){return 1944}
function Cy (line 312) | function Cy(){return Dy()|0}
function Dy (line 312) | function Dy(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;b=l;l=l+16|0;f=b+4|0;h=b;d...
function Ey (line 312) | function Ey(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;d=zA(16)|0;c[d+4>>2]=0;c[...
function Fy (line 312) | function Fy(a){a=a|0;tA(a);BA(a);return}
function Gy (line 312) | function Gy(a){a=a|0;a=c[a+12>>2]|0;if(a|0)BA(a);return}
function Hy (line 312) | function Hy(a){a=a|0;BA(a);return}
function Iy (line 312) | function Iy(){var b=0;if(!(a[9288]|0)){Py(11116);Fa(25,11116,o|0)|0;b=92...
function Jy (line 312) | function Jy(a,b){a=a|0;b=b|0;c[a>>2]=Ky()|0;c[a+4>>2]=Ly()|0;c[a+12>>2]=...
function Ky (line 312) | function Ky(){return 11789}
function Ly (line 312) | function Ly(){return 1948}
function My (line 312) | function My(){return Mq()|0}
function Ny (line 312) | function Ny(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((Kq(d,896)|0)==512){if(c...
function Oy (line 312) | function Oy(a){a=a|0;a=c[a+4>>2]|0;if(a|0)xA(a);return}
function Py (line 312) | function Py(a){a=a|0;xi(a);return}
function Qy (line 312) | function Qy(a,b){a=a|0;b=b|0;c[a>>2]=b;return}
function Ry (line 312) | function Ry(a){a=a|0;return c[a>>2]|0}
function Sy (line 312) | function Sy(b){b=b|0;return a[c[b>>2]>>0]|0}
function Ty (line 312) | function Ty(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[a>>2...
function Uy (line 312) | function Uy(a,b){a=a|0;b=b|0;var d=0;d=Vy(c[a>>2]|0,b)|0;b=a+4|0;c[(c[b>...
function Vy (line 312) | function Vy(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;Wy(e);a=lg(a)|...
function Wy (line 312) | function Wy(a){a=a|0;c[a>>2]=c[2711];c[a+4>>2]=c[2713];return}
function Xy (line 312) | function Xy(a,b){a=a|0;b=b|0;var c=0;c=og(Zy()|0)|0;return _a(0,c|0,a|0,...
function Yy (line 312) | function Yy(a){a=a|0;zw(c[a>>2]|0,c[a+4>>2]|0);return}
function Zy (line 312) | function Zy(){var b=0;if(!(a[9296]|0)){_y(11160);b=9296;c[b>>2]=1;c[b+4>...
function _y (line 312) | function _y(a){a=a|0;Ag(a,$y()|0,1);return}
function $y (line 312) | function $y(){return 1956}
function az (line 312) | function az(){bz();return}
function bz (line 312) | function bz(){var b=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=...
function cz (line 312) | function cz(){return 11746}
function dz (line 312) | function dz(b){b=b|0;a[b+40>>0]=0;return}
function ez (line 312) | function ez(b){b=b|0;return (a[b+40>>0]|0)!=0|0}
function fz (line 312) | function fz(a,b){a=a|0;b=b|0;b=pz(b)|0;a=c[b>>2]|0;c[b>>2]=c[a>>2];BA(a)...
function gz (line 312) | function gz(b){b=b|0;a[b+40>>0]=1;return}
function hz (line 312) | function hz(a){a=a|0;return c[a+20>>2]|0}
function iz (line 312) | function iz(a){a=a|0;return c[a+8>>2]|0}
function jz (line 312) | function jz(a){a=a|0;return c[a+32>>2]|0}
function kz (line 312) | function kz(a){a=a|0;return c[a+4>>2]|0}
function lz (line 312) | function lz(a){a=a|0;return c[a+4>>2]|0}
function mz (line 312) | function mz(a){a=a|0;return c[a+8>>2]|0}
function nz (line 312) | function nz(a){a=a|0;return c[a+16>>2]|0}
function oz (line 312) | function oz(a){a=a|0;return c[a+20>>2]|0}
function pz (line 312) | function pz(a){a=a|0;return c[a>>2]|0}
function qz (line 312) | function qz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0...
function rz (line 312) | function rz(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a)return;d=...
function sz (line 312) | function sz(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=qz(b)|0;return b|0}if(...
function tz (line 312) | function tz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
function uz (line 312) | function uz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+b|0;d=c...
function vz (line 312) | function vz(){return 11668}
function wz (line 312) | function wz(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dz(c[a+60>>2]|...
function xz (line 312) | function xz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0...
function yz (line 312) | function yz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=...
function zz (line 312) | function zz(a){a=a|0;if(a>>>0>4294963200){c[(Az()|0)>>2]=0-a;a=-1}return...
function Az (line 312) | function Az(){return (Bz()|0)+64|0}
function Bz (line 312) | function Bz(){return Cz()|0}
function Cz (line 312) | function Cz(){return 2092}
function Dz (line 312) | function Dz(a){a=a|0;return a|0}
function Ez (line 312) | function Ez(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36...
function Fz (line 312) | function Fz(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<2...
function Gz (line 312) | function Gz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{whi...
function Hz (line 312) | function Hz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0...
function Iz (line 313) | function Iz(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0...
function Jz (line 313) | function Jz(a){a=a|0;return 0}
function Kz (line 313) | function Kz(a){a=a|0;return}
function Lz (line 313) | function Lz(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))fA(b,d,a)|0;return}
function Mz (line 313) | function Mz(b){b=b|0;var d=0,e=0,f=0;e=c[b>>2]|0;f=(a[e>>0]|0)+-48|0;if(...
function Nz (line 313) | function Nz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20...
function Oz (line 313) | function Oz(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{...
function Pz (line 313) | function Pz(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0...
function Qz (line 313) | function Qz(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4...
function Rz (line 313) | function Rz(a){a=a|0;return aA(a,c[($z()|0)+188>>2]|0)|0}
function Sz (line 313) | function Sz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)...
function Tz (line 313) | function Tz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l...
function Uz (line 313) | function Uz(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Zz(a,b,0)|0;return a|0}
function Vz (line 313) | function Vz(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,...
function Wz (line 313) | function Wz(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;A=c[j+4>>2]|0;return b|0}
function Xz (line 313) | function Xz(a,b){a=+a;b=b|0;return +(+Yz(a,b))}
function Yz (line 313) | function Yz(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+...
function Zz (line 313) | function Zz(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=...
function _z (line 313) | function _z(){return Cz()|0}
function $z (line 313) | function $z(){return Cz()|0}
function aA (line 313) | function aA(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[6943+g>>0]|0...
function bA (line 313) | function bA(a,b){a=a|0;b=b|0;return cA(a,b)|0}
function cA (line 313) | function cA(a,b){a=a|0;b=b|0;if(!b)b=0;else b=dA(c[b>>2]|0,c[b+4>>2]|0,a...
function dA (line 313) | function dA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0...
function eA (line 313) | function eA(a,b){a=a|0;b=b|0;var c=0;c=QA(a|0)|0;return ((b|0)==0?a:c)|0}
function fA (line 313) | function fA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=...
function gA (line 313) | function gA(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=...
function hA (line 313) | function hA(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;whi...
function iA (line 313) | function iA(a,b){a=T(a);b=T(b);var c=0,d=0;c=jA(a)|0;do if((c&2147483647...
function jA (line 313) | function jA(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}
function kA (line 313) | function kA(a,b){a=T(a);b=T(b);var c=0,d=0;c=lA(a)|0;do if((c&2147483647...
function lA (line 313) | function lA(a){a=T(a);return (g[j>>2]=a,c[j>>2]|0)|0}
function mA (line 313) | function mA(a,b){a=a|0;b=b|0;var c=0;c=hA(a)|0;return ((nA(a,1,c,b)|0)!=...
function nA (line 313) | function nA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=P(d,b)|0;d=(b...
function oA (line 313) | function oA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|...
function pA (line 313) | function pA(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=Hz...
function qA (line 313) | function qA(b){b=b|0;var d=0,e=0,f=0,g=0;f=c[584]|0;if((c[f+76>>2]|0)>-1...
function rA (line 313) | function rA(a,b){a=a|0;b=b|0;return Hz(c[584]|0,a,b)|0}
function sA (line 313) | function sA(a){a=a|0;Qa()}
function tA (line 313) | function tA(a){a=a|0;return}
function uA (line 313) | function uA(a,b){a=a|0;b=b|0;return 0}
function vA (line 313) | function vA(a){a=a|0;if((wA(a+4|0)|0)==-1){jb[c[(c[a>>2]|0)+8>>2]&127](a...
function wA (line 313) | function wA(a){a=a|0;var b=0;b=c[a>>2]|0;c[a>>2]=b+-1;return b+-1|0}
function xA (line 313) | function xA(a){a=a|0;if(vA(a)|0)yA(a);return}
function yA (line 313) | function yA(a){a=a|0;var b=0;b=a+8|0;if(!((c[b>>2]|0)!=0?(wA(b)|0)!=-1:0...
function zA (line 313) | function zA(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=qz(b)|0;if(a|0)br...
function AA (line 313) | function AA(a){a=a|0;return zA(a)|0}
function BA (line 313) | function BA(a){a=a|0;rz(a);return}
function CA (line 313) | function CA(){var a=0;a=c[2933]|0;c[2933]=a+0;return a|0}
function DA (line 313) | function DA(){}
function EA (line 313) | function EA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;r...
function FA (line 313)
Copy disabled (too large)
Download .json
Condensed preview — 667 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,311K chars).
[
{
"path": ".circleci/config.yml",
"chars": 895,
"preview": "version: 2\njobs:\n build:\n working_directory: ~/react-360\n docker:\n - image: circleci/node:10\n steps:\n "
},
{
"path": ".flowconfig",
"chars": 249,
"preview": "[ignore]\n.*/docs/.*\n.*/website/.*\n.*/__tests__/.*\n<PROJECT_ROOT>/addons/.*\n<PROJECT_ROOT>/node_modules/.*\n<PROJECT_ROOT>"
},
{
"path": ".gitattributes",
"chars": 17,
"preview": "*.sh text eol=lf\n"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 1043,
"preview": "We use GitHub Issues for bugs and feature requests\n\n--- Delete everything above this line before submitting your issue -"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1262,
"preview": "Thanks for submitting a PR! Please read these instructions carefully:\n\n- [ ] Explain the **motivation** for making this "
},
{
"path": ".gitignore",
"chars": 184,
"preview": "coverage/\nnode_modules\n*~\n.DS_Store\n*.log\nEndToEnd/testapp/build\npackage_builds\nwebsite/translated_docs\nwebsite/build\nwe"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 285,
"preview": "# Code of Conduct\n\nFacebook has adopted a Code of Conduct that we expect project participants to adhere to. Please [read"
},
{
"path": "CONTRIBUTING.md",
"chars": 2705,
"preview": "# Contributing to React 360\n\nReact 360 is actively being developed by Oculus and Facebook, and is used to power a growin"
},
{
"path": "LICENSE",
"chars": 1530,
"preview": "BSD License\n\nFor React 360 software\n\nCopyright (c) 2015-present, Facebook, Inc. All rights reserved.\n\nRedistribution and"
},
{
"path": "LICENSE-docs",
"chars": 18525,
"preview": "Attribution 4.0 International\n\n=======================================================================\n\nCreative Commons"
},
{
"path": "LICENSE-examples",
"chars": 579,
"preview": "The examples provided by Oculus are for non-commercial testing and evaluation\npurposes only. Oculus reserves all rights "
},
{
"path": "Libraries/.eslintrc.js",
"chars": 135,
"preview": "module.exports = {\n rules: {\n 'no-restricted-modules': ['error', 'three'],\n 'no-restricted-imports': ['error', 't"
},
{
"path": "Libraries/Camera/LiveEnvCamera.js",
"chars": 2079,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Components/View/PlatformViewPropTypes.vr.js",
"chars": 383,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Components/View/View.vr.js",
"chars": 20863,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Lights/AmbientLight.js",
"chars": 2703,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Lights/DirectionalLight.js",
"chars": 2457,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Lights/PointLight.js",
"chars": 2576,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Lights/SpotLight.js",
"chars": 2917,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Box.js",
"chars": 3820,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Cylinder.js",
"chars": 4318,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Entity.js",
"chars": 2533,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Model.js",
"chars": 5611,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Plane.js",
"chars": 3661,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Mesh/Sphere.js",
"chars": 4100,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Pano/Pano.js",
"chars": 4669,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Pano/Prefetch.js",
"chars": 2142,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Scene/Scene.js",
"chars": 1990,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Sound/Sound.js",
"chars": 9587,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/LayoutAndTransformColorPropTypes.js",
"chars": 869,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/LayoutAndTransformOpacityPropTypes.js",
"chars": 803,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/LayoutAndTransformPropTypes.js",
"chars": 712,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/LayoutAndTransformTintPropTypes.js",
"chars": 957,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/LayoutPropTypes.vr.js",
"chars": 9693,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/StyleSheet/ViewStylePropTypes.vr.js",
"chars": 775,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/MatrixMath.vr.js",
"chars": 1500,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/Platform.vr.js",
"chars": 492,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/ThreeJSConstants.js",
"chars": 429,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/VrHeadModel.js",
"chars": 5071,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/VrMath.js",
"chars": 5010,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/VrSoundEffects.js",
"chars": 4429,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/asset.js",
"chars": 652,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/createGlyph.js",
"chars": 712,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/staticAssetURL.js",
"chars": 813,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Utilities/texture.js",
"chars": 545,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRLayers/CylindricalPanel.js",
"chars": 4840,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRLayers/QuadPanel.js",
"chars": 4090,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/ControllerInfo.js",
"chars": 1186,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/Environment.js",
"chars": 2396,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/ExternalAssets.js",
"chars": 752,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/GlyphTextures.js",
"chars": 456,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/History.js",
"chars": 2700,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/Location.js",
"chars": 1037,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/ReactVRConstants.js",
"chars": 468,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRModules/VideoModule.js",
"chars": 6916,
"preview": "/**\n * Copyright 2015-present Oculus VR, LLC. All Rights Reserved.\n *\n * Video Module is the wrapper of native video mod"
},
{
"path": "Libraries/VRReactOverrides/AccessibilityInfo.vr.js",
"chars": 706,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/BackHandler.vr.js",
"chars": 594,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/HMRLoadingView.vr.js",
"chars": 790,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/Image.vr.js",
"chars": 6165,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/Interpolation.vr.js",
"chars": 9188,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/MaskedViewIOS.vr.js",
"chars": 416,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/NetworkOverlay.vr.js",
"chars": 506,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/CheckBox.vr.js",
"chars": 438,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/DatePickerAndroid.vr.js",
"chars": 531,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/DatePickerIOS.vr.js",
"chars": 519,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/DrawerLayoutAndroid.vr.js",
"chars": 537,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/NavigationExperimental.vr.js",
"chars": 546,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/NavigatorBreadcrumbNavigationBarStyles.vr.js",
"chars": 594,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/NavigatorIOS.vr.js",
"chars": 516,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/PickerAndroid.vr.js",
"chars": 519,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/PickerIOS.vr.js",
"chars": 507,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/ProgressBarAndroid.vr.js",
"chars": 534,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/ProgressViewIOS.vr.js",
"chars": 525,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/RecyclerViewBackedScrollview.vr.js",
"chars": 564,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/SafeAreaView.vr.js",
"chars": 442,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/SegmentedControlIOS.vr.js",
"chars": 537,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/SnapshotViewIOS.vr.js",
"chars": 525,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/StatusBarIOS.vr.js",
"chars": 516,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/TabBarIOS.vr.js",
"chars": 507,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/TimePickerAndroid.vr.js",
"chars": 531,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/ToastAndroid.vr.js",
"chars": 516,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/ToolbarAndroid.vr.js",
"chars": 522,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/TouchableNativeFeedback.vr.js",
"chars": 549,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/VibrationIOS.vr.js",
"chars": 516,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/ViewPagerAndroid.vr.js",
"chars": 528,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/PlatformSpecific/WebView.vr.js",
"chars": 501,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/RCTNetworking.vr.js",
"chars": 2416,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/ReactNativeViewAttributes.vr.js",
"chars": 2014,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/Settings.vr.js",
"chars": 879,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/TVEventHandler.vr.js",
"chars": 569,
"preview": "/**\n * Copyright (c) 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/Text.vr.js",
"chars": 12784,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/TransformPropTypes.vr.js",
"chars": 2854,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/YellowBox.vr.js",
"chars": 730,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/processTransform.vr.js",
"chars": 7537,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VRReactOverrides/setupDevtools.vr.js",
"chars": 3186,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Video/MediaPlayerState.js",
"chars": 4365,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Video/Video.js",
"chars": 9740,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Video/VideoControl.js",
"chars": 10750,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/Video/VideoUtils.js",
"chars": 797,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VideoPano/VideoPano.js",
"chars": 10303,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VrAnimated/VrAnimated.js",
"chars": 1602,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/VrButton/VrButton.js",
"chars": 18052,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "Libraries/react-360.js",
"chars": 2684,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "OVRUI/fonts/cjk_0.fnt",
"chars": 1199532,
"preview": "{\n\"CenterOffset\": 0.005000,\n\"EdgeWidth\": 128,\n\"FontHeight\": 384,\n\"HorizontalPad\": 64,\n\"NaturalHeight\": 22655,\n\"NaturalWi"
},
{
"path": "OVRUI/fonts/cjk_1.fnt",
"chars": 1269960,
"preview": "{\n\"CenterOffset\": 0.005000,\n\"EdgeWidth\": 128,\n\"FontHeight\": 384,\n\"HorizontalPad\": 64,\n\"NaturalHeight\": 23843,\n\"NaturalWi"
},
{
"path": "OVRUI/fonts/cjk_2.fnt",
"chars": 752492,
"preview": "{\n\"CenterOffset\": 0.005000,\n\"EdgeWidth\": 128,\n\"FontHeight\": 384,\n\"HorizontalPad\": 64,\n\"NaturalHeight\": 13839,\n\"NaturalWi"
},
{
"path": "OVRUI/fonts/efigs.fnt",
"chars": 97274,
"preview": "{\n\"CenterOffset\": -0.010000,\n\"EdgeWidth\": 32,\n\"FontHeight\": 307,\n\"HorizontalPad\": 128,\n\"NaturalHeight\": 4461,\n\"NaturalWi"
},
{
"path": "OVRUI/fonts/greek.fnt",
"chars": 65965,
"preview": "{\n\t\"FontName\":\t\"greek.fnt\",\n\t\"CommandLine\":\t\"Droidsans.ttf greek\\\\greek -co -0.01 -ts 1.0 -hpad 128 -vpad 128 -sdf 256 1"
},
{
"path": "OVRUI/fonts/japanese.fnt",
"chars": 3740349,
"preview": "{\n\t\"FontName\":\t\"japanese.fnt\",\n\t\"CommandLine\":\t\"NotoSansCJKjp-Regular.otf japanese\\\\japanese -hpad 64 -vpad 64 -sdf 256 "
},
{
"path": "OVRUI/fonts/korean.fnt",
"chars": 2024943,
"preview": "{\n\t\"FontName\":\t\"korean.fnt\",\n\t\"CommandLine\":\t\"OculusSansKR-Rg.otf korean\\\\korean -hpad 64 -vpad 64 -sdf 256 4096 4096 -u"
},
{
"path": "OVRUI/fonts/korean_0.fnt",
"chars": 1246689,
"preview": "{\n\"CenterOffset\": -0.020000,\n\"EdgeWidth\": 32,\n\"FontHeight\": 307,\n\"HorizontalPad\": 64,\n\"NaturalHeight\": 22076,\n\"NaturalWi"
},
{
"path": "OVRUI/fonts/korean_1.fnt",
"chars": 456893,
"preview": "{\n\"CenterOffset\": -0.020000,\n\"EdgeWidth\": 32,\n\"FontHeight\": 307,\n\"HorizontalPad\": 64,\n\"NaturalHeight\": 16282,\n\"NaturalWi"
},
{
"path": "README.md",
"chars": 3114,
"preview": "# React 360 [](https://badge.fury.io/js/react-360) [ 2015-present, Facebook, Inc. All rights reserved.\n\nRedistribution and"
},
{
"path": "React360/PATENTS",
"chars": 1978,
"preview": "Additional Grant of Patent Rights Version 2\n\n\"Software\" means the React 360 software distributed by Facebook, Inc.\n\nFace"
},
{
"path": "React360/README.md",
"chars": 464,
"preview": "# `react-360-web`\n\n`react-360-web` is the runtime environment for React 360 that allows applications\nto render in a web "
},
{
"path": "React360/React360.js",
"chars": 1012,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/AudioTypes.js",
"chars": 623,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/MediaError.js",
"chars": 990,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/OVRAudio.js",
"chars": 535,
"preview": "/*\n * Copyright (c) 2016-present, Oculus, LLC\n * All rights reserved.\n *\n * This source code is licensed under the licen"
},
{
"path": "React360/js/Audio/VRAudioBufferManager.js",
"chars": 2880,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/VRAudioBufferSource.js",
"chars": 5402,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/VRAudioComponent.js",
"chars": 5918,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/VRAudioContext.js",
"chars": 2164,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Audio/getSupportedFormats.js",
"chars": 780,
"preview": "/*\n * Copyright (c) 2016-present, Oculus, LLC\n * All rights reserved.\n *\n * This source code is licensed under the licen"
},
{
"path": "React360/js/Bridge/Bridge.js",
"chars": 695,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Bridge/WebWorkerBridge.js",
"chars": 4132,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Audio/AudioInstance.js",
"chars": 3995,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Audio/AudioNode.js",
"chars": 3737,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Audio/Types.js",
"chars": 790,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Compositor.js",
"chars": 7594,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Cursor.js",
"chars": 1816,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/CubemapGeometry.js",
"chars": 3151,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/Environment.js",
"chars": 12767,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/EnvironmentUtils.js",
"chars": 748,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/Screen.js",
"chars": 2900,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/StereoBasicTextureMaterial.js",
"chars": 2733,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/StereoShaderLib.js",
"chars": 2266,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/StereoTextureUniforms.js",
"chars": 1049,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Environment/Types.js",
"chars": 481,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Glyphs.js",
"chars": 2716,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Location.js",
"chars": 1438,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Overlay.js",
"chars": 5584,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Surface.js",
"chars": 11011,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/SurfaceManager.js",
"chars": 1676,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/VRState.js",
"chars": 4006,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Video/BrowserVideoPlayer.js",
"chars": 7393,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Video/Types.js",
"chars": 2456,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Video/VideoPlayer.js",
"chars": 2851,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Compositor/Video/VideoPlayerManager.js",
"chars": 2388,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/CameraControllers/DeviceOrientationCameraController.js",
"chars": 6492,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/CameraControllers/MousePanCameraController.js",
"chars": 5045,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/CameraControllers/ScrollPanCameraController.js",
"chars": 2715,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/CameraControllers/Types.js",
"chars": 485,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Controls.js",
"chars": 2845,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/InputChannels/GamepadInputChannel.js",
"chars": 6399,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/InputChannels/KeyboardInputChannel.js",
"chars": 2115,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/InputChannels/MouseInputChannel.js",
"chars": 1563,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/InputChannels/TouchInputChannel.js",
"chars": 1549,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/InputChannels/Types.js",
"chars": 698,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Raycasters/ControllerRaycaster.js",
"chars": 5667,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Raycasters/MouseRaycaster.js",
"chars": 2238,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Raycasters/TouchRaycaster.js",
"chars": 3598,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Raycasters/Types.js",
"chars": 580,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Types.js",
"chars": 802,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/Utils/ControllerRenderer.js",
"chars": 2974,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Controls/__tests__/InputChannels-test.js",
"chars": 1598,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Events/MediaEvent.js",
"chars": 893,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Executor/NonBlobBridge.js",
"chars": 3331,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Executor/ReactExecutor.js",
"chars": 4185,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Executor/ReactExecutorIframe.js",
"chars": 3237,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Executor/ReactExecutorNonBlobWebWorker.js",
"chars": 2093,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Executor/ReactExecutorWebWorker.js",
"chars": 2227,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/GLTF2ModelLoader.js",
"chars": 6329,
"preview": "/*\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BS"
},
{
"path": "React360/js/Loaders/ModelLoaderRegistry.js",
"chars": 2265,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/ObjModelLoader.js",
"chars": 9604,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/MTLLoader.js",
"chars": 5929,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/MTLParser.js",
"chars": 13773,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/OBJGroup.js",
"chars": 4791,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/OBJLoader.js",
"chars": 1857,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/OBJParser.js",
"chars": 10789,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/OBJTypes.js",
"chars": 854,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/README.md",
"chars": 328,
"preview": "# Parser and loader for Waveform OBJ files\n\nThis code is capable of loading OBJ and MTL files and producing intermediate"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/__tests__/MTLParser-test.js",
"chars": 6941,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/__tests__/OBJGroup-test.js",
"chars": 4132,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/__tests__/OBJLoader-test.js",
"chars": 2778,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Loaders/WavefrontOBJ/__tests__/OBJParser-test.js",
"chars": 7830,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/AndroidConstants.js",
"chars": 599,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/AsyncLocalStorage.js",
"chars": 9486,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/AudioModule.js",
"chars": 6262,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/ControllerInfo.js",
"chars": 2281,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/DeviceInfo.js",
"chars": 1075,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/EnvironmentModule.js",
"chars": 3613,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/ExternalAssets.js",
"chars": 734,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/GlyphTextures.js",
"chars": 2983,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/History.js",
"chars": 5034,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/LinkingManager.js",
"chars": 2488,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/Location.js",
"chars": 1781,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
},
{
"path": "React360/js/Modules/LocationObserver.js",
"chars": 3174,
"preview": "/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the B"
}
]
// ... and 467 more files (download for full content)
About this extraction
This page contains the full source code of the facebookarchive/react-360 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 667 files (16.1 MB), approximately 4.3M tokens, and a symbol index with 8330 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.