From eccbde4ebbbadbbd3ad3c01d350dac9a02d85867 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Wed, 30 Oct 2024 11:43:21 +0800 Subject: [PATCH 01/14] chore(release): publish packages - thermion_dart@0.2.1-dev.0.0.14 - thermion_flutter@0.2.1-dev.14 - thermion_flutter_platform_interface@0.2.1-dev.14 - thermion_flutter_ffi@0.2.1-dev.14 - thermion_flutter_web@0.2.0+5 --- CHANGELOG.md | 37 +++++++++++++++++++ thermion_dart/CHANGELOG.md | 7 ++++ thermion_dart/pubspec.yaml | 2 +- .../thermion_flutter/CHANGELOG.md | 4 ++ .../thermion_flutter/pubspec.yaml | 10 ++--- .../thermion_flutter_ffi/CHANGELOG.md | 4 ++ .../thermion_flutter_ffi/pubspec.yaml | 6 +-- .../CHANGELOG.md | 4 ++ .../pubspec.yaml | 4 +- .../thermion_flutter_web/CHANGELOG.md | 4 ++ .../thermion_flutter_web/pubspec.yaml | 6 +-- 11 files changed, 74 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bc1435d..0798c72e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,43 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2024-10-30 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`thermion_dart` - `v0.2.1-dev.0.0.14`](#thermion_dart---v021-dev0014) + - [`thermion_flutter` - `v0.2.1-dev.14`](#thermion_flutter---v021-dev14) + - [`thermion_flutter_platform_interface` - `v0.2.1-dev.14`](#thermion_flutter_platform_interface---v021-dev14) + - [`thermion_flutter_ffi` - `v0.2.1-dev.14`](#thermion_flutter_ffi---v021-dev14) + - [`thermion_flutter_web` - `v0.2.0+5`](#thermion_flutter_web---v0205) + +Packages with dependency updates only: + +> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project. + + - `thermion_flutter` - `v0.2.1-dev.14` + - `thermion_flutter_platform_interface` - `v0.2.1-dev.14` + - `thermion_flutter_ffi` - `v0.2.1-dev.14` + - `thermion_flutter_web` - `v0.2.0+5` + +--- + +#### `thermion_dart` - `v0.2.1-dev.0.0.14` + + - **FIX**: reduce size of pick functor for compatibility with armeabi-v7a. + - **FEAT**: sanitize file paths in build.dart for Windows compatibility. + - **FEAT**: pass through fragment coordinates for picking. + - **FEAT**: pass through fragment coordinates for picking. + + ## 2024-10-29 ### Changes diff --git a/thermion_dart/CHANGELOG.md b/thermion_dart/CHANGELOG.md index 0df1f520..c7e752b1 100644 --- a/thermion_dart/CHANGELOG.md +++ b/thermion_dart/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.2.1-dev.0.0.14 + + - **FIX**: reduce size of pick functor for compatibility with armeabi-v7a. + - **FEAT**: sanitize file paths in build.dart for Windows compatibility. + - **FEAT**: pass through fragment coordinates for picking. + - **FEAT**: pass through fragment coordinates for picking. + ## 0.2.1-dev.0.0.13 - **FIX**: properly pass through loadResourcesAsync flag for loadGlbFromBuffer. diff --git a/thermion_dart/pubspec.yaml b/thermion_dart/pubspec.yaml index e4846e3a..8e276589 100644 --- a/thermion_dart/pubspec.yaml +++ b/thermion_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_dart description: 3D rendering toolkit for Dart. -version: 0.2.1-dev.0.0.13 +version: 0.2.1-dev.0.0.14 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion diff --git a/thermion_flutter/thermion_flutter/CHANGELOG.md b/thermion_flutter/thermion_flutter/CHANGELOG.md index 9e347077..e921e0be 100644 --- a/thermion_flutter/thermion_flutter/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.14 + + - Update a dependency to the latest release. + ## 0.2.1-dev.13 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter/pubspec.yaml b/thermion_flutter/thermion_flutter/pubspec.yaml index a78281c8..141812bb 100644 --- a/thermion_flutter/thermion_flutter/pubspec.yaml +++ b/thermion_flutter/thermion_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_flutter description: Flutter plugin for 3D rendering with the Thermion toolkit. -version: 0.2.1-dev.13 +version: 0.2.1-dev.14 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion @@ -17,10 +17,10 @@ dependencies: plugin_platform_interface: ^2.0.0 ffi: ^2.1.2 animation_tools_dart: ^0.1.0 - thermion_dart: ^0.2.1-dev.0.0.13 - thermion_flutter_platform_interface: ^0.2.1-dev.13 - thermion_flutter_ffi: ^0.2.1-dev.13 - thermion_flutter_web: ^0.2.0+4 + thermion_dart: ^0.2.1-dev.0.0.14 + thermion_flutter_platform_interface: ^0.2.1-dev.14 + thermion_flutter_ffi: ^0.2.1-dev.14 + thermion_flutter_web: ^0.2.0+5 logging: ^1.2.0 web: ^1.0.0 diff --git a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md index 24991c48..6db9b322 100644 --- a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.14 + + - Update a dependency to the latest release. + ## 0.2.1-dev.13 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml index 6e4ad7d1..14a658d5 100644 --- a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_ffi description: An FFI implementation for thermion_flutter (i.e. all platforms except web). repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.13 +version: 0.2.1-dev.14 environment: sdk: ">=3.3.0 <4.0.0" @@ -23,8 +23,8 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_flutter_platform_interface: ^0.2.1-dev.13 - thermion_dart: ^0.2.1-dev.0.0.13 + thermion_flutter_platform_interface: ^0.2.1-dev.14 + thermion_dart: ^0.2.1-dev.0.0.14 logging: ^1.2.0 dev_dependencies: diff --git a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md index 745fdd74..deee69e5 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.14 + + - Update a dependency to the latest release. + ## 0.2.1-dev.13 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml index 4c8fbb70..dd3cca15 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_platform_interface description: A common platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.13 +version: 0.2.1-dev.14 environment: sdk: ">=3.3.0 <4.0.0" @@ -11,7 +11,7 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_dart: ^0.2.1-dev.0.0.13 + thermion_dart: ^0.2.1-dev.0.0.14 dev_dependencies: flutter_test: diff --git a/thermion_flutter/thermion_flutter_web/CHANGELOG.md b/thermion_flutter/thermion_flutter_web/CHANGELOG.md index bd00d94b..ea787d33 100644 --- a/thermion_flutter/thermion_flutter_web/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.0+5 + + - Update a dependency to the latest release. + ## 0.2.0+4 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_web/pubspec.yaml b/thermion_flutter/thermion_flutter_web/pubspec.yaml index a74415ef..de9969b9 100644 --- a/thermion_flutter/thermion_flutter_web/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_web/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_web description: A web platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.0+4 +version: 0.2.0+5 environment: sdk: ">=3.3.0 <4.0.0" @@ -20,8 +20,8 @@ dependencies: sdk: flutter plugin_platform_interface: ^2.1.0 web: ^1.0.0 - thermion_dart: ^0.2.1-dev.0.0.13 - thermion_flutter_platform_interface: ^0.2.1-dev.13 + thermion_dart: ^0.2.1-dev.0.0.14 + thermion_flutter_platform_interface: ^0.2.1-dev.14 flutter_web_plugins: sdk: flutter From 8c2b8a6cbab2c50ba23443af8b60eb92269a2fbc Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 15:27:49 +0800 Subject: [PATCH 02/14] feat: expose zoomSensitivity argument for flight input handler --- thermion_dart/lib/src/input/src/delegate_input_handler.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/thermion_dart/lib/src/input/src/delegate_input_handler.dart b/thermion_dart/lib/src/input/src/delegate_input_handler.dart index 2a68acb0..3534e67b 100644 --- a/thermion_dart/lib/src/input/src/delegate_input_handler.dart +++ b/thermion_dart/lib/src/input/src/delegate_input_handler.dart @@ -82,6 +82,7 @@ class DelegateInputHandler implements InputHandler { {PickDelegate? pickDelegate, bool freeLook = false, double panSensitivity = 0.1, + double zoomSensitivity = 0.1, double movementSensitivity = 0.1, double rotateSensitivity = 0.01, double? clampY, @@ -93,6 +94,7 @@ class DelegateInputHandler implements InputHandler { clampY: clampY, entity: entity, rotationSensitivity: rotateSensitivity, + zoomSensitivity:zoomSensitivity, panSensitivity: panSensitivity, movementSensitivity: movementSensitivity), actions: { From d25edfc097e5b6acdb92aeb7f2baa54160f43dce Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 15:30:49 +0800 Subject: [PATCH 03/14] fix: remove superfluous ceil() calls for picking coordinates --- .../lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart index 28860863..212c0638 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart @@ -1514,7 +1514,7 @@ class ThermionViewerFFI extends ThermionViewer { final viewport = await view.getViewport(); _pickResultController - .add((entity: entityId, x: x.ceil(), y: (viewport.height - y).ceil(), depth: depth, fragX: fragX, fragY: viewport.height - fragY, fragZ: fragZ )); + .add((entity: entityId, x: x, y: (viewport.height - y), depth: depth, fragX: fragX, fragY: viewport.height - fragY, fragZ: fragZ )); } late NativeCallable< @@ -1528,7 +1528,7 @@ class ThermionViewerFFI extends ThermionViewer { Future pick(int x, int y) async { final view = (await getViewAt(0)) as FFIView; var viewport = await view.getViewport(); - y = (viewport.height - y).ceil(); + y = viewport.height - y; Viewer_pick( _viewer!, view.view, x, y, _onPickResultCallable.nativeFunction); } From dff214259ad39cf18914a3d03d882371ff1e5060 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 15:31:18 +0800 Subject: [PATCH 04/14] fix: multiply coordinates by pixelRatio for scale events --- .../lib/src/widgets/src/thermion_listener_widget.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_listener_widget.dart b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_listener_widget.dart index 6b67c0ab..885abc23 100644 --- a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_listener_widget.dart +++ b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_listener_widget.dart @@ -165,12 +165,12 @@ class _MobileListenerWidgetState extends State<_MobileListenerWidget> { }, onScaleStart: (details) async { await widget.inputHandler.onScaleStart( - details.localFocalPoint.toVector2(), details.pointerCount, details.sourceTimeStamp); + details.localFocalPoint.toVector2() * widget.pixelRatio, details.pointerCount, details.sourceTimeStamp); }, onScaleUpdate: (ScaleUpdateDetails details) async { await widget.inputHandler.onScaleUpdate( - details.localFocalPoint.toVector2(), - details.focalPointDelta.toVector2(), + details.localFocalPoint.toVector2() * widget.pixelRatio, + details.focalPointDelta.toVector2() * widget.pixelRatio, details.horizontalScale, details.verticalScale, details.scale, From d1924cfdf460a77806bfe13f098857db67dca5bf Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 15:31:41 +0800 Subject: [PATCH 05/14] chore: add logging to ThermionTextureWidget --- .../src/widgets/src/thermion_texture_widget.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart index ae4c982d..0f56dd3a 100644 --- a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart +++ b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart @@ -68,12 +68,22 @@ class _ThermionTextureWidgetState extends State { var dpr = MediaQuery.of(context).devicePixelRatio; var size = ((context.findRenderObject()) as RenderBox).size; + + _logger.info( + "Widget size in logical pixels ${size} (pixel ratio : $dpr)"); + var width = (size.width * dpr).ceil(); var height = (size.height * dpr).ceil(); + _logger.info( + "Target texture dimensions ${width}x${height} (pixel ratio : $dpr)"); + _texture = await ThermionFlutterPlatform.instance .createTexture(widget.view, width, height); + _logger.info( + "Actual texture dimensions ${_texture!.width}x${_texture!.height} (pixel ratio : $dpr)"); + await widget.view.updateViewport(_texture!.width, _texture!.height); try { @@ -177,6 +187,9 @@ class _ThermionTextureWidgetState extends State { var newWidth = newSize.width.ceil(); var newHeight = newSize.height.ceil(); + _logger.info( + "Resizing texture to dimensions ${newWidth}x${newHeight} (pixel ratio : $dpr)"); + await _texture?.resize( newWidth, newHeight, @@ -184,6 +197,9 @@ class _ThermionTextureWidgetState extends State { 0, ); + _logger.info( + "Resized texture to dimensions ${_texture!.width}x${_texture!.height} (pixel ratio : $dpr)"); + await widget.view.updateViewport(_texture!.width, _texture!.height); await widget.onResize?.call( From 33e5350605b505ec64c0d3a9643d9257628b327f Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 15:32:22 +0800 Subject: [PATCH 06/14] chore(release): publish packages - thermion_dart@0.2.1-dev.0.0.15 - thermion_flutter@0.2.1-dev.15 - thermion_flutter_web@0.2.0+6 - thermion_flutter_platform_interface@0.2.1-dev.15 - thermion_flutter_ffi@0.2.1-dev.15 --- CHANGELOG.md | 38 +++++++++++++++++++ thermion_dart/CHANGELOG.md | 5 +++ thermion_dart/pubspec.yaml | 2 +- .../thermion_flutter/CHANGELOG.md | 4 ++ .../thermion_flutter/pubspec.yaml | 10 ++--- .../thermion_flutter_ffi/CHANGELOG.md | 4 ++ .../thermion_flutter_ffi/pubspec.yaml | 6 +-- .../CHANGELOG.md | 4 ++ .../pubspec.yaml | 4 +- .../thermion_flutter_web/CHANGELOG.md | 4 ++ .../thermion_flutter_web/pubspec.yaml | 6 +-- 11 files changed, 73 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0798c72e..ae31d923 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,44 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2024-10-31 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`thermion_dart` - `v0.2.1-dev.0.0.15`](#thermion_dart---v021-dev0015) + - [`thermion_flutter` - `v0.2.1-dev.15`](#thermion_flutter---v021-dev15) + - [`thermion_flutter_web` - `v0.2.0+6`](#thermion_flutter_web---v0206) + - [`thermion_flutter_platform_interface` - `v0.2.1-dev.15`](#thermion_flutter_platform_interface---v021-dev15) + - [`thermion_flutter_ffi` - `v0.2.1-dev.15`](#thermion_flutter_ffi---v021-dev15) + +Packages with dependency updates only: + +> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project. + + - `thermion_flutter_web` - `v0.2.0+6` + - `thermion_flutter_platform_interface` - `v0.2.1-dev.15` + - `thermion_flutter_ffi` - `v0.2.1-dev.15` + +--- + +#### `thermion_dart` - `v0.2.1-dev.0.0.15` + + - **FIX**: remove superfluous ceil() calls for picking coordinates. + - **FEAT**: expose zoomSensitivity argument for flight input handler. + +#### `thermion_flutter` - `v0.2.1-dev.15` + + - **FIX**: multiply coordinates by pixelRatio for scale events. + + ## 2024-10-30 ### Changes diff --git a/thermion_dart/CHANGELOG.md b/thermion_dart/CHANGELOG.md index c7e752b1..5e0997e8 100644 --- a/thermion_dart/CHANGELOG.md +++ b/thermion_dart/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.2.1-dev.0.0.15 + + - **FIX**: remove superfluous ceil() calls for picking coordinates. + - **FEAT**: expose zoomSensitivity argument for flight input handler. + ## 0.2.1-dev.0.0.14 - **FIX**: reduce size of pick functor for compatibility with armeabi-v7a. diff --git a/thermion_dart/pubspec.yaml b/thermion_dart/pubspec.yaml index 8e276589..880add89 100644 --- a/thermion_dart/pubspec.yaml +++ b/thermion_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_dart description: 3D rendering toolkit for Dart. -version: 0.2.1-dev.0.0.14 +version: 0.2.1-dev.0.0.15 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion diff --git a/thermion_flutter/thermion_flutter/CHANGELOG.md b/thermion_flutter/thermion_flutter/CHANGELOG.md index e921e0be..ad15928e 100644 --- a/thermion_flutter/thermion_flutter/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.15 + + - **FIX**: multiply coordinates by pixelRatio for scale events. + ## 0.2.1-dev.14 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter/pubspec.yaml b/thermion_flutter/thermion_flutter/pubspec.yaml index 141812bb..90936561 100644 --- a/thermion_flutter/thermion_flutter/pubspec.yaml +++ b/thermion_flutter/thermion_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_flutter description: Flutter plugin for 3D rendering with the Thermion toolkit. -version: 0.2.1-dev.14 +version: 0.2.1-dev.15 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion @@ -17,10 +17,10 @@ dependencies: plugin_platform_interface: ^2.0.0 ffi: ^2.1.2 animation_tools_dart: ^0.1.0 - thermion_dart: ^0.2.1-dev.0.0.14 - thermion_flutter_platform_interface: ^0.2.1-dev.14 - thermion_flutter_ffi: ^0.2.1-dev.14 - thermion_flutter_web: ^0.2.0+5 + thermion_dart: ^0.2.1-dev.0.0.15 + thermion_flutter_platform_interface: ^0.2.1-dev.15 + thermion_flutter_ffi: ^0.2.1-dev.15 + thermion_flutter_web: ^0.2.0+6 logging: ^1.2.0 web: ^1.0.0 diff --git a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md index 6db9b322..a2d4472a 100644 --- a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.15 + + - Update a dependency to the latest release. + ## 0.2.1-dev.14 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml index 14a658d5..bc5b7b6a 100644 --- a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_ffi description: An FFI implementation for thermion_flutter (i.e. all platforms except web). repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.14 +version: 0.2.1-dev.15 environment: sdk: ">=3.3.0 <4.0.0" @@ -23,8 +23,8 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_flutter_platform_interface: ^0.2.1-dev.14 - thermion_dart: ^0.2.1-dev.0.0.14 + thermion_flutter_platform_interface: ^0.2.1-dev.15 + thermion_dart: ^0.2.1-dev.0.0.15 logging: ^1.2.0 dev_dependencies: diff --git a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md index deee69e5..419f57ee 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.15 + + - Update a dependency to the latest release. + ## 0.2.1-dev.14 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml index dd3cca15..04508581 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_platform_interface description: A common platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.14 +version: 0.2.1-dev.15 environment: sdk: ">=3.3.0 <4.0.0" @@ -11,7 +11,7 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_dart: ^0.2.1-dev.0.0.14 + thermion_dart: ^0.2.1-dev.0.0.15 dev_dependencies: flutter_test: diff --git a/thermion_flutter/thermion_flutter_web/CHANGELOG.md b/thermion_flutter/thermion_flutter_web/CHANGELOG.md index ea787d33..737a3fd9 100644 --- a/thermion_flutter/thermion_flutter_web/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.0+6 + + - Update a dependency to the latest release. + ## 0.2.0+5 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_web/pubspec.yaml b/thermion_flutter/thermion_flutter_web/pubspec.yaml index de9969b9..116824e1 100644 --- a/thermion_flutter/thermion_flutter_web/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_web/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_web description: A web platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.0+5 +version: 0.2.0+6 environment: sdk: ">=3.3.0 <4.0.0" @@ -20,8 +20,8 @@ dependencies: sdk: flutter plugin_platform_interface: ^2.1.0 web: ^1.0.0 - thermion_dart: ^0.2.1-dev.0.0.14 - thermion_flutter_platform_interface: ^0.2.1-dev.14 + thermion_dart: ^0.2.1-dev.0.0.15 + thermion_flutter_platform_interface: ^0.2.1-dev.15 flutter_web_plugins: sdk: flutter From 708e90117d40ae7246f005fb975c25034562851b Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 16:19:44 +0800 Subject: [PATCH 07/14] doc: update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c81966ec..69572534 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,13 @@ ### Quickstart (Flutter) -``` +```bash flutter channel master flutter upgrade flutter config --enable-native-assets ``` -``` +```dart _thermionViewer = await ThermionFlutterPlugin.createViewer(); // Geometry and models are represented as "entities". Here, we load a glTF From 0f56cbe7e79213b6e8b06d7ed962b57849ca6c25 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 17:06:43 +0800 Subject: [PATCH 08/14] doc: README --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 69572534..44d15151 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,16 @@ ### Quickstart (Flutter) +From the command line: + ```bash flutter channel master flutter upgrade flutter config --enable-native-assets ``` +In your Flutter app: + ```dart _thermionViewer = await ThermionFlutterPlugin.createViewer(); @@ -61,8 +65,8 @@ await _thermionViewer!.loadIbl("assets/default_env_ibl.ktx"); await _thermionViewer!.setRendering(true); ``` -and then in your Flutter application: -``` +and then in your widget tree: +```dart @override Widget build(BuildContext context) { return Stack(children: [ From c77ede91099668e6c28f59e31242b2faa2fa6315 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 17:07:51 +0800 Subject: [PATCH 09/14] doc: fix links in README --- README.md | 2 +- thermion_dart/README.md | 2 +- thermion_flutter/thermion_flutter/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 44d15151..f7a9a006 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

Quickstart (Flutter)Documentation • - Showcase • + ShowcasePlaygroundDiscord

diff --git a/thermion_dart/README.md b/thermion_dart/README.md index 89b9b6bd..f8387082 100644 --- a/thermion_dart/README.md +++ b/thermion_dart/README.md @@ -3,7 +3,7 @@

Quickstart (Flutter)Documentation • - Showcase • + ShowcasePlaygroundDiscord

diff --git a/thermion_flutter/thermion_flutter/README.md b/thermion_flutter/thermion_flutter/README.md index 851773ec..f7d14358 100644 --- a/thermion_flutter/thermion_flutter/README.md +++ b/thermion_flutter/thermion_flutter/README.md @@ -3,7 +3,7 @@

Quickstart (Flutter)Documentation • - Showcase • + ShowcasePlaygroundDiscord

From 4650ae129595dc492d59f3ec0525b7e8a434c184 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 22:34:51 +0800 Subject: [PATCH 10/14] feat: Rename Gizmo material to UnlitFixedSize, and expose methods for using this material on other entities. Also exposes new methods for setting single float parameters. --- Makefile | 2 +- materials/{gizmo.mat => unlit_fixed_size.mat} | 18 +- thermion_dart/hook/build.dart | 2 +- .../viewer/src/ffi/src/thermion_dart.g.dart | 49 +- .../src/ffi/src/thermion_viewer_ffi.dart | 24 +- .../src/viewer/src/shared_types/material.dart | 1 + .../src/viewer/src/thermion_viewer_base.dart | 5 + .../src/web_wasm/src/material_instance.dart | 6 + thermion_dart/native/include/Gizmo.hpp | 8 +- thermion_dart/native/include/GridOverlay.hpp | 3 - thermion_dart/native/include/SceneManager.hpp | 13 +- thermion_dart/native/include/TGizmo.h | 1 - .../native/include/ThermionDartApi.h | 3 + .../include/ThermionDartRenderThreadApi.h | 1 + thermion_dart/native/include/material/gizmo.S | 12 - .../native/include/material/gizmo.apple.S | 12 - .../native/include/material/gizmo.bin | Bin 27809 -> 0 bytes thermion_dart/native/include/material/gizmo.h | 13 - .../native/include/material/gizmo_material.c | 1401 ---------------- .../include/material/unlit_fixed_size.S | 12 + .../include/material/unlit_fixed_size.apple.S | 12 + .../include/material/unlit_fixed_size.bin | Bin 0 -> 28235 bytes .../include/material/unlit_fixed_size.c | 1422 +++++++++++++++++ .../include/material/unlit_fixed_size.h | 13 + thermion_dart/native/src/Gizmo.cpp | 13 +- thermion_dart/native/src/SceneManager.cpp | 339 ++-- thermion_dart/native/src/TGizmo.cpp | 9 - thermion_dart/native/src/ThermionDartApi.cpp | 18 + .../src/ThermionDartRenderThreadApi.cpp | 10 + thermion_dart/native/web/CMakeLists.txt | 2 +- thermion_dart/test/material_tests.dart | 23 + 31 files changed, 1813 insertions(+), 1634 deletions(-) rename materials/{gizmo.mat => unlit_fixed_size.mat} (68%) delete mode 100644 thermion_dart/native/include/material/gizmo.S delete mode 100644 thermion_dart/native/include/material/gizmo.apple.S delete mode 100644 thermion_dart/native/include/material/gizmo.bin delete mode 100644 thermion_dart/native/include/material/gizmo.h delete mode 100644 thermion_dart/native/include/material/gizmo_material.c create mode 100644 thermion_dart/native/include/material/unlit_fixed_size.S create mode 100644 thermion_dart/native/include/material/unlit_fixed_size.apple.S create mode 100644 thermion_dart/native/include/material/unlit_fixed_size.bin create mode 100644 thermion_dart/native/include/material/unlit_fixed_size.c create mode 100644 thermion_dart/native/include/material/unlit_fixed_size.h diff --git a/Makefile b/Makefile index 3c85a7be..c6a7a37c 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ bindings: # materials: FORCE @echo "Using Filament build from ${FILAMENT_PATH}" - @for material in unlit image gizmo grid; do \ + @for material in unlit image unlit_fixed_size grid; do \ ${FILAMENT_PATH}/matc -a opengl -a metal -o materials/$$material.filamat materials/$$material.mat; \ $(FILAMENT_PATH)/resgen -c -p $$material -x thermion_dart/native/include/material/ materials/$$material.filamat; \ echo '#include "'$$material'.h"' | cat - thermion_dart/native/include/material/$$material.c > thermion_dart/native/include/material/$$material.c.new; \ diff --git a/materials/gizmo.mat b/materials/unlit_fixed_size.mat similarity index 68% rename from materials/gizmo.mat rename to materials/unlit_fixed_size.mat index df673663..6444abaa 100644 --- a/materials/gizmo.mat +++ b/materials/unlit_fixed_size.mat @@ -1,5 +1,5 @@ material { - name : Gizmo, + name : UnlitFixedSize, parameters : [ { type : mat4, @@ -8,8 +8,13 @@ }, { type : float4, - name : color, + name : baseColorFactor, precision : low + }, + { + type: float, // the number of world-space units between the camera and the (unscaled) gizmo + name: scale, + precision: low } ], depthWrite : true, @@ -24,14 +29,13 @@ vertex { void materialVertex(inout MaterialVertexInputs material) { - - // we want to ensure the gizmo has the same size (in screen-space), no matter the distance from the camera - // we do this by scaling the model-space vertex positions by the distance from the camera + // the object should have the same size (in screen-space), no matter the distance from the camera + // scale the model-space vertex positions by the distance from the camera vec4 modelSpace = getPosition(); vec4 worldSpace = getWorldFromModelMatrix() * modelSpace; vec4 viewSpace = getViewFromWorldMatrix() * worldSpace; float distanceFromCamera = length(viewSpace.xyz); - modelSpace.xyz *= (distanceFromCamera / 4.0f); // divide by 4 so that the size is equivalent to the camera being 4 world-space units away from the (unscaled) gizmo + modelSpace.xyz *= (distanceFromCamera / materialParams.scale); worldSpace = getWorldFromModelMatrix() * modelSpace; material.worldPosition = worldSpace; @@ -44,7 +48,7 @@ fragment { void material(inout MaterialInputs material) { prepareMaterial(material); - material.baseColor = materialParams.color; + material.baseColor = materialParams.baseColorFactor; } } diff --git a/thermion_dart/hook/build.dart b/thermion_dart/hook/build.dart index 09a31a28..ad993bc0 100644 --- a/thermion_dart/hook/build.dart +++ b/thermion_dart/hook/build.dart @@ -60,7 +60,7 @@ void main(List args) async { .map((f) => f.path) .toList(); sources.addAll([ - path.join(pkgRootFilePath, "native", "include", "material", "gizmo_material.c"), + path.join(pkgRootFilePath, "native", "include", "material", "unlit_fixed_size.c"), path.join(pkgRootFilePath, "native", "include", "material", "image.c"), path.join(pkgRootFilePath, "native", "include", "material", "grid.c"), path.join(pkgRootFilePath, "native", "include", "material", "unlit.c"), diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart index 6ce01183..da0e9990 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart @@ -621,6 +621,15 @@ external int get_bone( int boneIndex, ); +@ffi.Native< + ffi.Pointer Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(isLeaf: true) +external ffi.Pointer SceneManager_createGizmo( + ffi.Pointer tSceneManager, + ffi.Pointer tView, + ffi.Pointer tScene, +); + @ffi.Native< EntityId Function( ffi.Pointer, @@ -658,6 +667,14 @@ external ffi.Pointer ffi.Pointer sceneManager, ); +@ffi.Native< + ffi.Pointer Function( + ffi.Pointer)>(isLeaf: true) +external ffi.Pointer + SceneManager_createUnlitFixedSizeMaterialInstance( + ffi.Pointer sceneManager, +); + @ffi.Native< ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer)>(isLeaf: true) @@ -1206,6 +1223,15 @@ external void MaterialInstance_setParameterFloat2( double y, ); +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double)>(isLeaf: true) +external void MaterialInstance_setParameterFloat( + ffi.Pointer materialInstance, + ffi.Pointer name, + double value, +); + @ffi.Native)>(isLeaf: true) external TViewport View_getViewport( ffi.Pointer view, @@ -1608,6 +1634,20 @@ external void SceneManager_createUnlitMaterialInstanceRenderThread( callback, ); +@ffi.Native< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer)>>)>(isLeaf: true) +external void SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread( + ffi.Pointer sceneManager, + ffi.Pointer< + ffi.NativeFunction)>> + callback, +); + @ffi.Native< ffi.Void Function( ffi.Pointer, @@ -2028,15 +2068,6 @@ void Camera_setProjection( far, ); -@ffi.Native< - ffi.Pointer Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(isLeaf: true) -external ffi.Pointer Gizmo_new( - ffi.Pointer tEngine, - ffi.Pointer tView, - ffi.Pointer tScene, -); - @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Uint32, ffi.Uint32, GizmoPickCallback)>(isLeaf: true) diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart index 212c0638..01afe50b 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart @@ -2035,6 +2035,9 @@ class ThermionViewerFFI extends ThermionViewer { destroy_material_instance(_sceneManager!, materialInstance._pointer); } + /// + /// + /// Future createUnlitMaterialInstance() async { var instance = await withPointerCallback((cb) { SceneManager_createUnlitMaterialInstanceRenderThread(_sceneManager!, cb); @@ -2045,6 +2048,19 @@ class ThermionViewerFFI extends ThermionViewer { return ThermionFFIMaterialInstance(instance); } + /// + /// + /// + Future createUnlitFixedSizeMaterialInstance() async { + var instance = await withPointerCallback((cb) { + SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread(_sceneManager!, cb); + }); + if (instance == nullptr) { + throw Exception("Failed to create material instance"); + } + return ThermionFFIMaterialInstance(instance); + } + @override Future setMaterialPropertyInt(ThermionEntity entity, String propertyName, int materialIndex, int value) { @@ -2163,7 +2179,7 @@ class ThermionViewerFFI extends ThermionViewer { Future createGizmo(FFIView view) async { var view = (await getViewAt(0)) as FFIView; var scene = View_getScene(view.view); - final gizmo = Gizmo_new(Viewer_getEngine(_viewer!), view.view, scene); + final gizmo = SceneManager_createGizmo(_sceneManager!, view.view, scene); return FFIGizmo(gizmo, this); } } @@ -2194,6 +2210,12 @@ class ThermionFFIMaterialInstance extends MaterialInstance { MaterialInstance_setParameterFloat2( _pointer, name.toNativeUtf8().cast(), x, y); } + + @override + Future setParameterFloat(String name, double value) async { + MaterialInstance_setParameterFloat( + _pointer, name.toNativeUtf8().cast(), value); + } } class FFIRenderTarget extends RenderTarget { diff --git a/thermion_dart/lib/src/viewer/src/shared_types/material.dart b/thermion_dart/lib/src/viewer/src/shared_types/material.dart index 95bdf568..0f58907b 100644 --- a/thermion_dart/lib/src/viewer/src/shared_types/material.dart +++ b/thermion_dart/lib/src/viewer/src/shared_types/material.dart @@ -2,6 +2,7 @@ abstract class MaterialInstance { Future setDepthWriteEnabled(bool enabled); Future setDepthCullingEnabled(bool enabled); Future setParameterFloat2(String name, double x, double y); + Future setParameterFloat(String name, double x); } enum AlphaMode { OPAQUE, MASK, BLEND } diff --git a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart index 5ea58f03..6fd1a27c 100644 --- a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart +++ b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart @@ -895,6 +895,11 @@ abstract class ThermionViewer { /// Future createUnlitMaterialInstance(); + /// + /// + /// + Future createUnlitFixedSizeMaterialInstance(); + /// /// /// diff --git a/thermion_dart/lib/src/viewer/src/web_wasm/src/material_instance.dart b/thermion_dart/lib/src/viewer/src/web_wasm/src/material_instance.dart index a785efe4..3aaabf72 100644 --- a/thermion_dart/lib/src/viewer/src/web_wasm/src/material_instance.dart +++ b/thermion_dart/lib/src/viewer/src/web_wasm/src/material_instance.dart @@ -21,4 +21,10 @@ class ThermionWasmMaterialInstance extends MaterialInstance { // TODO: implement setParameterFloat2 throw UnimplementedError(); } + + @override + Future setParameterFloat(String name, double x) { + // TODO: implement setParameterFloat + throw UnimplementedError(); + } } diff --git a/thermion_dart/native/include/Gizmo.hpp b/thermion_dart/native/include/Gizmo.hpp index cc8e0dde..849503a2 100644 --- a/thermion_dart/native/include/Gizmo.hpp +++ b/thermion_dart/native/include/Gizmo.hpp @@ -17,8 +17,6 @@ #include #include -#include "material/gizmo.h" - #include "ThermionDartApi.h" namespace thermion { @@ -31,7 +29,7 @@ class Gizmo { enum Axis { X, Y, Z}; public: - Gizmo(Engine *engine, View *view, Scene *scene); + Gizmo(Engine *engine, View *view, Scene *scene, Material* material); ~Gizmo(); typedef void (*PickCallback)(EntityId entityId, uint32_t x, uint32_t y, View *view); @@ -91,8 +89,10 @@ class Gizmo { Engine *_engine; Scene *_scene; View *_view; - utils::Entity _entities[7] = { utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity() }; Material* _material; + + utils::Entity _entities[7] = { utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity(), utils::Entity() }; + MaterialInstance* _materialInstances[7]; math::float4 inactiveColors[3] { math::float4 { 1.0f, 0.0f, 0.0f, 0.5f }, diff --git a/thermion_dart/native/include/GridOverlay.hpp b/thermion_dart/native/include/GridOverlay.hpp index 09832200..26abee73 100644 --- a/thermion_dart/native/include/GridOverlay.hpp +++ b/thermion_dart/native/include/GridOverlay.hpp @@ -19,9 +19,6 @@ #include #include -#include "material/gizmo.h" - - namespace thermion { using namespace filament; diff --git a/thermion_dart/native/include/SceneManager.hpp b/thermion_dart/native/include/SceneManager.hpp index ef89e8c6..25f66074 100644 --- a/thermion_dart/native/include/SceneManager.hpp +++ b/thermion_dart/native/include/SceneManager.hpp @@ -19,16 +19,17 @@ #include #include -#include "CustomGeometry.hpp" +#include "tsl/robin_map.h" + #include "APIBoundaryTypes.h" +#include "CustomGeometry.hpp" +#include "Gizmo.hpp" #include "GridOverlay.hpp" #include "ResourceBuffer.hpp" #include "components/CollisionComponentManager.hpp" #include "components/AnimationComponentManager.hpp" -#include "tsl/robin_map.h" - namespace thermion { @@ -287,6 +288,8 @@ namespace thermion return _ubershaderProvider; } + MaterialInstance* createUnlitFixedSizeMaterialInstance(); + MaterialInstance* createUnlitMaterialInstance(); void setVisibilityLayer(EntityId entityId, int layer); @@ -298,6 +301,8 @@ namespace thermion size_t getCameraCount(); Camera* getCameraAt(size_t index); + + Gizmo *createGizmo(View *view, Scene *scene); bool isGizmoEntity(utils::Entity entity); @@ -321,6 +326,8 @@ namespace thermion std::mutex _stencilMutex; std::vector _materialInstances; + Material* _gizmoMaterial = nullptr; + utils::NameComponentManager *_ncm; tsl::robin_map< diff --git a/thermion_dart/native/include/TGizmo.h b/thermion_dart/native/include/TGizmo.h index df42119d..7180eff4 100644 --- a/thermion_dart/native/include/TGizmo.h +++ b/thermion_dart/native/include/TGizmo.h @@ -10,7 +10,6 @@ extern "C" typedef void (*GizmoPickCallback)(EntityId entityId, uint32_t x, uint32_t y, TView* view); -EMSCRIPTEN_KEEPALIVE TGizmo* Gizmo_new(TEngine *tEngine, TView *tView, TScene *tScene); EMSCRIPTEN_KEEPALIVE void Gizmo_pick(TGizmo *tGizmo, uint32_t x, uint32_t y, GizmoPickCallback callback); EMSCRIPTEN_KEEPALIVE void Gizmo_setVisibility(TGizmo *tGizmo, bool visible); diff --git a/thermion_dart/native/include/ThermionDartApi.h b/thermion_dart/native/include/ThermionDartApi.h index 862ac0de..76861947 100644 --- a/thermion_dart/native/include/ThermionDartApi.h +++ b/thermion_dart/native/include/ThermionDartApi.h @@ -198,6 +198,7 @@ extern "C" int skinIndex, int boneIndex); + EMSCRIPTEN_KEEPALIVE TGizmo* SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene); EMSCRIPTEN_KEEPALIVE EntityId SceneManager_createGeometry( TSceneManager *sceneManager, float *vertices, @@ -212,6 +213,7 @@ extern "C" TMaterialInstance *materialInstance, bool keepData); EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitMaterialInstance(TSceneManager *sceneManager); + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager); EMSCRIPTEN_KEEPALIVE bool SceneManager_setTransform(TSceneManager *sceneManager, EntityId entityId, const double *const transform); EMSCRIPTEN_KEEPALIVE void SceneManager_queueTransformUpdates(TSceneManager *sceneManager, EntityId* entities, const double* const transforms, int numEntities); EMSCRIPTEN_KEEPALIVE TCamera* SceneManager_findCameraByName(TSceneManager* tSceneManager, EntityId entity, const char* name); @@ -295,6 +297,7 @@ extern "C" EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthWrite(TMaterialInstance* materialInstance, bool enabled); EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthCulling(TMaterialInstance* materialInstance, bool enabled); EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat2(TMaterialInstance* materialInstance, const char* name, double x, double y); + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat(TMaterialInstance* materialInstance, const char* name, double value); #ifdef __cplusplus diff --git a/thermion_dart/native/include/ThermionDartRenderThreadApi.h b/thermion_dart/native/include/ThermionDartRenderThreadApi.h index 68ab1f06..dc044a3e 100644 --- a/thermion_dart/native/include/ThermionDartRenderThreadApi.h +++ b/thermion_dart/native/include/ThermionDartRenderThreadApi.h @@ -67,6 +67,7 @@ extern "C" void (*callback)(EntityId)); EMSCRIPTEN_KEEPALIVE void SceneManager_loadGlbFromBufferRenderThread(TSceneManager *sceneManager, const uint8_t *const data, size_t length, int numInstances, bool keepData, int priority, int layer, bool loadResourcesAsync, void (*callback)(EntityId)); EMSCRIPTEN_KEEPALIVE void SceneManager_createUnlitMaterialInstanceRenderThread(TSceneManager *sceneManager, void (*callback)(TMaterialInstance*)); + EMSCRIPTEN_KEEPALIVE void SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread(TSceneManager *sceneManager, void (*callback)(TMaterialInstance*)); EMSCRIPTEN_KEEPALIVE void load_glb_render_thread(TSceneManager *sceneManager, const char *assetPath, int numInstances, bool keepData, void (*callback)(EntityId)); EMSCRIPTEN_KEEPALIVE void load_gltf_render_thread(TSceneManager *sceneManager, const char *assetPath, const char *relativePath, bool keepData, void (*callback)(EntityId)); EMSCRIPTEN_KEEPALIVE void create_instance_render_thread(TSceneManager *sceneManager, EntityId entityId, void (*callback)(EntityId)); diff --git a/thermion_dart/native/include/material/gizmo.S b/thermion_dart/native/include/material/gizmo.S deleted file mode 100644 index b00f550d..00000000 --- a/thermion_dart/native/include/material/gizmo.S +++ /dev/null @@ -1,12 +0,0 @@ - .global GIZMO_GIZMO_OFFSET; - .global GIZMO_GIZMO_SIZE; - - .global GIZMO_PACKAGE - .section .rodata -GIZMO_PACKAGE: - .incbin "gizmo.bin" -GIZMO_GIZMO_OFFSET: - .int 0 -GIZMO_GIZMO_SIZE: - .int 27809 - diff --git a/thermion_dart/native/include/material/gizmo.apple.S b/thermion_dart/native/include/material/gizmo.apple.S deleted file mode 100644 index 3e033da4..00000000 --- a/thermion_dart/native/include/material/gizmo.apple.S +++ /dev/null @@ -1,12 +0,0 @@ - .global _GIZMO_GIZMO_OFFSET; - .global _GIZMO_GIZMO_SIZE; - - .global _GIZMO_PACKAGE - .section __TEXT,__const -_GIZMO_PACKAGE: - .incbin "gizmo.bin" -_GIZMO_GIZMO_OFFSET: - .int 0 -_GIZMO_GIZMO_SIZE: - .int 27809 - diff --git a/thermion_dart/native/include/material/gizmo.bin b/thermion_dart/native/include/material/gizmo.bin deleted file mode 100644 index 91881fa875eacfc6bf0791ebf05f71f3a79ba8b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27809 zcmeHQ33w$(ajqU8>jSXOVQkI;gL$&GvfiP~vKO?H)+>-!vZUR$5zAwwHR;oQcX89ceap!rEfE)@W9u+KY8<-0i^OMm>y+-dv-(y;-eqL_IE;3)*3` z8q^j7(9@zz7Um{oLLUK*7m|12fbuRqK$j|Y8P%Aia!UxA3${t=it1`@>d0;6MWvY>gRs7d(2K5%N zhA!gYtGu;Ft0Hr@7Zn15u6#faBO<^uoWpa zHMh8I3p9IVdNC@@ES{8cMNpScPDf&>&=MDxrkA4vEiWCLi4ZJJ7AB&?e4;RSJVH$i z^NR}%#`EK`_-|_FxNw*2);AuS`Ow|3{`}O$QJJ&A%+5K5IhX8Zx3D-r6Ah#$Zr8Kp zoybTgCKh6ZixVfLz>RNw!?lMNk1j{$k9~CZ(EOC%#xnZivNO$vsik;~y@w>tk%M*pdHXw&^GYcr(1K4N>~HtW_4$rn~EA$)N~A@7(@WodfRuz zf3nf3x5tTV*K5H>YjQKF*TY&%S2aYL%v8o{z19fYey0^SnSyamax+BvbXZv#JvC0( zRo6k}y1%qAvv{IBxj4VHRGyqawzNEPY`Hu$RnF6OXs*`7-Vpw9iLS#`tLwCeecJY! zEZ{gYb6a_C;*Ro+V4Iv?@^9^pWN%7__M~LUUk_@n&``13Xw)nj3-c!-O(z!1OGhWB z@OE;3@p%)A^T&@(?MBqlIMsr)jZQn)YFF~5!9KsE6}F#J*IjGv2P;_&0Kf0^_3Bs^ z+;fQJ0U@%31(fHid9Il!7Fz1Vl@dmf*LCyUFl)Xk&w^jIGI5uEx!XY0%yY{?*3Gj4 zOkt(k+1iGvu{3R`EAELauq6t9)1rnr>MjsfBZ>CqblgX`oJm*ku1Jh~HeGQpu8^%5 zI29e#6#Z4FhJ|v?DGR9;r$W;acGavqHG*~H+{zgEEbp66qef75Y5-F5?@CwPjS3mP z=CsHLcgh-BU4xeVhSS8L+fG@7-lIXm{;sB0S53RCrsLFfc!blakSU(QiymUffzdT* zQ6tdjBA_6CUFBE1h=Oa)t!AUhjXl)I=a%$*6_mo8`X-x z6;$iFKB}(!IiuQkQL2DT3=X1mdH+U#qgI|V4Kq`H{y{$vjYv4S!tM?UShEP_;?NLq zrDlyu75#FtG>9gK7}z;`&cDIW)x!Eldo!0yFmxc`rlb-c2v(Bxo*EG5M2GR5oYUyY z===J3fIj~wzcet|7g07^GQ*Ekxj0%H*pXssZ~&~AinF!?noKIr*$OLT<>ClW52J}u z?%Ep;Vq;*u9&KVVpa%dlyb2!ViDqfRH}Jf6viSQk~U*3 z^~U?#gtN4bjSd}ZZAF+G_i>HmBu3bh8YxmA;P{4_e)I}9+p#pKa;ai+h=J99CVWKx z9qsyetZyLV@xB2qn}$XpNBZa~4~-Npn}$Y8^6L(6mw44&`EvKZdE~f&vms5fT zrb{9Vu*0H~SYx`R>48n=7Gar1uq7Y%nNxz57L^J7s5HOUbPedr24}c9Mn?`^be7D@nJB zb>y~*jpSB{rKBsc#f-fam5tTpl*M+^$i-&TuVO3dSFw@wtJp@mudIi)keJ6}8EG)F zi1e#iLi$xKAn6uaKGwOi3b++)ZP&u)WM?(>qYx3VvF{9;b>bNLKtL&1tw(xEf;s(h z-=crI8lLGhE2OC^=SPR3tBm0w?HCXyk2D-gohDeXK5B*tV%2@YZkO92E9BWENS;7g zbeu|zna@i-5d%Iv2y2K33sze=!1AR&|Byd8FgTbm4E0eN&A^s2X3m_$ad+<>!TM>FSOYN9*m`kDB?J{-7u zf?M0=HJoH+jfEe!rCbf?e3#NZN0FQA5M{l5ros-rVn;I zRtqLMheKx@m0Tq4{l0`HVF!gd-oGi78?c$!7ESYLV>==y{u$&sDc70fwY>oDPSj=pV zc79O9$E7tHK~%~xOck*S98*;6L>P1sU6^uR|HAKa?Zo{78g6X!g$T%rNV6g$jFHwd z3t@7_5RTyW$~u&Ue`yV~x>D2|(yl>isK`iha>)?=z8MLujVJ*?8E}>$u%uU5Sqn7) zb`LIVFtMHD>lYJZj@wd!=C~maH|sjBG2@`Kt`!+egr0f8a(+0DvUWQZQP%=TH5RIC zcjNX7nj*^tu+E|cIt-|IuNdcWwcT279O3w7w@=85#2w2Y#Gz)74aWs{$ge1q)UcHF!3Jvto)9M;!Fmm zv?>w9sys4c^~m`IXFyBuh|I`Hc0guylsC!Fz{rzmq8GE;sME%MtOmf=F?L5&uHf}I+r`h7LSCJc*vW0NSIDH@(4qG z;tJL?=#GfeBzE zCD%F%j&buogJS^Ym31S@JT=9>X>4RB^o%vrG zXCBU0YsFEKaSRWsMnOw8j6D-)9@4svD_FTPgf_KM5ovH zFh=U3>!LWbaLlUM-GjiGos9?dhy!HGg1r~X76n<`?680wQaT`DwM<4Rz%=dc*c(7` z>20T!kGntjC3d6JR=;(G|8IJq=jWzpJE#xW<2q0OFTFrXw`_mQ?Rcx=yop%;7kC@p zn+FG-QKU&*yBiYfGqufP?J1UHAUE(9 zq}htLG%R`^?NFmAXhjQBMA34E7+_q%ik2%x(Q-wkXiG!vXzx$a?m_2pzNdO+vkop{ zVJ~B{P=FEC!&;QdFu<V$m}OWil?wGeoFzG`7A#5F1;dP)meShhfbVr2zQd4paN=<{EgElC+ZWn`6x@6d!nYXR7vT1`7dz4ea>T9)5 zCG>CE3fn=gjQh%3b@h-_->Pm^ZsLCiHV+YXT5M0&kxAQvaT!8+pw~G0_>+|{?evO_ zL?FeT-D4vR$V#m{`Odba;v%-%#uFTJoJ2f^(j>z3chd1BfiA#!j_-aRIdmpraXy(% z%!75Os8x^=*egrT;5p)Eq7b8r*vh67r$?OR{72|FNn=bvL<;u=KrFPBwo+M+&&UC=c@Hi>ll(7T-0@x zcWYn6?rjF>?RJ8()M(){BvE%dKL}SpCb}MmmDWUUdowWUuWn<|SmNtL=!e@oL9N<8 zi)`@e%0_5i^d#(IB$4ZcTbC^*|J;J)#cN>pU&Bh7?{bU&y4%8=Rqkx!Jlu%P0uD&d z)t7kc9e29pB6WVYgG(D`zwH8#uB`jdubY>o#>Lfb(AYlQtY^^qfMJ6aMqSzBW z%icr_>-^KLt!cuwC-orHr;$m3A=M0jL!`zY!f6Xf^hs$TT z%_=7s4F2d82Z$4l=PQ7vcF;^vg1Wh2XCB=nU>S$&t93NZRgv-$Ef(WADjz@`32L>* zI`UEyZIhigwtABPU8IR>u&SI{b>))Bo2g^rAQ?>vS{D6@c3i2YFhkmR(-jzi z)ypm*e4GPn7d;M>pw&WZ{&us$pWH+%7M*NpJ${-IWFAZ0d3h5T5jssPW+>{@S`}4E z?rJ$h^%Bm@iaU9Te5ciJY(=LRi#rm$Mh0Om#e;;c!lE%3+-;0+6{33FWoE*|&W`Hk zaM9lYNY1G_?m5MCunaHIh0Kbi_$w=XWabcutC#vtA#2q^Z8}8OyaPKD!SeJ{HoXHk z8o}vR;k?lW^Nj_@wy1gF1nJefOGv_%L^sG~v%1=8hq*z)uL;F9ubH)e!#z8f;o;(c zD=V;55xT6_Po2WOIDg&1##zEHx<2Uvq0g#(xs=QEbe&#FtL*yJhX77Lo_@bpA#M^Z zXYm3mW?SXdsXm!-JOy^)Z}soJPp=3{12MStXIHA7OQVIc@2p_CSkyk(K!Sx13||fB z#We!x?moG-;T#hUjzT)jD8^_vxxL+XjBDNY8<1y$3>k;K6383o7zEEm*K>slmFD5N zIhEr0Vm9pfG7|(+hfGlkXO}CD9CBhM&}!S>e!?+u{=^R#HCmo=)&?__a=c>?KutXW z4fQ=S>KOqrHKRg-*E;FMTf^L0Gn<{u(GX^cGmhPk%x_?e+udF3wwaVEposRbjgV+l zLPm%ba`a`M#%z|ttVXnE3lk)&vzZLlYrSgDk-SZfdx^Xgrf*RH!6z>Q6W|U_k(r2z9%It>|J~Lw;Tt zKKl`4&ZxIjdnPL))rbFeEP)M1E1lMK6R2*@>v~oaV$w) za@KlP;j|cz>q91m&VKajAk8P%rkk5EXAH)ywLzH-IFkBxj%y}Vf->ZW zfv~O{n#lD+!ek%P_<9aiI3?M#AUU3#e70l>=BFh(Eryoff-#gCmRAcaCutA-&M5-U za_Q#bA(k6XixtR&(ko|fl9)rd;SXBvn{SpZTo$6V2(x-%H`1m+VvaIe*F{u}3a%Pw?y%-=5%3=C5d=e&{2_m2#2*4BkotFh8RNVCHI$cOdJp zjJ=WJtoQrfyEV&W=e;KAIY$nA6Z-&5qz(F5`cexOH*i;oVC@u2-<3GNgOZ*sMHWri7-W7FkjXEzE|r5XCn%Oin2!k{Q7^NvAd7mS+L09rF z^D%{r*C4k0th+kEdAu3bXLKrWrpFjliUZU*n-R-(zHfr#J+fuXZTy|R)fu$z51R>-k8zBsdyOcoLp zquk|Fr~DOb*vLAiJCp~}MZ$&LPkTkYNZG*bRYbtrGh$#7-(gm;ytb*B)-GAe(LhiY z!))DR!FLI2Nm?8Lt$xT(Qa+E6R(W`r%;n)Ib2&4FHNqA!h|#K`JYtfVM@M9pr zBq@&>AuvsO@h7E_D~}B)`{lJAGFIX*dm;hgY-G;)6nhSBu=2`dW3cLA-Mf+(FKrhQb9KbTjiYrCM~_G*cv0 zqNgQ@og;b2r)WHaAtnolPI*Zpi8v)$F8V{Z-sr4o^ZX?JndhCc?7TUX(N0%SLhWf~ z)ji3c43IC1vM1&66x=Ts`5@n2mle&gI~1c&w;r}O>t@1k0s82NGBUMWQM5VFL{AN2 zcl(ryG21GBNJLn=);J2IbSiJ3D6-Zoik?!1V17dBI!?XYxUFl+EJ_Dn!S zeRRFh6VS}4>&oGL1N6q-whSqW)ytzsCQDM5qUaSfoc~Nb2?>Sfj*%+`9Ryw?5+>*n zeXjd(A`%&nr4x(Lq(%g=74OCqxPeV`2@i0rL<(QB@PJG@?Y~E{4)_TMK)i$9f&>4@ z;|Ib9j!_{e7JAw#?r>3jRQ*x0DE2RXI3bb$ZSDnQ(P1fJxq*D_zM^p#4ToNd5JNI* z=0+FTXG{hcECx7~FP7l3jno~df10`8FcqPo-xv{_va<~#J&tLy#xp)nGEMGz%=i+14@d;WX|(Vb-%NQOPnV*mb#PQ*732@<}O*u=`v z*pM1;4Rkw}PR0QJDW9YuKDitU+{jJ|hJm(;y%LPXwL^ohTf#Z`ta1y(#gt#7Kezx1 zhE@8r2+S0)Nhhi_#0Ns`m_$=zmUbKM%q;7fpsS_HcqSl(Yv9qxE11TS@=OFt%(0|v z(gUCCn#iXUc1xr*6Hk{fC1;mrZ{uI<{S1DZ_tE&RT>isv;=W8C>Os7!D|P8g^$9Nd z>T~=URD&1bF{PUPxSw9hj|b#|pUHh6esLs0eM_~8PQ9b4A9}x1^AKai}1Xd4$viZDP2aF(<4y#NO}}qL08gMp!y1W z3_TVwkE5&U@pxWC*U}T{iS#6TGChT!N-X6U)}Jes9BI!5!f zK)2H(EzvR^rxSFN?w~vA`LseWpi}fhD$|Q7pjBF<3Wc-|`Zn<2CROP!JnzP{Mq5;; z25r+l)T9=*sY9pf4DHZaI*0bl!O?4lBlpr*;MWj6`bzpLx}Uz9zJ^{5Uc3bSdKtYO z^{=3>rB~9cWRzE<=k4ePcH@tG^4L{+=Oc)|Gpg&x_8R&+`g-BxE9e1wExnGufnHDF zNZ&-?Ob^l<=#BI(^sV$J`ZoG@`VL@vGkq6*H@$`4N^hgL(>v&U=zHn===2F|8ze&G^e}5Zu`yKjS`aQh= zKHizTe}Ly7(r4+9=yUYPDE|rlDg7D!xoLd}&%dC*q`yMTU(?^v-_qaF-pDKGt@KH_3BwFr~1?l;Ma*uwaU6t z_3w*c=g%iC?N)1KOZ%9S_FF~TpCi&f8A&^9jSm>D!P33}X^*vrmG+f{w6D@ZHK1-1 ziAigXL6uhpRa7N4q=waq(pqCwS*>v~r1Kic5c8yam&ZEenv~91L?7sF>8CZuC!vw~ z|B@gZQ>-s`*Sr5c9Atf=XE>&ARWf>|A(hq_&sJJjJV#AHvRI3_dg8FD z+f6@ADy<(riWPX0;oEL!SgakU)U=}=UWdLo7lrS!Zur3ES~u)h*1ve&@ZYmy2h}R| zlKCU*Hg#0ZsOPHZsaZ9rj;VRIpl(--YDq1tJs-d>kJ*uf%s;xTev^t}9)LC^--K)Mr-KV}%eU-XjeYN@;^XzJ^|k7i>Q(C1>NV=?)Yq#A)N9r2)HkTtt8Y}_q`n!J-W${#)wif`Rd2$izFmEX z`cCy`^Lco->SOBTSf>Cp zBG?@+Uw#Qae_8!Xg#Q!r_DR9_DbuTh9#H=dH$RPb#&_y!f(7EX{Lkf{JJZjoUsb=R zeqH^B`c3s)>bKSJsNYq;r+#1kf%-%B*%U9B%kPo8KQdhTocd$+C+bhtpQ%4r52?R^ zF#nbMYxOtkZ`I$S{P!sR1D^kg=Rc``R-ae@qW%@-FQ|VrE&q<^f57Na-b2dsH1q{{ zUg%xqUF;q3F7Yn)F7qz;9^pOG)9dzrNccd4&-<6>M|pu_$+^N~iRan8S7vji$1-!3 z_h>W5L%@GkVhrx3<>4^``&a|nf*bRu1mymy`JXEvkMpiJoU(iD@!mDwwGr2nJM9VH z6TK&SPxhYTJ=OEQr+H8JuJfMZJ=441dzP2;`n(&w8@+z-pf}*%TpMXpW - -extern "C" { - extern const uint8_t GIZMO_PACKAGE[]; - extern int GIZMO_GIZMO_OFFSET; - extern int GIZMO_GIZMO_SIZE; -} -#define GIZMO_GIZMO_DATA (GIZMO_PACKAGE + GIZMO_GIZMO_OFFSET) - -#endif diff --git a/thermion_dart/native/include/material/gizmo_material.c b/thermion_dart/native/include/material/gizmo_material.c deleted file mode 100644 index e9aa1c9d..00000000 --- a/thermion_dart/native/include/material/gizmo_material.c +++ /dev/null @@ -1,1401 +0,0 @@ -#include "gizmo.h" -#include - -const uint8_t GIZMO_PACKAGE[] = { -// GIZMO -0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, -0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x06, 0x00, 0x00, -0x00, 0x47, 0x69, 0x7a, 0x6d, 0x6f, 0x00, 0x4c, 0x44, 0x4d, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, -0x00, 0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, -0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, -0x98, 0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, -0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, -0x74, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x00, 0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, -0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, -0x5f, 0x54, 0x41, 0x4d, 0xcb, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x00, 0x09, 0x01, -0x01, 0x0a, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, -0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, -0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, -0x73, 0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, -0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, -0x6f, 0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, -0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, -0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, -0x09, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, -0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, 0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x3b, -0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x02, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x07, 0x00, 0x20, 0x42, 0x49, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, -0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x4e, 0x4f, -0x43, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x55, -0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, -0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, -0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x45, -0x4c, 0x42, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x4d, 0x01, -0x00, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x52, 0x57, -0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, -0x00, 0x00, 0x01, 0x49, 0x52, 0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x45, 0x54, 0x44, -0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, -0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, 0x5f, -0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, -0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x66, 0x67, 0xec, 0x49, 0xc7, 0x6b, 0x8c, -0xf9, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, 0x54, -0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, -0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, 0x41, -0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x41, 0x41, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, 0x53, 0x5f, -0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, -0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, -0x52, 0x54, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, 0x54, 0x41, -0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0xd5, 0x56, 0x00, 0x00, 0x69, 0x02, -0x00, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, 0x73, 0x74, -0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, -0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, 0x65, -0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x34, -0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, -0x78, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, -0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, -0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, 0x6e, -0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x74, -0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, -0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, -0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, -0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x00, 0x23, -0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, -0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x23, 0x65, 0x6e, 0x64, -0x69, 0x66, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, -0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, -0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, -0x31, 0x3b, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, -0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x00, 0x23, 0x64, 0x65, -0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, -0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x00, 0x63, 0x6f, 0x6e, -0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, -0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, -0x44, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, -0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, -0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, -0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, -0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, -0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, -0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, -0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, -0x20, 0x62, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, -0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x6d, -0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, -0x69, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, 0x63, -0x32, 0x20, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, -0x72, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, -0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x6d, -0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, -0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, -0x61, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, -0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, 0x65, -0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, -0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, -0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, -0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, 0x65, -0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, -0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, -0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, -0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, -0x6f, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, -0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, 0x65, -0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x73, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, -0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, -0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, 0x65, -0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, -0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, -0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, -0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, -0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, -0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, -0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, -0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, -0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, -0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, -0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, -0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, -0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, -0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, -0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, -0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, -0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, -0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, -0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x6f, 0x69, -0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, -0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, -0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, -0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x69, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x20, -0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, -0x33, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, -0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, -0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, -0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, 0x35, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, -0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x35, -0x3b, 0x00, 0x5f, 0x33, 0x38, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x5f, -0x33, 0x38, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x34, -0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, -0x37, 0x35, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, -0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, -0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, -0x2a, 0x20, 0x5f, 0x33, 0x38, 0x34, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x2e, -0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, -0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, -0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, -0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x30, -0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, -0x35, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, -0x20, 0x5f, 0x32, 0x33, 0x32, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x33, -0x32, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, -0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, -0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, -0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x3b, 0x00, 0x70, 0x72, 0x65, -0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, -0x69, 0x6e, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, -0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, -0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, -0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, -0x65, 0x63, 0x33, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, -0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x6c, -0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x68, 0x69, 0x67, -0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x7d, -0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, -0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, -0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, -0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, -0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, -0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x33, -0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, -0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, -0x33, 0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, -0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, -0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x37, 0x32, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x37, -0x33, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, -0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, -0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, -0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, -0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, -0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x6a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, -0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, -0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x70, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, -0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, -0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, -0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, -0x63, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, -0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, -0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, -0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, -0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, -0x70, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, -0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, -0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, -0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, -0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, -0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, -0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, -0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, -0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, -0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, -0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, -0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, -0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, -0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, -0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, -0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, -0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, -0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, -0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, -0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, -0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, -0x69, 0x66, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6c, -0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, -0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, -0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x31, -0x34, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, -0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, -0x20, 0x2d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, -0x2e, 0x78, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x29, 0x29, 0x20, 0x2f, 0x20, -0x5f, 0x32, 0x31, 0x34, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, -0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, -0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x34, 0x37, 0x20, -0x3d, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, -0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, -0x34, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, -0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x30, 0x32, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, -0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x20, -0x3d, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, -0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, -0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, -0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, -0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, -0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, -0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, -0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x6d, -0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, -0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, -0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x30, 0x34, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, -0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, -0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, -0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, -0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x3b, 0x00, 0x68, 0x69, 0x67, -0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, -0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, -0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, -0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, -0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x37, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, -0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x70, -0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x35, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, -0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, -0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x37, 0x32, 0x20, 0x3d, -0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x20, -0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, -0x20, 0x28, 0x5f, 0x33, 0x37, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, -0x5f, 0x32, 0x35, 0x34, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, -0x32, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x78, -0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x79, 0x3b, 0x00, -0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x66, 0x72, -0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, -0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, -0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x35, -0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, -0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, -0x35, 0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, -0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, -0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, -0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, -0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, -0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, -0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2c, -0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x29, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, -0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, -0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, -0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, -0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, -0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, -0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, -0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, -0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, -0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, -0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, -0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, -0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, -0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, -0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, -0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x42, 0x69, 0x74, 0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, -0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, -0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, -0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, -0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, -0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, -0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, -0x20, 0x47, 0x4c, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3a, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, -0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, -0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, -0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, -0x49, 0x44, 0x5f, 0x38, 0x20, 0x32, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, -0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, -0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, -0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x34, 0x20, 0x3d, 0x20, -0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, -0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, -0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x37, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x5f, -0x37, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, -0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x34, 0x5d, 0x2e, 0x77, -0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, -0x2a, 0x20, 0x5f, 0x37, 0x37, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x37, 0x3b, 0x00, 0x5f, 0x38, 0x38, -0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, -0x5f, 0x38, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x38, 0x38, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x36, 0x2e, 0x7a, -0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x35, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, -0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, -0x38, 0x38, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, -0x65, 0x63, 0x33, 0x20, 0x5f, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, -0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, -0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, -0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, -0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, -0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, -0x5f, 0x31, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, -0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, -0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x39, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, -0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, -0x5f, 0x31, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, -0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x20, -0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, -0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, -0x5f, 0x31, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x3b, 0x00, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x39, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, -0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, -0x30, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, -0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x20, -0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, -0x30, 0x37, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, -0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x29, -0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, -0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, -0x2d, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x39, -0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, -0x5f, 0x31, 0x30, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, -0x28, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, -0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x34, 0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, -0x20, 0x34, 0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, -0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, -0x70, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, -0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, -0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, -0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, -0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, -0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, -0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, -0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, -0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x6d, 0x65, -0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, -0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, -0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, -0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, -0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, -0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, -0x5f, 0x33, 0x35, 0x36, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, 0x2e, 0x30, 0x29, 0x3b, 0x00, -0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x36, 0x3b, 0x00, 0x5f, 0x33, -0x38, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x35, 0x2e, -0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x35, 0x2e, 0x7a, 0x20, 0x3d, -0x20, 0x5f, 0x33, 0x34, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x20, 0x3d, -0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, -0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, -0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, -0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, -0x38, 0x35, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, -0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, 0x36, 0x3b, 0x00, -0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, 0x62, 0x65, 0x20, -0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, -0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, -0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, -0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, -0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, -0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, -0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x00, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, -0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, -0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, -0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, -0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, -0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, -0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, -0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, -0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, -0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, -0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, -0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, -0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, 0x20, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, -0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, -0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, -0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, -0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, -0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, -0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, -0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, -0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, -0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, -0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, -0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, -0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, -0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, -0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x69, -0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, -0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, -0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x20, 0x3d, 0x20, -0x5f, 0x34, 0x32, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, -0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x32, 0x31, 0x33, -0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, -0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x32, 0x38, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x34, -0x2e, 0x30, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x32, -0x38, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x78, 0x3b, 0x00, -0x5f, 0x34, 0x36, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x34, 0x36, -0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, -0x34, 0x35, 0x32, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, -0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x32, 0x31, 0x33, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, -0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x36, 0x31, 0x29, 0x2e, 0x77, -0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, -0x32, 0x32, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, -0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, -0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x79, -0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, -0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x37, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, -0x5f, 0x32, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, -0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, -0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, -0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x69, 0x6e, 0x74, -0x20, 0x5f, 0x32, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, -0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, -0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, -0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, -0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2a, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, 0x34, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, -0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, -0x34, 0x37, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, -0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x34, 0x38, -0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, -0x32, 0x33, 0x39, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, -0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, -0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x35, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, -0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, -0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, -0x20, 0x2d, 0x20, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, -0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, 0x29, 0x29, 0x3b, -0x00, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x7a, 0x20, 0x2a, 0x20, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, -0x20, 0x28, 0x5f, 0x32, 0x33, 0x39, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, -0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, -0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x33, 0x3b, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, -0x64, 0x65, 0x20, 0x3c, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x00, 0x23, 0x69, -0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, -0x00, 0x00, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, -0x74, 0x61, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, -0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, -0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, -0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, -0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, -0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, -0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, -0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, -0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, -0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, -0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, -0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, -0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, -0x61, 0x74, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, -0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, -0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, -0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, -0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, -0x34, 0x20, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, -0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, -0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, -0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, 0x6f, 0x69, 0x73, -0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, -0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, -0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, -0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, -0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x72, 0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x73, -0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, -0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, -0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x4f, 0x76, -0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, -0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, 0x6d, 0x70, 0x6c, -0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, 0x44, 0x69, 0x73, -0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x42, -0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x34, 0x20, 0x7a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, -0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x43, 0x6f, -0x75, 0x6e, 0x74, 0x58, 0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, -0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x69, 0x62, 0x6c, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, 0x65, 0x76, 0x65, -0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, 0x53, 0x48, 0x5b, -0x39, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x33, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, -0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, -0x20, 0x73, 0x75, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x68, 0x61, -0x64, 0x6f, 0x77, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, -0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, -0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x20, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x69, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, -0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, -0x74, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, 0x61, 0x74, 0x69, -0x6f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, -0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, -0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x45, -0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, -0x73, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, 0x52, 0x65, 0x64, -0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, -0x64, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, -0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x44, 0x65, -0x6e, 0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, -0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, -0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, -0x20, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, -0x66, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, -0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, -0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, -0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, -0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, -0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, -0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, -0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, -0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, -0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x55, 0x76, -0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, 0x72, 0x69, 0x64, -0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, -0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, 0x30, 0x39, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, -0x65, 0x64, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, -0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, -0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x73, 0x74, -0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, -0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, -0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, -0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, -0x63, 0x6e, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, -0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, -0x63, 0x6e, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, -0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, -0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, -0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, -0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, -0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, -0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, -0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, -0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, -0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, -0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, -0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, -0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5d, 0x5d, -0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, -0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, 0x5f, 0x49, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, -0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, -0x20, 0x5f, 0x33, 0x31, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, -0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, -0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, -0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, -0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, -0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, -0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, -0x5f, 0x33, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, -0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, -0x36, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, -0x33, 0x36, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x31, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, -0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, -0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, -0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x38, -0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, -0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, -0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, -0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, -0x32, 0x38, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, -0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, -0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, -0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, -0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, -0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, -0x6f, 0x75, 0x74, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, -0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, -0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, -0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, -0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, -0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, -0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, -0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, -0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, -0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, -0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, -0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, -0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x20, -0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x20, 0x5b, -0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, -0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, -0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x20, -0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, -0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, -0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, -0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, -0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, -0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, -0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, -0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x36, 0x29, 0x5d, -0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, -0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, -0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, -0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x38, 0x29, 0x5d, 0x5d, -0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x53, -0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, -0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, -0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x30, 0x29, 0x5d, 0x5d, 0x3b, -0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, -0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x31, 0x29, 0x5d, 0x5d, -0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, -0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x32, 0x29, 0x5d, -0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, -0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, -0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, -0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, -0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x70, -0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, -0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, -0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, -0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, -0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, -0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, -0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, -0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x34, -0x34, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, -0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, -0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, -0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, -0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, -0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, -0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x00, 0x20, 0x20, 0x20, -0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, -0x31, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3e, 0x20, 0x66, 0x72, 0x61, -0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, -0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x68, -0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x2e, 0x79, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x38, 0x20, 0x3d, 0x20, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, -0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x36, 0x31, 0x38, 0x29, -0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, -0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, -0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x31, 0x5d, 0x29, -0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, -0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x36, 0x31, 0x38, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x3d, -0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x5f, 0x38, 0x31, 0x30, -0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, -0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, -0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, -0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, -0x20, 0x5f, 0x38, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, -0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, -0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, -0x20, 0x5f, 0x37, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, -0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x31, 0x34, 0x20, 0x3d, -0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, -0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x5f, -0x38, 0x32, 0x34, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, -0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, -0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, -0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, -0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, -0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, -0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, -0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, -0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, -0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, -0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, -0x78, 0x28, 0x5f, 0x38, 0x31, 0x34, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, -0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, -0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, -0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x29, 0x2c, 0x20, 0x68, -0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, -0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, -0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, -0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x68, -0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, -0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, -0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x2b, 0x20, -0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, -0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, -0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x68, -0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, -0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, -0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, -0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x68, 0x61, -0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, -0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, -0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, -0x5f, 0x37, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, -0x5f, 0x38, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, -0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, -0x66, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x38, 0x33, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, -0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, -0x5f, 0x38, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, -0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, -0x5f, 0x37, 0x35, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, -0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, -0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, -0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, -0x28, 0x5f, 0x38, 0x30, 0x35, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, -0x20, 0x5f, 0x31, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, -0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, -0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, -0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, -0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, -0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, -0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x73, -0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, 0x5d, 0x2e, 0x6f, -0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, -0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, -0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x69, 0x6e, 0x2e, 0x76, -0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, -0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, -0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, -0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x63, 0x6f, -0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, -0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x5b, -0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x28, 0x38, -0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, -0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, -0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, -0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, -0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, -0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, -0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5d, 0x5d, -0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, -0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, -0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x5b, -0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, -0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, -0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x33, 0x20, 0x5f, 0x37, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, -0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, -0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, -0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, -0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x37, 0x29, 0x29, 0x2e, 0x78, 0x79, -0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x34, 0x20, 0x5f, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, -0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x38, -0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x38, 0x2e, -0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x34, 0x20, 0x5f, 0x38, 0x33, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, -0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x34, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, -0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x38, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x78, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x79, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, -0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x33, 0x2e, 0x7a, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x39, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, -0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, -0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, -0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, -0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, -0x5f, 0x38, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, -0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x69, 0x6e, 0x74, 0x20, 0x5f, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, -0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, -0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, -0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x39, 0x39, 0x20, 0x3d, 0x20, -0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x5f, 0x31, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x36, 0x29, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x34, -0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x20, 0x3d, -0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x39, 0x34, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x39, 0x39, 0x2c, 0x20, 0x66, 0x6d, 0x61, -0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2c, 0x20, 0x28, 0x2d, -0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x39, 0x39, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x29, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x5f, -0x39, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, -0x36, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x38, 0x20, 0x3d, 0x20, -0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x39, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, -0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, -0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x5f, 0x31, 0x30, -0x31, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x29, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, -0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, -0x5f, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x39, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, -0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x36, 0x29, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, -0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, -0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x34, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, -0x63, 0x65, 0x5f, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, -0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6f, -0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, -0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x35, 0x20, 0x3d, -0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, -0x35, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, -0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, -0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, -0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, -0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, -0x35, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x35, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x30, 0x2e, -0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x30, -0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, -0x30, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x39, -0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, -0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, -0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, -0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, -0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, -0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, -0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, -0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, -0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, -0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, -0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, -0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, -0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, -0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, -0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, -0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, -0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x39, -0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, -0x20, 0x5f, 0x38, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, -0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, -0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, -0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, -0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x66, -0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, -0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, -0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, -0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, -0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, -0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, -0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, -0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, -0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, -0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, -0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, -0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, -0x78, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x31, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, -0x61, 0x74, 0x28, 0x5f, 0x38, 0x31, 0x31, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, -0x61, 0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, -0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, -0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, -0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, -0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, -0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, -0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, -0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, -0x20, 0x2a, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, -0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, -0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, -0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, -0x6f, 0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, -0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, -0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, -0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, -0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x20, -0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, -0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, -0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, -0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, -0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x34, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, -0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x38, 0x30, -0x34, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x3b, -0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, -0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x35, 0x20, -0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, -0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, -0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, -0x34, 0x30, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, -0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x20, -0x3d, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, -0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, -0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, -0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, -0x32, 0x30, 0x35, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, -0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, -0x2a, 0x20, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, -0x5f, 0x34, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, -0x31, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, -0x34, 0x31, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, -0x34, 0x34, 0x31, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, -0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x32, 0x30, 0x35, 0x5d, 0x2e, -0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, -0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, -0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, -0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, -0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, -0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, -0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, -0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, -0x74, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, -0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, -0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, -0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, -0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x30, 0x32, 0x3b, 0x00, 0x20, 0x20, -0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, -0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, -0x33, 0x36, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, -0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, -0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, -0x20, 0x5f, 0x32, 0x33, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, -0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, -0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, -0x32, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x33, 0x36, 0x29, 0x3b, 0x00, 0x20, -0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, -0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x20, 0x3d, -0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x32, 0x33, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x2c, 0x20, 0x66, -0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x2c, -0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x34, 0x34, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, -0x36, 0x33, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x32, -0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x2e, 0x78, 0x20, -0x3d, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, -0x35, 0x39, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x33, 0x39, 0x3b, 0x00, -0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, -0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x35, -0x39, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x2c, -0x20, 0x5f, 0x32, 0x36, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, -0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, -0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x35, 0x39, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, -0x33, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x2c, -0x20, 0x5f, 0x32, 0x36, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, -0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, -0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, -0x20, 0x5f, 0x32, 0x30, 0x35, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, 0x54, 0x41, 0x4d, 0xd6, 0x08, 0x00, 0x00, 0x12, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x98, 0x01, 0x00, -0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xd2, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xe6, 0x01, -0x00, 0x00, 0x01, 0x30, 0x01, 0x30, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0x72, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x8a, -0x03, 0x00, 0x00, 0x01, 0x90, 0x00, 0x8a, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0xba, 0x04, 0x00, 0x00, 0x02, 0x00, 0x01, -0xce, 0x05, 0x00, 0x00, 0x02, 0x10, 0x00, 0xba, 0x04, 0x00, 0x00, 0x02, 0x10, 0x01, 0x06, 0x06, 0x00, 0x00, 0x02, 0x20, -0x01, 0x18, 0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x50, 0x07, 0x00, 0x00, 0x02, 0x44, 0x01, 0x90, 0x07, 0x00, 0x00, 0x02, -0x80, 0x00, 0xa6, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xa6, 0x07, 0x00, 0x00, 0x16, 0x0a, 0x00, 0x00, 0x85, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, -0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, -0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, -0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, -0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, -0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, -0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, -0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, -0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, -0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, -0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, 0x00, 0x67, -0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, -0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, -0x00, 0x79, 0x00, 0x7a, 0x00, 0x69, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, -0x00, 0x7d, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x84, -0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x02, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, -0x00, 0x8c, 0x00, 0x69, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x66, -0x00, 0x02, 0x00, 0x69, 0x00, 0xaf, 0x0c, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, -0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x8e, -0x00, 0x8f, 0x00, 0x17, 0x00, 0x02, 0x00, 0x88, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, -0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, -0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, -0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, -0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, -0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, -0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, -0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, 0x00, 0x87, 0x00, 0x02, 0x00, 0x88, -0x00, 0x89, 0x00, 0x8a, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0x8b, 0x00, 0xda, 0x00, 0x02, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0x02, -0x00, 0xdd, 0x00, 0x69, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, -0x00, 0xe2, 0x00, 0x69, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0x02, 0x00, 0xe8, 0x00, 0xe9, -0x00, 0xea, 0x00, 0xeb, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xec, 0x00, 0x69, 0x00, 0xed, 0x00, 0xee, 0x00, 0xef, -0x00, 0x02, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xf5, -0x00, 0x69, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x66, -0x00, 0x02, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x00, 0x01, 0x69, 0x00, 0xec, 0x02, 0x00, 0x00, 0x1d, -0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, -0x01, 0x05, 0x01, 0x06, 0x01, 0x07, 0x01, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x08, 0x01, 0x14, -0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x09, 0x01, 0x0a, 0x01, 0x66, 0x00, 0x02, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x69, -0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, -0x00, 0x0d, 0x01, 0x69, 0x00, 0x98, 0x0c, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x00, 0x02, -0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, -0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x0f, 0x00, 0x11, -0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, -0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, -0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, -0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, -0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, -0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, -0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, -0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, -0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x02, -0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x12, 0x01, 0x13, -0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x1d, -0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, 0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, -0x01, 0x28, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x69, 0x00, 0x56, 0x09, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, -0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, -0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, -0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, -0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, -0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, -0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, -0x00, 0xaf, 0x00, 0x39, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, 0x00, 0xb8, -0x00, 0xb9, 0x00, 0x43, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, 0x00, 0x4b, -0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, -0x00, 0x56, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, -0x00, 0xd7, 0x00, 0x61, 0x00, 0x62, 0x00, 0x2d, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, -0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, -0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x38, 0x01, 0x78, 0x00, 0x79, -0x00, 0x7a, 0x00, 0x69, 0x00, 0x06, 0x02, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x7d, 0x00, 0x02, -0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, -0x00, 0x87, 0x00, 0x02, 0x00, 0x18, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x66, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x69, -0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x66, 0x00, 0x02, 0x00, 0x69, 0x00, 0xd3, -0x0a, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x7d, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, -0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, -0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, -0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, -0x00, 0x2d, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, -0x00, 0xae, 0x00, 0xaf, 0x00, 0x39, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, -0x00, 0xb8, 0x00, 0xb9, 0x00, 0x43, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, -0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, -0x00, 0x55, 0x00, 0x56, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, -0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, 0x00, 0x87, 0x00, 0x02, 0x00, 0x18, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x39, 0x01, 0x3a, -0x01, 0x8b, 0x00, 0x3b, 0x01, 0x02, 0x00, 0x3c, 0x01, 0xdc, 0x00, 0x02, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x3d, 0x01, 0x3e, -0x01, 0xe0, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x69, 0x00, 0x3f, 0x01, 0xe6, -0x00, 0xe7, 0x00, 0x02, 0x00, 0x40, 0x01, 0x41, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xec, 0x00, 0x69, 0x00, 0xed, -0x00, 0xee, 0x00, 0xef, 0x00, 0x02, 0x00, 0x42, 0x01, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xf5, 0x00, 0x69, 0x00, 0xf6, -0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xdd, 0x00, 0x69, 0x00, 0x66, 0x00, 0x02, 0x00, 0xfc, -0x00, 0xfd, 0x00, 0x43, 0x01, 0xff, 0x00, 0x00, 0x01, 0x69, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2b, -0x01, 0x2c, 0x01, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, -0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x08, 0x01, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, -0x00, 0x44, 0x01, 0x45, 0x01, 0x66, 0x00, 0x02, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x69, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, -0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x8b, 0x00, 0x66, 0x00, 0x02, 0x00, 0x0d, 0x01, 0x69, 0x00, 0xc1, 0x0b, 0x00, -0x00, 0x94, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, -0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, -0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x01, 0x10, 0x01, 0x0f, 0x00, 0x11, 0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, -0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, -0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, -0x00, 0x26, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0xa5, 0x00, 0xa6, -0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0x39, -0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x3d, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x40, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0x43, -0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc1, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, -0x00, 0xc5, 0x00, 0xc6, 0x00, 0x50, 0x00, 0xc8, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xce, -0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0x5b, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0x61, -0x00, 0x2d, 0x01, 0x62, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, -0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x4b, -0x01, 0x4c, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, -0x01, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x69, -0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0xe4, 0x08, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x9e, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, -0x00, 0x00, 0x01, 0x10, 0x01, 0xd4, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xee, 0x01, 0x00, 0x00, 0x01, 0x30, 0x01, 0x56, -0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0xba, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x01, 0x90, 0x00, -0xe4, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x02, 0x00, 0x01, 0x9e, 0x01, 0x00, 0x00, 0x02, 0x10, -0x00, 0x26, 0x05, 0x00, 0x00, 0x02, 0x10, 0x01, 0xd4, 0x01, 0x00, 0x00, 0x02, 0x20, 0x01, 0x3e, 0x06, 0x00, 0x00, 0x02, -0x30, 0x01, 0x56, 0x03, 0x00, 0x00, 0x02, 0x44, 0x01, 0xba, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0xa2, 0x07, 0x00, 0x00, -0x02, 0x90, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x80, 0x0e, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, -0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, -0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, -0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, -0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, -0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, -0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, -0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, -0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, -0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, -0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, -0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, -0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, -0x01, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x71, 0x01, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0xcf, 0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, -0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xce, 0x01, 0x69, 0x00, 0x61, -0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0xd5, -0x01, 0x02, 0x00, 0x69, 0x00, 0x61, 0x01, 0x5d, 0x16, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, -0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, -0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, -0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, -0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, -0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, -0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, -0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, 0x01, 0xcf, -0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xd9, 0x01, 0xda, -0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, -0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xb8, -0x01, 0x04, 0x00, 0x61, 0x01, 0xe5, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0xe9, -0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, -0x01, 0xec, 0x01, 0xf4, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xf6, 0x01, 0xef, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0xf9, -0x01, 0xfa, 0x01, 0xfb, 0x01, 0xec, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xfe, 0x01, 0xef, -0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0xec, 0x01, 0x02, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x03, 0x02, 0xef, -0x01, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, -0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, -0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, -0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0e, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0x0f, 0x02, 0x04, 0x00, 0x61, -0x01, 0xbc, 0x01, 0x02, 0x00, 0xb9, 0x01, 0x04, 0x00, 0x61, 0x01, 0x10, 0x02, 0x02, 0x00, 0xbf, 0x01, 0x11, 0x02, 0x12, -0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0x13, 0x02, 0x02, 0x00, 0xbf, -0x01, 0x14, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x73, 0x12, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, -0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, -0x01, 0x68, 0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, -0x01, 0x02, 0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, -0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, -0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, -0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, -0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, -0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, -0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, -0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, -0x00, 0x61, 0x01, 0x15, 0x02, 0x16, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, -0x01, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, -0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1f, -0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, -0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, -0x02, 0x34, 0x02, 0x35, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x80, 0x0e, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x5f, -0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, -0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, -0x01, 0x6b, 0x01, 0x02, 0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, -0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, -0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, -0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, -0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, -0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, -0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, -0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, -0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x04, 0x00, 0x61, -0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x36, -0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0x40, -0x02, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0xfc, 0x15, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x5f, -0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, -0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, -0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, -0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, -0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, -0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, -0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, -0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, -0x00, 0x61, 0x01, 0xcf, 0x01, 0x02, 0x00, 0xd0, 0x01, 0xd1, 0x01, 0x04, 0x00, 0x61, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, -0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, -0x01, 0xe3, 0x01, 0xe4, 0x01, 0x04, 0x00, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xd2, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbc, -0x01, 0x02, 0x00, 0xb8, 0x01, 0x04, 0x00, 0x61, 0x01, 0xe5, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xd4, 0x01, 0xe6, 0x01, 0x41, -0x02, 0x42, 0x02, 0xe8, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0x43, 0x02, 0xee, 0x01, 0xef, 0x01, 0xf0, -0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xec, 0x01, 0xf4, 0x01, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0xf6, 0x01, 0xef, -0x01, 0x44, 0x02, 0x45, 0x02, 0xfb, 0x01, 0xec, 0x01, 0x46, 0x02, 0x47, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x48, -0x02, 0xef, 0x01, 0x49, 0x02, 0x4a, 0x02, 0x01, 0x02, 0xec, 0x01, 0x4b, 0x02, 0xef, 0x01, 0xf5, 0x01, 0xec, 0x01, 0x03, -0x02, 0xef, 0x01, 0x4c, 0x02, 0x4d, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x4e, -0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, 0x98, 0x12, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x60, 0x01, 0x61, -0x01, 0x62, 0x01, 0x61, 0x01, 0x05, 0x00, 0x02, 0x00, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, -0x01, 0x69, 0x01, 0x04, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6a, 0x01, 0x61, 0x01, 0x6b, 0x01, 0x02, -0x00, 0x6c, 0x01, 0x04, 0x00, 0x61, 0x01, 0x6d, 0x01, 0x02, 0x00, 0x6e, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, -0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, -0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, -0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, -0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, -0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, -0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, -0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0x04, 0x00, 0x61, -0x01, 0x15, 0x02, 0x16, 0x02, 0x61, 0x01, 0xb7, 0x01, 0x02, 0x00, 0xb8, 0x01, 0xb9, 0x01, 0xba, 0x01, 0xbb, 0x01, 0x17, -0x02, 0x18, 0x02, 0x19, 0x02, 0x04, 0x00, 0x61, 0x01, 0xbc, 0x01, 0x02, 0x00, 0xbd, 0x01, 0x04, 0x00, 0x61, 0x01, 0xbe, -0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02, 0x55, -0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x5f, -0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x34, -0x02, 0x35, 0x02, 0xce, 0x01, 0x69, 0x00, 0x61, 0x01, - -}; - -int GIZMO_GIZMO_OFFSET = 0; -int GIZMO_GIZMO_SIZE = 27809; diff --git a/thermion_dart/native/include/material/unlit_fixed_size.S b/thermion_dart/native/include/material/unlit_fixed_size.S new file mode 100644 index 00000000..63d093a3 --- /dev/null +++ b/thermion_dart/native/include/material/unlit_fixed_size.S @@ -0,0 +1,12 @@ + .global UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET; + .global UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE; + + .global UNLIT_FIXED_SIZE_PACKAGE + .section .rodata +UNLIT_FIXED_SIZE_PACKAGE: + .incbin "unlit_fixed_size.bin" +UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET: + .int 0 +UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE: + .int 28235 + diff --git a/thermion_dart/native/include/material/unlit_fixed_size.apple.S b/thermion_dart/native/include/material/unlit_fixed_size.apple.S new file mode 100644 index 00000000..f099c18c --- /dev/null +++ b/thermion_dart/native/include/material/unlit_fixed_size.apple.S @@ -0,0 +1,12 @@ + .global _UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET; + .global _UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE; + + .global _UNLIT_FIXED_SIZE_PACKAGE + .section __TEXT,__const +_UNLIT_FIXED_SIZE_PACKAGE: + .incbin "unlit_fixed_size.bin" +_UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET: + .int 0 +_UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE: + .int 28235 + diff --git a/thermion_dart/native/include/material/unlit_fixed_size.bin b/thermion_dart/native/include/material/unlit_fixed_size.bin new file mode 100644 index 0000000000000000000000000000000000000000..aa84470a7f3ea9d29f10f9b9aff15bbb12a3bffc GIT binary patch literal 28235 zcmeHQ33y~jajt$o);5Q2ZgW0kFe6(lYYs^xuf15S!z++hvZUR$5z8>rJV|4ZX5=|` zwQHOZk^l*WD?otUkOOj&lW+z?2qeMeAl#5UAs0!=MQ)P6s=MFo_vXz=Ym*Oh=)?P7 zcUMGu>OoZW<{QnOt!jNU z>~X<-xg9jC<=SEy^t9-b#rX-D(1$_eh2$MLpu9^D(4|UUMl~j>)DlAG%R8iWMRlz< zHFGO@VQG0MSnt%zO}fDJXq6jup?z=CMdr2L?5wvt&44b}6&sCBIHmO^XXliwwr|l8K4M2;tJi2`O;n8(x3a;iaQ1VfiEX z%^hBt(mP#7Us`ddxj3~Pjj?k3^h#-RcIxvdiMBnWYfcBv7NpS64-fl6i&`SRzFq1Q zL9-p~&enH2ki~oGbg*9V&or8~%A%3pLv-&U+i5XqE(P^U&@8Xjf~j)5OxxwQfyWNs zo^Mow8ZbAjyN9?buTh0f#~`HT5TIIb`_9IgY;@}FL&UWkwen_ba;sdg2ep>2YKWSd ztsJ6_TBF?dJFTF}6dckdHv^PU2bI<0sY7&4bpu3h_{)p4OD9T`OAE`(rOAb3%PSMd zR!Xx|r7T^8=4w6Y4dIU#=o(D5x9mQM$MA3xNs8EbYiKrd~{+8ZzmU)o;k6!aQxU*KcYqsQLTKo(P?K| z?Mk*VJm7bAxTw5TDD zx(h_rNTPi?9re*IXOb1XD`MlGO;((XDr75`or(@>^8T7r!$P_4l!eraQ=#byx@tC@ z8o|1GZgm`dmiH~EQ6s22H2^92cP1%P#l9kjMWtBeHzJ0F@*bbA#_zFc1qN-)6!>{G6nPB=bsK$a3`VzSxVdSGm$S^-(r zdS-yC8-B*<%s$#0aIwKbbSCRx?{C&hv!-EoYQR6}XE9^Ki5PTuh{2lGE#*gwz?GOa zCYAR~`9dB|3^BBO_MCs6pQ#1)&GuF%6I-dFGB?Gw`%rl`PVcE9VNQ6;V-;Zlpd+In z7~la0{2LNWHMBkul35%xv>c*RzBo3tE5$;72v@W#|HG=B4bFiFPAF_1!KZKo=CTl=xG3wr;!RE(_#QjD-}Sd$pGOrbNNvW9ABeg zb@-HUd#o7ZvGT}Nq7T@He}@=f#=KpZz)~IB9e~j3<}<(-AEY{T77GS3v#ba)?=*w; zs#ut@{dtJG8=zl8ThcC-F+F9kg}-eCnA*5o0+jZD?%}`zSXi{}#Lc9UmA9nYM30JMWRP zoSjN(WGpY$&2_kw|^ zU$DdV3#3iI*d5CTTx7WM0m}xPkidqT24(|Izp-J4#=LI~vT!bWpUpB2#O9c=kj*f8 zVe=~l&G~GE@le}%>Mm?_g#g<0VgNR|Gyt1gA%HfxbORe&`i%`N{lXi$Z{;O&J- zG#ndO`i+e$4H%kMx~QAQz;Y|Z%o0Y3d8MJmta72mxYBK6RJm zE3dV1B4rB${$YQ3Xm~iA8yTPynt?50s+>88^X*_tEt?|2?oK!OS%3@j0k%*04dnaf!9fjqxCw+T=-(jl;%f9Fc6E1nq*O z1XPwakl`HISmed&)OX73cO5O)Hgdb!(F9o-K{%ZQV0;|xcB~c*ZjP_cH7c1<+6R4! zbHcC*GQ58iC^umQv89>h(dKHlM}1D}vGiI72f=f!AE+NXi<6X}yMz9E4LdIruEAJA zR&vnC+F&_(z}^$FYm?9MJb8&QRD$e)r^{>ZtR(o^y^_#xsVkW;Ft_(7hftTj1W}`b zTY!BR+ll!RmU9;EN~4{rO8^h|2N_WaNoH@I8_)w-X|{~hSl|yp&cO(6JcBK;HxmrG z^PF)=;&OrNGrUrnoyM7PIe;!n0oWv9@x6m-$>wv0wiLo~;MEbGHH7nA^e`$%Y-PBL zBGwshG8CE(DyyeWXPz0mJ!3g6r$(uL85Sm6qn#NRGh3s*8PxD``9SPM7<3R_m~vhJ z7UFi|{s0X(cKC(`>*S^&JqN@&?_3Pg<1~&xVIXQNoz2%oud036Pb?M67lJ%A&OG#I;}CI zShcPd8H+`%dB9S3Gz!jkI}~Bp9LFpctLt~+It-d3%>=OCpM)_CsJNpT=Sa2PT4~I1 z*t6R+W*SZn*;#ke(9%2JQiPggq~W4)X|7;Q zMx{^dJ-cPO8_aD@W7LsrMloJAC1B+fKcd0TK}WzC0iRBZ6U#=xgzS{&ln59=d1c+$ zF;9&napA>lAv>H>P)P zqo73`6q?9#QR_RdV1>sJ+7?4as2B2MJlA;>mFuta_Dz1V*hBq=k!4|@<#+$EFJ@;0 z20a1=se)mzMbhO$^nH5V08KVxU{y{^tiUww?fDx(@%e41gcH0!|0eRYlWu|al>c|S zr|0L#r+csu)FnGl2Qj%oaldVU%k8+c;@yc@{x`TI-J1ueo6)LqW4s#@x-_xPB2_8| zK`zVwbzE=kZCe)dY(l2$--4X}B|zLC{fi*jSZ}Qhr2Ejig;5bE07IvuptUaO60OS> zVr6m#YhA7ot;-dm)-8;%#j`)Hy9d#uaDEflw<0RI2opmbL+xd100dK&@YjxiT)|=NmG+iI;LiBG%sczBkOHy>Y*Zw zv9wn=YicGtVit)hIi{wj!OlUOnq1e%)RZp!Gc^I4W@=)?a-Lazz1FD&{!QCKyId^=r$ zIqc5xvn`1zimkTM2ZtOd+mE3%iHH+8Ie(I+SH^ferjgt8NYpb~kqhx;W*)3N53Yi= z!(ORy2G5L}?m~oJB8*R+0B9-%hfNqqPXIdzdtH4oI8;a` zP&y$!(Qsr-Q1qD*V(8VK6`P~%tZGhLCL48J)4Rgwx2xN@@()SDb-?ycqgk#UYgAiq zLqX(XB@SI+xoFfn`hq`1f=kiHW)->5%rjtXFLNHWGfEf0!p24`z(sI~0vIYss%2ai zM^()LT3nI|a9PpSBj+Pmwt5<=NT-8VazGz>-wQY}X3EX^YQ57shTH}hbsgn??d#aR z%`$qsonSdNTDUri)t#2OL_~Bw2r8|K+Rj$lp&rZyrvq28aOb;LTRtk8jy#N^OSWcS)8XWXgoFUDQUN~@ z+X?HCguwavlYEgnTbHP28|S~%-s&I~AuQ*7{rLfwYoZPCj-;n0Sy8c>Ddn2}Y{F%# z-)iw*fwbwilm#jH>t*EkSAu0MVB2(N9-HboI{6-A5wvWtHOos(P*Oy(CwP{V-$C$%c7;@s78hU#UU zmlb#N5cy84-PjIKFBW&?ca05?yDSP?xg}#RxZ4;XM1=J)UL&HMdIb2wdO2M5hX#_^ zn)sMP?`H=bJPW_hiJ=LTw)FQoPMZ%o;DgDa=1kJz61+_ZtDoj(_^YdY8fS2GR4)vi zLe{NAwdoK#3J&a82+N#HxC;(kF@)0#&grR(<{J@=ZBg^UG19Abmynptif$13W_7L8 z4l=`nUlWS^W;1L3h6{f#!;{AUR#y>iMZC0HKXnQh^!#-O+kG*U>)Lo|7k$>`o2*Qh zr|a~J8+_L$K4ftE@${X3)-ly9el5s!llG#1NLS&0qHWw9T~0CvRK)JesZ#^OsA%dO zVz}AA=U%;%C=Es6(x1J%b|#4y{)e;jrF>oo7=~i3cVIXhSZ62zw13RNnw5^#2;U`n z^CR|gH@UsT3K+L%SV49}a!R9o!ND`r(+{-adJ8e&@y8zN1{WA9rT`d#J+3 zO|DWZH=E_NHwn)VYlA8J)|B^n#mv>j=93`Hu(q2TE-O0FWIyF9ah&>dRSlREz&JwP z?qJKi*w&Fc*oDu2@T!sOQ=<#11#&R6QaeN;ov9qax3e1UXbP<@v^x0o8MFsJ!y|nT z#i?Y&AmZY9oVxg|^{T={G91^(P6D0%z}G>Vjjc^LH(@&&jA?6wRu`9EnNaK^l`n7m zIqiB#<+XmYAq%R^*_TV4eKT&5V&5m`{n(GPHE_%nBqE7vN8gVRb=#bLqEzcWR3{Q9 zl8HlSIFJ%IJEK%0R%csCLM$NPVi*xqE>{}zxJUlw3Zah^^jQC!gjXik96JmmiLVTh zOne3Xad$wgAnp?lz$G3Z=!KX}OhY-tFyLAJ(`QdL1_&Fw zH9km;c{5;eX_TXe+>ifE-?4F{-?=VKz8%ft*4atE^hldA=9Pch9pK& z0-_MFR~&A0dd9k=$hPR&ta1 z8RjN4S2Mf=S%0PMjg-j1px?b))4~J1*91MM?_qCZA7F{JsUAsRVxgi2?h3ISlaw)8 zN@#XXZfx(ta0#P%a+iY*l_K54g$Q-3geF5IX;KO;ESHl^6ki81IfaBsrbPB6s}B1( zh58g|Ttx9aBv)DY2)92cQEO!orBa)PPTjJCJq$|ng2;yiz4Swp1)7crpq63?V=Ah9 zvqr3q7E1UF$;tC|pk{WjvyWR@Tt-;gLY3xmO{nuD4gDpS3!QJqL*W!-7{2sl5#&EJ z+L%dk%;%#f$e+1(!~oVuPAgtdnkZzg*47z=JQ2U6PoLBTC@~to#H>ud_ zccJufYBZoLubBDBJaJI*8bo%Vbv%bS#W$y zguJ$iXjPwt>2M&J>0@k!W5N4`tBUeH&Db6ZF6R-fDvkC@svhf|^O6>vD(dsagi=aH zlm1eS0#m3GeS<0+mO_UFw!+>A{NK&6OF&rB7`v@RNR)gj1g4DgGy$MwXtLdBO?sUq2P4Bc7FK9I?W zD0^hYgfh&dvjVpX)WhbK2(fWIRtm`58|E*C+^*tkF#Y^7QmjF;)7j4BMwov*4D3DB z*i`Rf{_ZC`3dn)W0G;BKf&vbZ_!>&ury>HdJ|d+ z&7<+KrmIGw6}8}W&r)+Jg?jlGDy1IItHV_+Kt9i!vcIa!=VXxpYK@`v-|09HWyhq& znb0pX-}?tV(v)9*l!cpTrl*Q{yZt$j9E8iM6vcwsSWdp~ObM8-M z-o!kZ1HH8(2D6m*1k}_6&?xYpfOHRBC{2W+bQmHQCwR6d9-NyuYB|&mZ)wn2qV#9DPg&ReDq(@ zsEdX}uUJGPZk@Qn2zD{!u?UL+{%3?%D2be3i7UjBro{-fZ@V{K^x1P1MEuG`5mGj3 z%-u(piG(rq*IDPO4q})RfrE&3mY>$?hjy~(oF28?=VuVt=NA<0H)y9n)Ne86$cIv> z62&IW4YTAhQ2Z?HmwV3(ZHFsl_x4lr<8n_8P&=sye0Y~YckkmGBc0bpdO?4yg>HID z5Q#GG3P`typj7Gu50%zqVMu+rp)zr}6~z8cbz1t9U)Y!10`!))p69O6%YgejpcybR zhg_a*`1tnxig+#c?KOhPeNM9DQ^!u8U-x zhe9tuQxRfA8h^~8K&!U>K!3t@$%#uZhXgmW>w;mReInNdBXR8roQ24B;qL`l1p~25 zq?kXvIQV|UunJZU@JiKKER72vm+&@?T$gZ4%>8boo~LJB7j(5W8P^4ba18T0qm(peQ zAbK$B9zqYL%jpWb5>#JK52r@}=8^O$dNiJop{wYz^f-DvJ%OG`Pa>bLrYF-i^b~q3 zT}w}+3=PnAbUh8yK^mePXqd8;!w;YrXoN;-jEXc)H_{=xiEgID^mMv~Cg=!F(iBb8 z4BbjcX_lTr&!jn;r(?80i*y?;(K4;jaXLXK>2|trz47bN{s?gQvBI6N zr{~i*pw|oN8|j)2rz<^ji83dL6x<-ay|;-$ma|-$UO^-$&mMEN`M8pdX|k zq93L=(_83A=tt?t=*Q_N=&kgV^i%ZH^fUCc^mFt!`gwXgy@TFK@1l3pd*~PFz4Si% zMS4H|5`BPvnLbD#qFm5hxA8y|6{x}hyMi6&(ojMpV6PwU!eS#^ac7W`fJnr zH+X)L{+9j@Eq_n{K>tWzqJJ`N|BUCq(7)2Z(ZADw(3b@}bMQYQrb>D00<}$Fz}h?^ zdERF z^%V6~b**}u%BTT#ow{BPs)OL&+o0KA3f>K=8}`M!^XHkCeXCK@Wq;hr{>>u$w}|Xd zhO*BZ4nZ!Y;HH@o6rcGTx-7#Zy$9-6Z#~aS|JMSXRajQD&XpUE*FV0X| zi%4%=4eic)W52S0|MkXKf6a!~2KCwlv+5b@nQBhWt7B?GEvnnpl3G?P>bN?gPO970 z9qL(XRXtmsQqNH(^;}iP%FV4z&$DIpAMxeY1L@dXaju`WE%A>Lu!>>f6-I)XUW?)GO7i)VHfwtJkR4s_#&*Q?FNVP~WM( zOMSQc9`(KI`_%WVH>x+mX8b|*L+Xdso7G#?kEkETRDWFkgnFy`N%d3er`6A>pH)An z-ll$Dy*_buZ>rx?A637tKBhj7RjYtDf(7Vuse6P^2*yte#!s1k74*SUJKX&=+8N^u z9!0QU+?M|--29CCtooe#9re5F_h7yMf%-%BM-a9@QJ+_Ts{SnGx8??O`n^*3=Y}tT zq5e{RLH(8bYxOtki|TLH->JWc@&AwNOX{Cc{%4f_1x_b4;Q7l8lD*cjYP^Wf0}`xpax{lf_st-J2~r{-%{Lay>2 z3r=zkwAtjD_M8QwFEUYWyl-a96`X2H=li{5Q9O|xWV zapM2?cH&%J_Ex;(-U;udce{6o_bhMKd$xDVdyZG~p6ivpHE-Rkc!9U!ZF*Z?)w|QX K%d0ti`@aA*LBihv literal 0 HcmV?d00001 diff --git a/thermion_dart/native/include/material/unlit_fixed_size.c b/thermion_dart/native/include/material/unlit_fixed_size.c new file mode 100644 index 00000000..64aa912a --- /dev/null +++ b/thermion_dart/native/include/material/unlit_fixed_size.c @@ -0,0 +1,1422 @@ +#include "unlit_fixed_size.h" +#include + +const uint8_t UNLIT_FIXED_SIZE_PACKAGE[] = { +// UNLIT_FIXED_SIZE +0x53, 0x52, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x54, 0x41, 0x45, 0x46, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x45, 0x4d, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x4d, 0x0f, 0x00, 0x00, +0x00, 0x55, 0x6e, 0x6c, 0x69, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x4c, 0x44, 0x4d, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x4d, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4c, 0x46, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, +0x00, 0x46, 0x49, 0x4e, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x98, 0x00, 0x00, 0x00, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x00, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x00, 0x01, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, +0x04, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x05, 0x46, 0x72, 0x6f, +0x78, 0x65, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x06, 0x46, +0x72, 0x6f, 0x78, 0x65, 0x6c, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x07, 0x42, 0x6f, 0x6e, 0x65, +0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x02, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x69, 0x6e, 0x67, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x03, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x00, 0x08, 0x50, 0x4d, 0x41, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0xcb, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, +0x07, 0x07, 0x01, 0x02, 0x09, 0x07, 0x00, 0x09, 0x01, 0x01, 0x0a, 0x00, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, +0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x00, 0x01, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, +0x47, 0x00, 0x02, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, +0x00, 0x03, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x00, 0x04, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x73, 0x73, 0x72, 0x00, 0x05, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, +0x00, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x00, 0x07, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, +0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, +0x00, 0x08, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, +0x74, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x00, 0x09, 0x62, 0x6f, 0x6e, 0x65, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, +0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x00, +0x20, 0x42, 0x49, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x72, 0x61, 0x6e, 0x73, +0x66, 0x6f, 0x72, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x02, 0x62, 0x61, 0x73, 0x65, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, +0x00, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x42, 0x49, +0x53, 0x5f, 0x54, 0x41, 0x4d, 0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x4e, 0x4f, 0x43, 0x5f, 0x54, 0x41, 0x4d, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x55, 0x53, 0x5f, 0x54, 0x41, 0x4d, +0x17, 0x00, 0x00, 0x00, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, +0x49, 0x53, 0x4f, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x45, 0x4c, 0x42, 0x5f, 0x54, 0x41, +0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4d, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, +0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0x52, 0x57, 0x43, 0x5f, 0x54, 0x41, 0x4d, +0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x57, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x49, 0x52, +0x57, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x53, 0x45, 0x54, 0x44, 0x5f, 0x54, 0x41, 0x4d, 0x01, +0x00, 0x00, 0x00, 0x00, 0x54, 0x53, 0x4e, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x43, 0x32, +0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, +0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x52, 0x50, +0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x55, 0x55, +0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x77, 0xc2, 0x95, 0x49, 0xd9, 0x38, 0xdc, 0x73, 0x44, 0x41, 0x48, 0x53, +0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, +0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x46, 0x45, 0x52, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x41, 0x50, +0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x41, 0x56, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, +0x00, 0x00, 0x9a, 0x99, 0x19, 0x3e, 0x52, 0x48, 0x54, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0xcd, 0xcc, +0x4c, 0x3e, 0x4f, 0x44, 0x45, 0x56, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x54, 0x4e, 0x49, 0x5f, +0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x44, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, +0x01, 0x54, 0x58, 0x45, 0x54, 0x5f, 0x43, 0x49, 0x44, 0xe6, 0x57, 0x00, 0x00, 0x6d, 0x02, 0x00, 0x00, 0x23, 0x76, 0x65, +0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x33, 0x30, 0x30, 0x20, 0x65, 0x73, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, +0x00, 0x7b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x7d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, +0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x6d, 0x61, +0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, +0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, +0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, +0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, +0x63, 0x74, 0x49, 0x64, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, +0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, +0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, +0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, +0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x20, 0x36, 0x34, 0x00, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x00, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, +0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, +0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x23, 0x69, +0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, +0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x35, 0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, +0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, +0x5f, 0x49, 0x44, 0x5f, 0x35, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, +0x6f, 0x6c, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, +0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x20, 0x3d, 0x20, +0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, +0x5f, 0x49, 0x44, 0x5f, 0x35, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, +0x29, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x00, 0x50, 0x65, 0x72, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, +0x74, 0x61, 0x20, 0x61, 0x5b, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, +0x41, 0x4e, 0x43, 0x45, 0x53, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, +0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x6d, +0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, +0x65, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x68, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x6c, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x70, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x75, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x79, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x75, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x66, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, +0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, +0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, +0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x71, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, +0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, +0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, +0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, +0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, +0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, +0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x72, 0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, +0x7a, 0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, +0x7a, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, +0x34, 0x30, 0x5d, 0x3b, 0x00, 0x7d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x31, 0x34, 0x30, 0x29, 0x20, 0x75, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, +0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x6d, 0x65, 0x64, 0x69, +0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x3b, 0x00, 0x7d, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, +0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x66, 0x6c, 0x61, 0x74, 0x20, +0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, +0x65, 0x78, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x20, 0x76, +0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x00, 0x69, 0x66, 0x20, 0x28, 0x43, 0x4f, 0x4e, +0x46, 0x49, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x5f, +0x57, 0x4f, 0x52, 0x4b, 0x41, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x29, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2b, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x00, 0x7d, 0x00, 0x65, 0x6c, 0x73, +0x65, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, +0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, +0x33, 0x35, 0x38, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x38, 0x2e, 0x78, 0x79, +0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, +0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, 0x38, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, +0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x38, 0x3b, 0x00, 0x5f, +0x33, 0x38, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x37, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x37, 0x2e, 0x7a, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x34, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x38, 0x20, +0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, +0x33, 0x38, 0x37, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x38, 0x2e, 0x78, 0x79, 0x7a, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, +0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x32, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x2e, 0x7a, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, 0x38, 0x3b, 0x00, +0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x33, 0x36, 0x3b, 0x00, 0x5f, 0x32, 0x33, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x36, 0x2e, 0x7a, +0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x33, 0x36, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x3b, 0x00, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, +0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x70, +0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, +0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x65, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x6c, +0x65, 0x61, 0x72, 0x43, 0x6f, 0x61, 0x74, 0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, +0x20, 0x61, 0x6e, 0x69, 0x73, 0x6f, 0x74, 0x72, 0x6f, 0x70, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x33, 0x32, 0x38, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x61, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x63, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x72, 0x61, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, +0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, 0x61, +0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x37, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, +0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x38, 0x2c, 0x20, 0x5f, 0x33, 0x32, 0x39, 0x29, 0x2e, 0x62, +0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x35, 0x37, 0x32, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x35, +0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x62, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x63, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, +0x74, 0x34, 0x20, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x65, 0x5b, 0x34, +0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x66, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x67, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x68, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, +0x6c, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6d, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6e, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x32, 0x20, 0x6f, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x71, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, +0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x77, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x7a, 0x3b, 0x00, 0x75, 0x76, 0x65, 0x63, +0x33, 0x20, 0x62, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, 0x64, +0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, +0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x67, 0x7a, 0x5b, 0x39, 0x5d, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, +0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x7a, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x6a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6b, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6c, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x7a, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x6f, 0x7a, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x71, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x7a, 0x3b, 0x00, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x7a, 0x3b, 0x00, 0x68, 0x69, +0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x7a, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x62, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x64, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x65, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, +0x33, 0x20, 0x69, 0x7a, 0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6a, 0x7a, +0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x6b, 0x7a, 0x7a, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x7a, 0x7a, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x7a, +0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x7a, 0x7a, 0x5b, 0x34, 0x5d, +0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x71, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x7a, 0x7a, +0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a, 0x7a, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, +0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x75, 0x7a, 0x7a, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x75, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, +0x72, 0x43, 0x75, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, +0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, +0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, 0x77, 0x29, 0x00, 0x68, 0x69, 0x67, +0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, +0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3e, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x7a, 0x7a, 0x29, 0x00, +0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, +0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x3b, 0x00, 0x69, +0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, 0x5f, 0x32, 0x31, 0x34, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, +0x32, 0x35, 0x29, 0x00, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, 0x79, 0x20, 0x2d, 0x20, +0x5f, 0x32, 0x31, 0x34, 0x29, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x31, 0x34, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x31, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x7a, 0x2e, +0x7a, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x20, +0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, +0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, +0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x34, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x37, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, +0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x34, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, +0x30, 0x32, 0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x64, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x3b, 0x00, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, 0x20, 0x3d, 0x20, +0x5f, 0x32, 0x37, 0x34, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x5f, 0x32, 0x38, +0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, 0x36, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, 0x00, 0x5f, 0x36, +0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, +0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x6d, 0x61, 0x74, +0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x30, 0x5d, +0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, +0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, 0x38, 0x31, 0x2e, +0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x32, 0x37, 0x34, +0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, +0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x63, 0x7a, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x30, +0x32, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, +0x7a, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x36, 0x30, 0x34, +0x3b, 0x00, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x7a, 0x7a, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, +0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, +0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, 0x20, 0x3d, +0x20, 0x5f, 0x33, 0x34, 0x31, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, +0x69, 0x7a, 0x65, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x35, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x37, +0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, +0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x35, 0x37, 0x2c, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, +0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x33, 0x34, 0x31, +0x29, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x36, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x3b, 0x00, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x5f, 0x33, 0x37, 0x32, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x77, 0x3b, 0x00, +0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, 0x35, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, +0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x33, 0x37, 0x35, 0x2e, 0x78, 0x79, 0x7a, +0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, +0x5f, 0x36, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, 0x32, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, +0x3d, 0x20, 0x5f, 0x33, 0x38, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, +0x5f, 0x33, 0x38, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, +0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x4d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, +0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, 0x61, +0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x32, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, +0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x33, 0x2c, 0x20, 0x5f, 0x35, 0x37, 0x34, 0x29, 0x2e, 0x62, +0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, +0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, +0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x20, 0x3d, 0x20, +0x66, 0x6f, 0x67, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x2c, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x29, 0x3b, +0x00, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x33, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, +0x74, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, +0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x00, 0x68, +0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, +0x6c, 0x73, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x49, 0x64, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, +0x44, 0x61, 0x74, 0x61, 0x3b, 0x00, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, +0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x35, 0x3b, 0x00, +0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x29, +0x20, 0x6f, 0x75, 0x74, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, +0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x3b, 0x00, 0x69, 0x6e, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, +0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6f, +0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x42, 0x69, 0x74, +0x73, 0x54, 0x6f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x31, 0x36, 0x35, 0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, +0x29, 0x3b, 0x00, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, 0x20, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x00, +0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x45, 0x58, 0x54, 0x5f, 0x63, 0x6c, +0x69, 0x70, 0x5f, 0x63, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3a, 0x20, 0x72, +0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x00, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, +0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, +0x00, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, +0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x20, 0x32, 0x00, 0x63, 0x6f, 0x6e, +0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, +0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x38, 0x3b, 0x00, +0x69, 0x6e, 0x74, 0x20, 0x5f, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, +0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x38, 0x31, +0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, +0x63, 0x33, 0x20, 0x5f, 0x39, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, +0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, +0x7a, 0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, +0x63, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x31, 0x3b, 0x00, +0x5f, 0x39, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x39, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x39, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x39, +0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, +0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, 0x37, 0x38, 0x5d, 0x2e, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, +0x20, 0x2a, 0x20, 0x5f, 0x39, 0x33, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x2e, +0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x31, +0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x30, 0x30, +0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, +0x5f, 0x31, 0x31, 0x32, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, +0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x32, 0x30, 0x20, +0x3d, 0x20, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x34, 0x29, +0x3b, 0x00, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x2a, 0x20, +0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x31, 0x35, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x78, +0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x2f, 0x20, 0x32, 0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, +0x5f, 0x31, 0x32, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x31, +0x31, 0x32, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x31, 0x32, 0x30, 0x29, +0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, +0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x2e, +0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x36, 0x20, 0x2a, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x31, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x5f, 0x31, 0x31, 0x32, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, +0x5f, 0x31, 0x31, 0x32, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x31, 0x31, 0x32, 0x2e, 0x77, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, +0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x3b, 0x00, +0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x38, +0x3b, 0x00, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x34, 0x31, 0x30, 0x00, 0x23, 0x65, 0x78, 0x74, 0x65, +0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x69, 0x6e, 0x67, +0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, +0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, +0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x38, 0x29, 0x20, 0x66, 0x6c, 0x61, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x00, 0x6c, 0x61, 0x79, +0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x6f, 0x75, +0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, +0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, +0x20, 0x5f, 0x33, 0x35, 0x39, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x2e, +0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, +0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, +0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, +0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, +0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x38, 0x38, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x35, 0x39, 0x3b, +0x00, 0x5f, 0x33, 0x38, 0x38, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x33, +0x38, 0x38, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x33, 0x38, 0x38, 0x2e, +0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x34, 0x34, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x33, 0x37, +0x39, 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, +0x70, 0x75, 0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x61, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, +0x20, 0x5f, 0x33, 0x38, 0x38, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, +0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x37, 0x39, 0x2e, 0x78, +0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x36, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x37, +0x39, 0x3b, 0x00, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x43, 0x75, +0x62, 0x65, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, +0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, +0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, +0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x6f, 0x67, 0x28, 0x69, 0x6e, 0x6f, 0x75, 0x74, 0x20, +0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69, 0x65, +0x77, 0x29, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, +0x74, 0x68, 0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x34, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x7a, 0x7a, +0x20, 0x2a, 0x20, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x79, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x30, +0x31, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, +0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, +0x61, 0x78, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x32, 0x20, +0x5f, 0x32, 0x38, 0x31, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x48, 0x61, 0x6c, 0x66, 0x32, 0x78, 0x31, +0x36, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x7a, 0x7a, 0x29, 0x3b, +0x00, 0x5f, 0x36, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x63, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x4c, 0x6f, 0x64, 0x28, 0x6c, +0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, +0x6d, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, +0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, +0x76, 0x69, 0x65, 0x77, 0x2c, 0x20, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x32, 0x38, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x32, +0x38, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x5f, 0x31, 0x38, 0x36, 0x20, 0x2a, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x67, 0x7a, 0x7a, 0x29, 0x20, 0x2d, +0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x68, 0x7a, 0x7a, 0x2c, 0x20, +0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x5f, 0x36, 0x30, +0x34, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6a, 0x7a, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, +0x6f, 0x77, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, +0x28, 0x76, 0x69, 0x65, 0x77, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x68, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x7a, 0x7a, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, +0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x31, +0x38, 0x36, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, +0x7a, 0x7a, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, +0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x69, 0x7a, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x62, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, +0x29, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x30, 0x29, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, +0x69, 0x6e, 0x67, 0x3b, 0x00, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, +0x20, 0x3d, 0x20, 0x37, 0x29, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x20, +0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, +0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, +0x4e, 0x54, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x68, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x34, 0x31, 0x36, +0x20, 0x3d, 0x20, 0x5f, 0x34, 0x33, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, +0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x20, 0x2a, +0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, 0x5f, +0x32, 0x31, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x33, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, +0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x63, 0x29, 0x3b, +0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x36, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x33, 0x31, 0x3b, 0x00, 0x5f, +0x34, 0x36, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x36, 0x2e, 0x78, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x34, +0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x36, 0x2e, 0x79, 0x3b, 0x00, 0x5f, 0x34, 0x36, 0x34, 0x2e, 0x7a, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x31, 0x36, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x20, +0x3d, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x70, 0x75, +0x74, 0x73, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x61, 0x5b, +0x5f, 0x32, 0x31, 0x37, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x36, 0x34, 0x29, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x33, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x20, +0x3d, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, +0x31, 0x2e, 0x78, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x2e, 0x79, 0x3b, 0x00, 0x76, 0x65, +0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, +0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x76, 0x65, 0x63, 0x34, 0x20, 0x5f, 0x32, 0x34, 0x33, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x65, 0x5b, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, +0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, +0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x3b, 0x00, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x34, +0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, +0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, +0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, +0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, +0x32, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x35, 0x31, 0x3b, 0x00, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x35, 0x32, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, +0x34, 0x33, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x35, 0x31, 0x29, 0x3b, +0x00, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, +0x28, 0x28, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, 0x35, 0x32, 0x20, 0x2f, 0x20, 0x32, +0x2e, 0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, +0x77, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, +0x30, 0x5d, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x5f, 0x32, 0x36, 0x33, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x77, 0x29, 0x3b, 0x00, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, +0x2d, 0x28, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, +0x5f, 0x32, 0x35, 0x32, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, 0x38, 0x20, 0x2b, 0x20, +0x31, 0x29, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x00, 0x5f, 0x32, 0x34, +0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x32, 0x34, 0x33, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x69, 0x2e, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x32, +0x34, 0x33, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x69, 0x2e, 0x79, 0x29, 0x3b, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, +0x20, 0x5f, 0x32, 0x34, 0x33, 0x3b, 0x00, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, +0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x31, 0x37, 0x3b, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x3c, +0x6d, 0x65, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x64, 0x6c, 0x69, 0x62, 0x3e, 0x00, 0x23, 0x69, 0x6e, 0x63, 0x6c, 0x75, +0x64, 0x65, 0x20, 0x3c, 0x73, 0x69, 0x6d, 0x64, 0x2f, 0x73, 0x69, 0x6d, 0x64, 0x2e, 0x68, 0x3e, 0x00, 0x00, 0x75, 0x73, +0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x6c, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, +0x64, 0x65, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, +0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x68, 0x61, 0x6e, +0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, +0x49, 0x64, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x44, 0x61, +0x74, 0x61, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, +0x76, 0x65, 0x64, 0x5b, 0x38, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, +0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, +0x53, 0x20, 0x3d, 0x20, 0x53, 0x50, 0x49, 0x52, 0x56, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x53, +0x54, 0x41, 0x4e, 0x54, 0x5f, 0x49, 0x44, 0x5f, 0x31, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x4f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x50, 0x65, 0x72, +0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5b, +0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, +0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x76, 0x69, 0x65, +0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, +0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x76, 0x69, +0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, 0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x34, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x6c, 0x69, +0x70, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, +0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, +0x6c, 0x69, 0x70, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, +0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, +0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x70, 0x6f, +0x72, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x6c, 0x6f, 0x64, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, +0x65, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x61, 0x74, 0x69, 0x76, +0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, +0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, +0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x46, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x65, 0x76, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x6e, 0x65, 0x65, 0x64, 0x73, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x51, +0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x64, 0x45, 0x64, 0x67, 0x65, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x6f, 0x42, 0x65, 0x6e, 0x74, 0x4e, +0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x7a, +0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, +0x69, 0x6e, 0x74, 0x33, 0x20, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, +0x74, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x66, 0x72, 0x6f, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x58, +0x59, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, +0x6e, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x62, 0x6c, +0x52, 0x6f, 0x75, 0x67, 0x68, 0x6e, 0x65, 0x73, 0x73, 0x4f, 0x6e, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x69, 0x62, 0x6c, 0x53, 0x48, 0x5b, 0x39, 0x5d, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, +0x73, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x73, 0x75, 0x6e, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x46, +0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, +0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, +0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x61, 0x73, 0x63, 0x61, +0x64, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x61, +0x73, 0x63, 0x61, 0x64, 0x65, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x68, +0x61, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x72, 0x61, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x53, 0x63, 0x61, +0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x46, 0x61, 0x72, 0x41, 0x74, 0x74, 0x65, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x45, 0x78, 0x70, 0x6f, 0x6e, +0x65, 0x6e, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x76, 0x73, 0x6d, 0x44, 0x65, +0x70, 0x74, 0x68, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, +0x76, 0x73, 0x6d, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x42, 0x6c, 0x65, 0x65, 0x64, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, +0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, +0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, +0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, +0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x4f, +0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x67, +0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x75, 0x74, 0x4f, 0x66, 0x66, 0x44, 0x69, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, +0x6c, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, +0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, +0x53, 0x69, 0x7a, 0x65, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4f, +0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, +0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x20, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, +0x20, 0x73, 0x73, 0x72, 0x52, 0x65, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x73, 0x73, 0x72, 0x55, 0x76, 0x46, 0x72, 0x6f, 0x6d, +0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x73, 0x73, 0x72, 0x54, 0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x42, 0x69, 0x61, 0x73, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x73, 0x72, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5b, 0x34, 0x5d, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x63, 0x37, 0x30, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, +0x65, 0x64, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x73, 0x32, 0x52, 0x65, +0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5b, 0x34, 0x30, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, +0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, +0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, +0x61, 0x6c, 0x65, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, +0x74, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, +0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x34, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x34, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, +0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x37, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x69, +0x6e, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, +0x75, 0x73, 0x65, 0x72, 0x28, 0x6c, 0x6f, 0x63, 0x6e, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, +0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6d, +0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x6d, +0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, +0x62, 0x75, 0x74, 0x65, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, +0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, +0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, +0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, +0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, +0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, +0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, +0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, +0x35, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x5b, 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, +0x64, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6f, +0x75, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x67, 0x6c, +0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x37, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, 0x6d, 0x65, +0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x20, +0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x37, 0x29, 0x29, 0x2e, 0x78, 0x79, +0x7a, 0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, +0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, +0x33, 0x36, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, 0x36, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, 0x36, +0x36, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, +0x36, 0x36, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, +0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x36, 0x36, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x2e, +0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, +0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x31, +0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, +0x31, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x32, 0x38, +0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, +0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x33, 0x33, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, +0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x32, 0x38, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, +0x3d, 0x20, 0x5f, 0x32, 0x32, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, +0x75, 0x74, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x66, 0x72, 0x61, 0x67, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x5b, 0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, +0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, +0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, +0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, +0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x43, +0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, +0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, +0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, +0x66, 0x65, 0x72, 0x31, 0x20, 0x7b, 0x00, 0x64, 0x65, 0x70, 0x74, 0x68, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, +0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, +0x4d, 0x61, 0x70, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, +0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4d, 0x61, 0x70, 0x53, 0x6d, +0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, +0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, +0x6c, 0x44, 0x46, 0x47, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, +0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x44, 0x46, 0x47, 0x53, 0x6d, 0x70, 0x6c, +0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x33, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, +0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, +0x6c, 0x53, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x34, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x62, 0x6c, 0x53, 0x70, +0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x35, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x20, 0x5b, 0x5b, 0x69, +0x64, 0x28, 0x36, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x73, 0x73, 0x61, 0x6f, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x37, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3c, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x73, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, +0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x5f, 0x73, 0x73, 0x72, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x39, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x64, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, +0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, +0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, +0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, +0x31, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x63, 0x75, 0x62, 0x65, 0x3c, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x20, 0x5b, 0x5b, 0x69, 0x64, +0x28, 0x31, 0x32, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x67, 0x68, +0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x20, 0x5b, 0x5b, 0x69, 0x64, 0x28, 0x31, 0x33, 0x29, 0x5d, +0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, +0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, +0x6e, 0x74, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x42, +0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x26, 0x20, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, +0x72, 0x53, 0x65, 0x74, 0x31, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x37, 0x29, 0x5d, 0x5d, +0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x20, +0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x37, 0x29, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x26, +0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, +0x66, 0x66, 0x65, 0x72, 0x28, 0x32, 0x35, 0x29, 0x5d, 0x5d, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x33, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, +0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, +0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, +0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x56, +0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x33, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x64, +0x6f, 0x00, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x5f, 0x34, 0x34, 0x38, +0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, +0x3e, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, +0x75, 0x74, 0x4f, 0x66, 0x66, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x7b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, +0x35, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, +0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x34, 0x38, +0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x36, +0x31, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x20, 0x2a, 0x20, 0x5f, 0x36, +0x31, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x37, +0x39, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x62, 0x73, 0x28, +0x5f, 0x36, 0x31, 0x38, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x32, 0x35, 0x29, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, +0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, +0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x2d, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x48, 0x65, 0x69, 0x67, +0x68, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x5f, 0x36, 0x31, 0x37, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x5b, 0x31, 0x5d, 0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x5b, 0x32, 0x5d, 0x29, 0x20, 0x2f, 0x20, 0x5f, +0x36, 0x31, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x44, 0x65, 0x6e, 0x73, 0x69, 0x74, +0x79, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, +0x38, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, +0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, +0x37, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, +0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, +0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x61, +0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x38, 0x32, 0x34, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x69, 0x66, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x62, 0x6c, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, +0x38, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, +0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, +0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, +0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x34, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, +0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, +0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, +0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, +0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, +0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, +0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x5f, 0x38, 0x31, 0x34, 0x2e, 0x79, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x34, 0x2e, +0x78, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x36, +0x30, 0x31, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, +0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, +0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, 0x61, 0x72, +0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x5f, 0x38, 0x31, 0x30, 0x29, +0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x39, 0x39, +0x20, 0x2a, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, +0x6d, 0x73, 0x2e, 0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x5f, +0x36, 0x35, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, +0x5f, 0x38, 0x30, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, +0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3e, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x30, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, +0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, +0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, +0x70, 0x6f, 0x77, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, +0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, +0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, +0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, +0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, +0x20, 0x2d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x28, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, +0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, +0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, +0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, +0x30, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, +0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x28, 0x6f, 0x75, +0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x38, 0x33, 0x33, +0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x5f, 0x38, 0x31, 0x30, 0x20, 0x2d, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, +0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x2e, 0x77, 0x29, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x20, +0x3d, 0x20, 0x5f, 0x38, 0x33, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, +0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x2e, +0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x39, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x7d, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x5f, 0x38, 0x30, 0x35, 0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x36, 0x35, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x5b, +0x5b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x6d, 0x61, +0x69, 0x6e, 0x30, 0x5f, 0x69, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, +0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x26, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x31, 0x38, 0x29, 0x5d, 0x5d, 0x29, 0x00, +0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x78, +0x20, 0x3d, 0x20, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3e, 0x28, 0x6f, 0x62, +0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x31, +0x36, 0x35, 0x5d, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x6f, 0x75, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x2f, +0x20, 0x69, 0x6e, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, +0x77, 0x3b, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x5f, 0x6f, 0x75, +0x74, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x30, 0x28, 0x29, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, +0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x30, 0x2e, 0x30, +0x29, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, +0x74, 0x6d, 0x70, 0x20, 0x5b, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x74, 0x28, 0x38, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, +0x6e, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, +0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x43, 0x4f, +0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, +0x54, 0x5f, 0x74, 0x6d, 0x70, 0x29, 0x20, 0x3f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, +0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x74, 0x6d, 0x70, 0x20, 0x3a, 0x20, 0x32, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, +0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x5b, 0x5b, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, +0x6e, 0x63, 0x65, 0x5d, 0x5d, 0x20, 0x5b, 0x32, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, 0x20, 0x5b, +0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x31, 0x20, 0x5b, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x28, 0x63, 0x6c, 0x69, 0x70, 0x31, 0x29, 0x5d, 0x5d, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x36, 0x38, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, +0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x32, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x2e, 0x78, 0x79, 0x7a, +0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x37, 0x31, +0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, +0x72, 0x61, 0x6d, 0x73, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x37, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x38, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, +0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x34, +0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x34, 0x20, 0x5f, 0x38, 0x39, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, +0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x36, 0x38, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, +0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x38, 0x34, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x39, 0x2e, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x39, 0x2e, 0x79, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x39, 0x2e, 0x7a, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x20, 0x3d, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, +0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, +0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, +0x2a, 0x20, 0x5f, 0x38, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, +0x78, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, +0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, +0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, +0x28, 0x5f, 0x31, 0x30, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, +0x31, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x30, 0x30, 0x2e, 0x78, +0x2c, 0x20, 0x5f, 0x31, 0x30, 0x35, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x31, +0x30, 0x33, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, +0x31, 0x30, 0x35, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x30, 0x30, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x5f, 0x31, 0x31, 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x31, 0x31, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, +0x20, 0x2f, 0x20, 0x5f, 0x31, 0x30, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, +0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, +0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x34, 0x2c, 0x20, 0x5f, 0x31, 0x30, 0x37, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x31, 0x31, 0x34, 0x2c, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x31, 0x30, 0x32, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, +0x30, 0x29, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x30, 0x2c, 0x20, 0x5f, 0x31, 0x31, 0x32, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, +0x31, 0x31, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, +0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x36, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, +0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x30, +0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5b, 0x30, 0x5d, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, +0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x31, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, +0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x2e, +0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, +0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x2e, 0x78, 0x79, +0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, +0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, +0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, +0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x29, 0x29, 0x2e, +0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, +0x73, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x33, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, 0x38, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x33, +0x36, 0x37, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, +0x33, 0x36, 0x37, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x5f, 0x33, 0x36, 0x37, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x32, 0x33, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, +0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, +0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, +0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x33, +0x36, 0x37, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, +0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x33, +0x32, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, +0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, +0x33, 0x32, 0x2e, 0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, +0x33, 0x33, 0x32, 0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, +0x32, 0x38, 0x20, 0x3d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, +0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, +0x5d, 0x20, 0x2a, 0x20, 0x5f, 0x33, 0x33, 0x32, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, +0x20, 0x5f, 0x34, 0x35, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, +0x72, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x20, 0x3d, 0x20, 0x5f, +0x34, 0x35, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, +0x36, 0x35, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6d, 0x69, 0x6e, 0x28, 0x31, 0x2e, 0x30, 0x20, +0x2d, 0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, +0x3a, 0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, +0x29, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, +0x67, 0x4d, 0x61, 0x78, 0x4f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x20, 0x5f, 0x38, 0x31, 0x31, 0x20, 0x3d, 0x20, +0x68, 0x61, 0x6c, 0x66, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x28, 0x61, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, +0x3c, 0x68, 0x61, 0x6c, 0x66, 0x32, 0x3e, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, +0x73, 0x2e, 0x66, 0x6f, 0x67, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x4d, 0x69, 0x70, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, 0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, +0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x20, 0x2a, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x68, 0x61, +0x6c, 0x66, 0x34, 0x28, 0x73, 0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, +0x31, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x73, +0x70, 0x76, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x31, 0x2e, 0x6c, 0x69, 0x67, +0x68, 0x74, 0x5f, 0x66, 0x6f, 0x67, 0x53, 0x6d, 0x70, 0x6c, 0x72, 0x2c, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, +0x6f, 0x73, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x78, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, +0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x30, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, +0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, +0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x31, +0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, +0x2e, 0x75, 0x73, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, +0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x32, 0x5d, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, +0x38, 0x29, 0x2c, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x28, 0x6d, 0x69, 0x78, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x5f, 0x38, 0x31, 0x31, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x38, 0x31, 0x31, 0x2e, +0x78, 0x29, 0x2c, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x66, 0x6d, 0x61, 0x28, +0x5f, 0x36, 0x30, 0x31, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x66, 0x6f, 0x67, 0x4f, 0x6e, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x2c, 0x20, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, +0x6f, 0x67, 0x4e, 0x65, 0x61, 0x72, 0x4f, 0x76, 0x65, 0x72, 0x46, 0x61, 0x72, 0x4d, 0x69, 0x6e, 0x75, 0x73, 0x4e, 0x65, +0x61, 0x72, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x78, +0x79, 0x7a, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x37, 0x39, +0x39, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x3d, 0x20, 0x5f, 0x37, +0x39, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, +0x69, 0x62, 0x6c, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2a, 0x20, 0x5f, 0x36, 0x35, 0x31, 0x29, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x38, 0x30, +0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x38, 0x30, 0x34, 0x20, +0x3d, 0x20, 0x5f, 0x37, 0x30, 0x30, 0x20, 0x2b, 0x20, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, +0x73, 0x69, 0x74, 0x79, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x6e, +0x73, 0x69, 0x74, 0x79, 0x2e, 0x77, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x70, 0x6f, 0x77, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, +0x3a, 0x6d, 0x61, 0x78, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, +0x6c, 0x69, 0x7a, 0x65, 0x28, 0x5f, 0x34, 0x34, 0x38, 0x29, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x28, 0x66, +0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, +0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, 0x72, 0x61, +0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, +0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, +0x20, 0x65, 0x78, 0x70, 0x28, 0x2d, 0x28, 0x5f, 0x37, 0x39, 0x38, 0x20, 0x2a, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, 0x3a, +0x6d, 0x61, 0x78, 0x28, 0x5f, 0x36, 0x30, 0x31, 0x20, 0x2d, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, +0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x66, 0x6f, 0x67, 0x49, 0x6e, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, +0x53, 0x74, 0x61, 0x72, 0x74, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x37, 0x35, 0x30, 0x20, 0x3d, 0x20, +0x28, 0x5f, 0x34, 0x35, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x5f, +0x36, 0x35, 0x31, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x5f, 0x38, 0x30, 0x34, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x35, 0x30, +0x2e, 0x77, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, +0x5f, 0x37, 0x39, 0x33, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x35, 0x30, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, +0x2e, 0x66, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x5f, 0x38, 0x30, 0x35, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, +0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, +0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, +0x2e, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x5f, 0x33, 0x39, 0x36, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x2e, 0x78, +0x79, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x28, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x55, +0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6c, +0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, +0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5f, 0x32, 0x30, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, +0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, +0x5f, 0x34, 0x31, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x20, 0x2f, 0x20, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, +0x61, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x34, 0x34, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x31, 0x31, 0x3b, +0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, 0x34, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x36, 0x2e, 0x78, +0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, 0x34, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x36, 0x2e, +0x79, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x34, 0x34, 0x34, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x33, 0x39, 0x36, +0x2e, 0x7a, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x30, 0x35, 0x20, +0x3d, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x64, 0x61, 0x74, +0x61, 0x5b, 0x5f, 0x32, 0x30, 0x39, 0x5d, 0x2e, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, +0x65, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x2a, 0x20, 0x5f, 0x34, 0x34, 0x34, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, +0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x35, 0x2e, 0x78, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, +0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x35, 0x2e, 0x79, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, +0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x34, 0x30, 0x35, 0x2e, 0x7a, 0x3b, 0x00, +0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x5f, 0x32, 0x33, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x72, +0x61, 0x6d, 0x65, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x70, 0x46, 0x72, 0x6f, 0x6d, +0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5b, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, +0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, +0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5d, 0x20, 0x2a, 0x20, +0x5f, 0x34, 0x30, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, +0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x35, 0x3b, 0x00, 0x20, 0x20, +0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x30, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, +0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, +0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x3b, 0x00, 0x20, +0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x28, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, 0x4f, 0x5f, 0x45, 0x59, 0x45, 0x5f, +0x43, 0x4f, 0x55, 0x4e, 0x54, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, +0x34, 0x38, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x20, 0x3d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, +0x5f, 0x32, 0x34, 0x30, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x32, 0x36, +0x37, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x35, 0x2e, 0x77, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, +0x74, 0x20, 0x5f, 0x32, 0x37, 0x31, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x32, 0x33, 0x35, 0x2e, 0x78, 0x2c, +0x20, 0x5f, 0x32, 0x34, 0x38, 0x2c, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2f, 0x20, 0x5f, 0x32, 0x34, +0x33, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x2c, 0x20, 0x28, 0x2d, 0x31, 0x2e, 0x30, 0x29, 0x20, 0x2b, 0x20, 0x5f, 0x32, +0x34, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, +0x61, 0x74, 0x34, 0x20, 0x5f, 0x34, 0x35, 0x35, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x33, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, +0x20, 0x5f, 0x34, 0x35, 0x35, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x37, 0x31, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x5f, 0x34, 0x36, 0x31, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x32, 0x2e, 0x30, 0x29, 0x20, +0x2f, 0x20, 0x5f, 0x32, 0x34, 0x33, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, +0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, +0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x36, 0x31, 0x2c, 0x20, 0x5f, 0x32, 0x35, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x2c, 0x20, 0x5f, 0x32, 0x37, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x43, 0x6c, 0x69, 0x70, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5b, +0x31, 0x5d, 0x20, 0x3d, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x66, 0x6d, 0x61, 0x28, 0x5f, 0x34, 0x36, 0x31, 0x2c, 0x20, +0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x5f, 0x32, 0x34, 0x30, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x2e, 0x30, +0x29, 0x2c, 0x20, 0x5f, 0x32, 0x36, 0x37, 0x2c, 0x20, 0x5f, 0x32, 0x37, 0x31, 0x29, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, +0x6f, 0x75, 0x74, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x34, +0x35, 0x35, 0x3b, 0x00, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x2e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, +0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x5f, 0x32, 0x30, 0x39, 0x3b, 0x00, 0x4c, 0x53, 0x4c, 0x47, 0x5f, +0x54, 0x41, 0x4d, 0x0e, 0x09, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, +0x00, 0x00, 0x01, 0x00, 0x01, 0xa4, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xe0, +0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xf4, 0x01, 0x00, 0x00, 0x01, 0x30, 0x01, 0x40, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, +0x82, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x9a, 0x03, 0x00, 0x00, 0x01, 0x90, 0x00, 0x9a, 0x03, 0x00, 0x00, 0x02, 0x00, +0x00, 0xd6, 0x04, 0x00, 0x00, 0x02, 0x00, 0x01, 0xf6, 0x05, 0x00, 0x00, 0x02, 0x10, 0x00, 0xd6, 0x04, 0x00, 0x00, 0x02, +0x10, 0x01, 0x30, 0x06, 0x00, 0x00, 0x02, 0x20, 0x01, 0x42, 0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x7c, 0x07, 0x00, 0x00, +0x02, 0x44, 0x01, 0xbc, 0x07, 0x00, 0x00, 0x02, 0x80, 0x00, 0xd2, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xd2, 0x07, 0x00, +0x00, 0x86, 0x0a, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, +0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, +0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, +0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, +0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, +0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, +0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, +0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, +0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, +0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, +0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, 0x00, 0x18, +0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, +0x00, 0x02, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, +0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, +0x00, 0x7d, 0x00, 0x7e, 0x00, 0x6d, 0x00, 0x14, 0x02, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x80, +0x00, 0x81, 0x00, 0x02, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x04, 0x00, 0x88, +0x00, 0x89, 0x00, 0x8a, 0x00, 0x62, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x65, 0x00, 0x8e, 0x00, 0x6a, +0x00, 0x02, 0x00, 0x8f, 0x00, 0x6d, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x80, +0x00, 0x6a, 0x00, 0x02, 0x00, 0x6d, 0x00, 0xb8, 0x0c, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x80, +0x00, 0x81, 0x00, 0x02, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x04, 0x00, 0x90, +0x00, 0x91, 0x00, 0x92, 0x00, 0x17, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, +0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, +0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, +0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, +0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf, +0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, +0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, +0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, +0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x65, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0x8e, 0x00, 0xdd, 0x00, 0x02, 0x00, 0xde, +0x00, 0xdf, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x6d, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0x02, 0x00, 0xe4, 0x00, 0x6d, +0x00, 0x6e, 0x00, 0x02, 0x00, 0xe5, 0x00, 0x6d, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x02, +0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0xef, 0x00, 0x6d, 0x00, 0xf0, +0x00, 0xf1, 0x00, 0xf2, 0x00, 0x02, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0x6d, 0x00, 0x6e, +0x00, 0x02, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xe0, +0x00, 0x6d, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xff, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x6d, 0x00, 0xec, +0x02, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x01, 0x05, +0x01, 0x06, 0x01, 0x07, 0x01, 0x08, 0x01, 0x09, 0x01, 0x0a, 0x01, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, +0x00, 0x0b, 0x01, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x0c, 0x01, 0x0d, 0x01, 0x6a, 0x00, 0x02, 0x00, 0x0e, +0x01, 0x0f, 0x01, 0x6d, 0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x8e, +0x00, 0x6a, 0x00, 0x02, 0x00, 0x10, 0x01, 0x6d, 0x00, 0x0f, 0x0d, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, +0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x01, 0x13, +0x01, 0x0f, 0x00, 0x14, 0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, +0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, +0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, +0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, +0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, +0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, +0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, +0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, +0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, 0x00, 0x18, 0x00, 0x63, +0x00, 0x64, 0x00, 0x65, 0x00, 0x67, 0x00, 0x66, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x02, +0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x15, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, +0x01, 0x19, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, 0x01, 0x21, 0x01, 0x22, +0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x2c, +0x01, 0x2d, 0x01, 0x6d, 0x00, 0xb6, 0x09, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0x01, 0x00, 0x02, +0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, +0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, +0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, +0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, +0x00, 0x26, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0xa8, 0x00, 0xa9, +0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0x39, +0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x3d, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0x40, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0x43, +0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc4, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, +0x00, 0xc8, 0x00, 0xc9, 0x00, 0x50, 0x00, 0xcb, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xd1, +0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0x5b, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x61, +0x00, 0x62, 0x00, 0x02, 0x00, 0x18, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x65, 0x00, 0x66, 0x00, 0x30, 0x01, 0x31, 0x01, 0x32, +0x01, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x6d, +0x00, 0x33, 0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x78, 0x00, 0x79, +0x00, 0x7a, 0x00, 0x3b, 0x01, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x6d, 0x00, 0x0f, 0x02, 0x00, 0x00, 0x19, 0x00, 0x00, +0x00, 0x2e, 0x01, 0x2f, 0x01, 0x81, 0x00, 0x02, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, +0x00, 0x04, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x62, 0x00, 0x02, 0x00, 0x18, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x65, +0x00, 0x8e, 0x00, 0x6a, 0x00, 0x02, 0x00, 0x8f, 0x00, 0x6d, 0x00, 0x52, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2e, +0x01, 0x2f, 0x01, 0x6a, 0x00, 0x02, 0x00, 0x6d, 0x00, 0xdc, 0x0a, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x2f, +0x01, 0x81, 0x00, 0x02, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x04, 0x00, 0x90, +0x00, 0x91, 0x00, 0x92, 0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, +0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0xa1, +0x00, 0xa2, 0x00, 0xa3, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, +0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0x39, 0x00, 0xb4, 0x00, 0xb5, +0x00, 0xb6, 0x00, 0x3d, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0x40, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0x43, 0x00, 0xbe, 0x00, 0xbf, +0x00, 0xc0, 0x00, 0xc1, 0x00, 0x48, 0x00, 0x49, 0x00, 0xc4, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc8, 0x00, 0xc9, +0x00, 0x50, 0x00, 0xcb, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, +0x00, 0xd4, 0x00, 0x5b, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, +0x00, 0x18, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x65, 0x00, 0x3c, 0x01, 0x3d, 0x01, 0x8e, 0x00, 0x3e, 0x01, 0x02, 0x00, 0x3f, +0x01, 0xdf, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x6d, 0x00, 0x40, 0x01, 0x41, 0x01, 0xe3, 0x00, 0x02, 0x00, 0xe4, 0x00, 0x6d, +0x00, 0x6e, 0x00, 0x02, 0x00, 0xe5, 0x00, 0x6d, 0x00, 0x42, 0x01, 0xe9, 0x00, 0xea, 0x00, 0x02, 0x00, 0x43, 0x01, 0x44, +0x01, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0xef, 0x00, 0x6d, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x45, +0x01, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, +0x00, 0xfe, 0x00, 0xe0, 0x00, 0x6d, 0x00, 0x6a, 0x00, 0x02, 0x00, 0xff, 0x00, 0x00, 0x01, 0x46, 0x01, 0x02, 0x01, 0x03, +0x01, 0x6d, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0x05, 0x00, 0x02, 0x00, 0x06, +0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, +0x00, 0x10, 0x00, 0x0b, 0x01, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, 0x00, 0x47, 0x01, 0x48, 0x01, 0x6a, 0x00, 0x02, +0x00, 0x0e, 0x01, 0x0f, 0x01, 0x6d, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0x8e, +0x00, 0x6a, 0x00, 0x02, 0x00, 0x10, 0x01, 0x6d, 0x00, 0x21, 0x0c, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x2f, +0x01, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, +0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x01, 0x13, +0x01, 0x0f, 0x00, 0x14, 0x01, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x14, 0x00, 0x02, 0x00, 0x15, 0x00, 0x16, +0x00, 0x17, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, +0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, +0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, +0x00, 0xae, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0x39, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0x3d, +0x00, 0xb8, 0x00, 0xb9, 0x00, 0x40, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0x43, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, +0x00, 0x48, 0x00, 0x49, 0x00, 0xc4, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0x50, 0x00, 0xcb, +0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0x5b, +0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0x61, 0x00, 0x62, 0x00, 0x02, 0x00, 0x18, 0x00, 0x8c, +0x00, 0x8d, 0x00, 0x65, 0x00, 0x30, 0x01, 0x66, 0x00, 0x31, 0x01, 0x32, 0x01, 0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x02, +0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x49, 0x01, 0x4a, 0x01, 0x4b, 0x01, 0x4c, +0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x56, +0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x5f, 0x01, 0x60, +0x01, 0x61, 0x01, 0x6d, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0x22, 0x09, 0x00, 0x00, 0x12, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xac, 0x01, 0x00, 0x00, 0x01, +0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xe4, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xfe, 0x01, 0x00, 0x00, +0x01, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0xcc, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0xf6, 0x03, 0x00, +0x00, 0x01, 0x90, 0x00, 0xf6, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x46, 0x05, 0x00, 0x00, 0x02, 0x00, 0x01, 0xac, 0x01, +0x00, 0x00, 0x02, 0x10, 0x00, 0x46, 0x05, 0x00, 0x00, 0x02, 0x10, 0x01, 0xe4, 0x01, 0x00, 0x00, 0x02, 0x20, 0x01, 0x6c, +0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x02, 0x44, 0x01, 0xcc, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, +0xd2, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xd2, 0x07, 0x00, 0x00, 0x29, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x62, +0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, +0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, +0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, +0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, +0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, +0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, +0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, +0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, +0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, +0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, +0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, +0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, +0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, +0x01, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd5, +0x01, 0x6d, 0x00, 0x64, 0x01, 0x96, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, +0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, +0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd7, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64, +0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xd9, +0x01, 0x02, 0x00, 0x6d, 0x00, 0x64, 0x01, 0x82, 0x16, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, +0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, +0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, +0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, +0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, +0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, +0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, +0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, +0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, +0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, +0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, +0x01, 0xe8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, +0x00, 0xbf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, +0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, +0x01, 0xf7, 0x01, 0xf0, 0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0xfa, 0x01, 0xf3, 0x01, 0xfb, 0x01, 0xfc, +0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0xf0, 0x01, 0x00, 0x02, 0x01, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x02, +0x02, 0xf3, 0x01, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0xf0, 0x01, 0x06, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x07, +0x02, 0xf3, 0x01, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, +0x02, 0x11, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, +0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, +0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, +0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x12, 0x02, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0x13, 0x02, 0x04, +0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0x14, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x15, +0x02, 0x16, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, +0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0x17, 0x02, 0x02, +0x00, 0xc6, 0x01, 0x18, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x2b, 0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, +0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, +0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, +0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, +0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, +0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, +0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, +0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, +0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, +0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, +0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, +0x01, 0x04, 0x00, 0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, +0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c, +0x02, 0x1d, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, +0x00, 0xc6, 0x01, 0xc7, 0x01, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, +0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, +0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, +0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x29, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, +0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, +0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, +0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, +0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, +0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, +0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, +0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, +0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, +0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, +0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, +0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, +0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, +0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x3a, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f, +0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0xd3, 0x01, 0xd4, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64, +0x01, 0x21, 0x16, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, +0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, +0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, +0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, +0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, +0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, +0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, +0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, +0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, +0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, +0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0x04, 0x00, 0x64, +0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0x04, 0x00, 0x64, +0x01, 0xe9, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01, 0x45, 0x02, 0x46, 0x02, 0xec, 0x01, 0xed, 0x01, 0xee, +0x01, 0xef, 0x01, 0xf0, 0x01, 0x47, 0x02, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf0, +0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0xfa, 0x01, 0xf3, 0x01, 0x48, 0x02, 0x49, 0x02, 0xff, 0x01, 0xf0, +0x01, 0x4a, 0x02, 0x4b, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x4c, 0x02, 0xf3, 0x01, 0x4d, 0x02, 0x4e, 0x02, 0x05, +0x02, 0xf0, 0x01, 0x4f, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x07, 0x02, 0xf3, 0x01, 0x50, 0x02, 0x51, 0x02, 0x0b, +0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x52, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x41, +0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, +0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, +0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, +0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, +0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, +0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, +0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, +0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, +0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, +0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, +0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01, 0xba, +0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, +0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, +0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x53, 0x02, 0x54, 0x02, 0x55, 0x02, 0x56, +0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x5f, 0x02, 0x60, +0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, +0x02, 0x6b, 0x02, 0x6c, 0x02, 0x38, 0x02, 0x39, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, + +}; + +int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET = 0; +int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE = 28235; diff --git a/thermion_dart/native/include/material/unlit_fixed_size.h b/thermion_dart/native/include/material/unlit_fixed_size.h new file mode 100644 index 00000000..b561a9eb --- /dev/null +++ b/thermion_dart/native/include/material/unlit_fixed_size.h @@ -0,0 +1,13 @@ +#ifndef UNLIT_FIXED_SIZE_H_ +#define UNLIT_FIXED_SIZE_H_ + +#include + +extern "C" { + extern const uint8_t UNLIT_FIXED_SIZE_PACKAGE[]; + extern int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET; + extern int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE; +} +#define UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_DATA (UNLIT_FIXED_SIZE_PACKAGE + UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET) + +#endif diff --git a/thermion_dart/native/src/Gizmo.cpp b/thermion_dart/native/src/Gizmo.cpp index df92c332..93271ddc 100644 --- a/thermion_dart/native/src/Gizmo.cpp +++ b/thermion_dart/native/src/Gizmo.cpp @@ -7,31 +7,26 @@ #include #include #include "SceneManager.hpp" -#include "material/gizmo.h" +#include "material/unlit_fixed_size.h" #include "Log.hpp" namespace thermion { using namespace filament::gltfio; -Gizmo::Gizmo(Engine *engine, View *view, Scene* scene) : _engine(engine), _view(view), _scene(scene) +Gizmo::Gizmo(Engine *engine, View *view, Scene* scene, Material* material) : _engine(engine), _view(view), _scene(scene), _material(material) { auto &entityManager = EntityManager::get(); auto &transformManager = _engine->getTransformManager(); - _material = - Material::Builder() - .package(GIZMO_GIZMO_DATA, GIZMO_GIZMO_SIZE) - .build(*_engine); - // First, create the black cube at the center // The axes widgets will be parented to this entity _entities[3] = entityManager.create(); _materialInstances[3] = _material->createInstance(); - _materialInstances[3]->setParameter("color", math::float4{0.0f, 0.0f, 0.0f, 1.0f}); // Black color + _materialInstances[3]->setParameter("baseColorFactor", math::float4{0.0f, 0.0f, 0.0f, 1.0f}); // Black color // Create center cube vertices float centerCubeSize = 0.01f; @@ -160,7 +155,7 @@ Gizmo::Gizmo(Engine *engine, View *view, Scene* scene) : _engine(engine), _view( break; } - _materialInstances[i]->setParameter("color", baseColor); + _materialInstances[i]->setParameter("baseColorFactor", baseColor); RenderableManager::Builder(1) .boundingBox({{-arrowWidth, -arrowWidth, 0}, diff --git a/thermion_dart/native/src/SceneManager.cpp b/thermion_dart/native/src/SceneManager.cpp index e87eb2bb..3d623027 100644 --- a/thermion_dart/native/src/SceneManager.cpp +++ b/thermion_dart/native/src/SceneManager.cpp @@ -33,9 +33,12 @@ #include "CustomGeometry.hpp" #include "UnprojectTexture.hpp" +#include "Gizmo.hpp" + extern "C" { #include "material/image.h" +#include "material/unlit_fixed_size.h" } namespace thermion @@ -52,9 +55,8 @@ namespace thermion Engine *engine, Scene *scene, const char *uberArchivePath, - Camera *mainCamera) - : - _resourceLoaderWrapper(resourceLoaderWrapper), + Camera *mainCamera) + : _resourceLoaderWrapper(resourceLoaderWrapper), _engine(engine), _scene(scene), _mainCamera(mainCamera) @@ -103,17 +105,22 @@ namespace thermion _scene->addEntity(_gridOverlay->sphere()); _scene->addEntity(_gridOverlay->grid()); + _gizmoMaterial = + Material::Builder() + .package(UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_DATA, UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE) + .build(*_engine); } SceneManager::~SceneManager() { - for(auto camera : _cameras) { + for (auto camera : _cameras) + { auto entity = camera->getEntity(); _engine->destroyCameraComponent(entity); _engine->getEntityManager().destroy(entity); } _cameras.clear(); - + _gridOverlay->destroy(); destroyAll(); @@ -131,8 +138,14 @@ namespace thermion AssetLoader::destroy(&_assetLoader); } - bool SceneManager::isGizmoEntity(Entity entity) { - return false; // TODO + Gizmo *SceneManager::createGizmo(View *view, Scene *scene) + { + return new Gizmo(_engine, view, scene, _gizmoMaterial); + } + + bool SceneManager::isGizmoEntity(Entity entity) + { + return false; // TODO } int SceneManager::getInstanceCount(EntityId entityId) @@ -246,15 +259,16 @@ namespace thermion return eid; } - void SceneManager::setVisibilityLayer(EntityId entityId, int layer) { - auto& rm = _engine->getRenderableManager(); + void SceneManager::setVisibilityLayer(EntityId entityId, int layer) + { + auto &rm = _engine->getRenderableManager(); auto renderable = rm.getInstance(utils::Entity::import(entityId)); - if(!renderable.isValid()) { + if (!renderable.isValid()) + { Log("Warning: no renderable found"); } rm.setLayerMask(renderable, 0xFF, 1u << layer); - } EntityId SceneManager::loadGlbFromBuffer(const uint8_t *data, size_t length, int numInstances, bool keepData, int priority, int layer, bool loadResourcesAsync) @@ -281,11 +295,13 @@ namespace thermion _scene->addEntities(asset->getEntities(), entityCount); - auto & rm = _engine->getRenderableManager(); + auto &rm = _engine->getRenderableManager(); - for(int i=0; i < entityCount; i++) { + for (int i = 0; i < entityCount; i++) + { auto instance = rm.getInstance(asset->getEntities()[i]); - if(!instance.isValid()) { + if (!instance.isValid()) + { Log("No valid renderable for entity"); continue; } @@ -304,13 +320,16 @@ namespace thermion _gltfResourceLoader->asyncUpdateLoad(); } #else - if(loadResourcesAsync) { + if (loadResourcesAsync) + { if (!_gltfResourceLoader->asyncBeginLoad(asset)) { Log("Unknown error loading glb asset"); return 0; } - } else { + } + else + { if (!_gltfResourceLoader->loadResources(asset)) { Log("Unknown error loading glb asset"); @@ -539,11 +558,13 @@ namespace thermion asset.second->getLightEntityCount()); _assetLoader->destroyAsset(asset.second); } - for(auto *texture : _textures) { + for (auto *texture : _textures) + { _engine->destroy(texture); } - for(auto *materialInstance : _materialInstances) { + for (auto *materialInstance : _materialInstances) + { _engine->destroy(materialInstance); } @@ -661,7 +682,6 @@ namespace thermion auto entity = Entity::import(entityId); - if (_animationComponentManager->hasComponent(entity)) { _animationComponentManager->removeComponent(entity); @@ -674,7 +694,8 @@ namespace thermion _scene->remove(entity); - if(isGeometryEntity(entityId)) { + if (isGeometryEntity(entityId)) + { return; } @@ -1412,7 +1433,7 @@ namespace thermion return texture; } - bool SceneManager::applyTexture(EntityId entityId, Texture *texture, const char* parameterName, int materialIndex) + bool SceneManager::applyTexture(EntityId entityId, Texture *texture, const char *parameterName, int materialIndex) { auto entity = Entity::import(entityId); @@ -1446,10 +1467,12 @@ namespace thermion return true; } - void SceneManager::destroyTexture(Texture* texture) { - if(_textures.find(texture) == _textures.end()) { + void SceneManager::destroyTexture(Texture *texture) + { + if (_textures.find(texture) == _textures.end()) + { Log("Warning: couldn't find texture"); - } + } _textures.erase(texture); _engine->destroy(texture); } @@ -1904,7 +1927,7 @@ namespace thermion tm.setTransform(transformInstance, newTransform); } - void SceneManager::queueRelativePositionUpdateFromViewportVector(View* view, EntityId entityId, float viewportCoordX, float viewportCoordY) + void SceneManager::queueRelativePositionUpdateFromViewportVector(View *view, EntityId entityId, float viewportCoordX, float viewportCoordY) { // Get the camera and viewport const auto &camera = view->getCamera(); @@ -1941,14 +1964,14 @@ namespace thermion auto entityPlaneInWorldSpace = camera.getModelMatrix() * entityPlaneInCameraSpace; // Queue the position update (as a relative movement) - } - - void SceneManager::queueTransformUpdates(EntityId* entities, math::mat4* transforms, int numEntities) + + void SceneManager::queueTransformUpdates(EntityId *entities, math::mat4 *transforms, int numEntities) { std::lock_guard lock(_mutex); - for(int i= 0; i < numEntities; i++) { + for (int i = 0; i < numEntities; i++) + { auto entity = entities[i]; const auto &pos = _transformUpdates.find(entity); if (pos == _transformUpdates.end()) @@ -2279,112 +2302,117 @@ namespace thermion } } -EntityId SceneManager::createGeometry( - float *vertices, - uint32_t numVertices, - float *normals, - uint32_t numNormals, - float *uvs, - uint32_t numUvs, - uint16_t *indices, - uint32_t numIndices, - filament::RenderableManager::PrimitiveType primitiveType, - filament::MaterialInstance* materialInstance, - bool keepData) -{ - auto geometry = std::make_unique(vertices, numVertices, normals, numNormals, uvs, numUvs, indices, numIndices, primitiveType, _engine); - - auto entity = utils::EntityManager::get().create(); - RenderableManager::Builder builder(1); - - builder.boundingBox(geometry->getBoundingBox()) - .geometry(0, primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, numIndices) - .culling(true) - .receiveShadows(true) - .castShadows(true); - - filament::Material *mat = nullptr; - - if (!materialInstance) { - Log("Using default ubershader material"); - filament::gltfio::MaterialKey config; - - memset(&config, 0, sizeof(config)); // Initialize all bits to zero - - config.unlit = false; - config.doubleSided = false; - config.useSpecularGlossiness = false; - config.alphaMode = filament::gltfio::AlphaMode::OPAQUE; - config.hasBaseColorTexture = numUvs > 0; - config.hasClearCoat = false; - config.hasClearCoatNormalTexture = false; - config.hasClearCoatRoughnessTexture = false; - config.hasEmissiveTexture = false; - config.hasIOR = false; - config.hasMetallicRoughnessTexture = false; - config.hasNormalTexture = false; - config.hasOcclusionTexture = false; - config.hasSheen = false; - config.hasSheenColorTexture = false; - config.hasSheenRoughnessTexture = false; - config.hasSpecularGlossinessTexture = false; - config.hasTextureTransforms = false; - config.hasTransmission = false; - config.hasTransmissionTexture = false; - config.hasVolume = false; - config.hasVolumeThicknessTexture = false; - config.baseColorUV = 0; - config.hasVertexColors = false; - config.hasVolume = false; - - materialInstance = createUbershaderMaterialInstance(config); - - if(!materialInstance) { - Log("Failed to create material instance"); - return Entity::smuggle(Entity()); - } - } - - // Set up texture and sampler if UVs are available - if (uvs != nullptr && numUvs > 0) + EntityId SceneManager::createGeometry( + float *vertices, + uint32_t numVertices, + float *normals, + uint32_t numNormals, + float *uvs, + uint32_t numUvs, + uint16_t *indices, + uint32_t numIndices, + filament::RenderableManager::PrimitiveType primitiveType, + filament::MaterialInstance *materialInstance, + bool keepData) { - // Create a default white texture - static constexpr uint32_t textureSize = 1; - static constexpr uint32_t white = 0x00ffffff; - Texture* texture = Texture::Builder() - .width(textureSize) - .height(textureSize) - .levels(1) - .format(Texture::InternalFormat::RGBA8) - .build(*_engine); + auto geometry = std::make_unique(vertices, numVertices, normals, numNormals, uvs, numUvs, indices, numIndices, primitiveType, _engine); - _textures.insert(texture); - - filament::backend::PixelBufferDescriptor pbd(&white, 4, Texture::Format::RGBA, Texture::Type::UBYTE); - texture->setImage(*_engine, 0, std::move(pbd)); + auto entity = utils::EntityManager::get().create(); + RenderableManager::Builder builder(1); - // Create a sampler - TextureSampler sampler(TextureSampler::MinFilter::NEAREST, TextureSampler::MagFilter::NEAREST); - sampler.setWrapModeS(TextureSampler::WrapMode::REPEAT); - sampler.setWrapModeT(TextureSampler::WrapMode::REPEAT); + builder.boundingBox(geometry->getBoundingBox()) + .geometry(0, primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, numIndices) + .culling(true) + .receiveShadows(true) + .castShadows(true); - // Set the texture and sampler to the material instance - materialInstance->setParameter("baseColorMap", texture, sampler); + filament::Material *mat = nullptr; + + if (!materialInstance) + { + Log("Using default ubershader material"); + filament::gltfio::MaterialKey config; + + memset(&config, 0, sizeof(config)); // Initialize all bits to zero + + config.unlit = false; + config.doubleSided = false; + config.useSpecularGlossiness = false; + config.alphaMode = filament::gltfio::AlphaMode::OPAQUE; + config.hasBaseColorTexture = numUvs > 0; + config.hasClearCoat = false; + config.hasClearCoatNormalTexture = false; + config.hasClearCoatRoughnessTexture = false; + config.hasEmissiveTexture = false; + config.hasIOR = false; + config.hasMetallicRoughnessTexture = false; + config.hasNormalTexture = false; + config.hasOcclusionTexture = false; + config.hasSheen = false; + config.hasSheenColorTexture = false; + config.hasSheenRoughnessTexture = false; + config.hasSpecularGlossinessTexture = false; + config.hasTextureTransforms = false; + config.hasTransmission = false; + config.hasTransmissionTexture = false; + config.hasVolume = false; + config.hasVolumeThicknessTexture = false; + config.baseColorUV = 0; + config.hasVertexColors = false; + config.hasVolume = false; + + materialInstance = createUbershaderMaterialInstance(config); + + if (!materialInstance) + { + Log("Failed to create material instance"); + return Entity::smuggle(Entity()); + } + } + + // Set up texture and sampler if UVs are available + if (uvs != nullptr && numUvs > 0) + { + if(materialInstance->getMaterial()->hasParameter("baseColorMap")) { + // Create a default white texture + static constexpr uint32_t textureSize = 1; + static constexpr uint32_t white = 0x00ffffff; + Texture *texture = Texture::Builder() + .width(textureSize) + .height(textureSize) + .levels(1) + .format(Texture::InternalFormat::RGBA8) + .build(*_engine); + + _textures.insert(texture); + + filament::backend::PixelBufferDescriptor pbd(&white, 4, Texture::Format::RGBA, Texture::Type::UBYTE); + texture->setImage(*_engine, 0, std::move(pbd)); + + // Create a sampler + TextureSampler sampler(TextureSampler::MinFilter::NEAREST, TextureSampler::MagFilter::NEAREST); + sampler.setWrapModeS(TextureSampler::WrapMode::REPEAT); + sampler.setWrapModeT(TextureSampler::WrapMode::REPEAT); + + // Set the texture and sampler to the material instance + materialInstance->setParameter("baseColorMap", texture, sampler); + } + } + + builder.material(0, materialInstance); + builder.build(*_engine, entity); + + _scene->addEntity(entity); + + auto entityId = Entity::smuggle(entity); + + _geometry.emplace(entityId, std::move(geometry)); + + return entityId; } - builder.material(0, materialInstance); - builder.build(*_engine, entity); - - _scene->addEntity(entity); - - auto entityId = Entity::smuggle(entity); - - _geometry.emplace(entityId, std::move(geometry)); - - return entityId; -} - - MaterialInstance* SceneManager::getMaterialInstanceAt(EntityId entityId, int materialIndex) { + MaterialInstance *SceneManager::getMaterialInstanceAt(EntityId entityId, int materialIndex) + { auto entity = Entity::import(entityId); const auto &rm = _engine->getRenderableManager(); auto renderableInstance = rm.getInstance(entity); @@ -2436,7 +2464,7 @@ EntityId SceneManager::createGeometry( materialInstance->setParameter(property, value); } - void SceneManager::setMaterialProperty(EntityId entityId, int materialIndex, const char *property, filament::math::float4& value) + void SceneManager::setMaterialProperty(EntityId entityId, int materialIndex, const char *property, filament::math::float4 &value) { auto entity = Entity::import(entityId); const auto &rm = _engine->getRenderableManager(); @@ -2453,17 +2481,20 @@ EntityId SceneManager::createGeometry( Log("Parameter %s not found", property); return; } - materialInstance->setParameter(property, filament::math::float4 { value.x, value.y, value.z, value.w }); + materialInstance->setParameter(property, filament::math::float4{value.x, value.y, value.z, value.w}); } - void SceneManager::destroy(MaterialInstance* instance) { + void SceneManager::destroy(MaterialInstance *instance) + { _engine->destroy(instance); } - MaterialInstance* SceneManager::createUbershaderMaterialInstance(filament::gltfio::MaterialKey config) { - filament::gltfio::UvMap uvmap {}; - auto * materialInstance = _ubershaderProvider->createMaterialInstance(&config, &uvmap); - if(!materialInstance) { + MaterialInstance *SceneManager::createUbershaderMaterialInstance(filament::gltfio::MaterialKey config) + { + filament::gltfio::UvMap uvmap{}; + auto *materialInstance = _ubershaderProvider->createMaterialInstance(&config, &uvmap); + if (!materialInstance) + { Log("Invalid material configuration"); return nullptr; } @@ -2473,44 +2504,58 @@ EntityId SceneManager::createGeometry( return materialInstance; } - MaterialInstance* SceneManager::createUnlitMaterialInstance() { + MaterialInstance *SceneManager::createUnlitFixedSizeMaterialInstance() + { + auto instance = _gizmoMaterial->createInstance(); + instance->setParameter("scale", 1.0f); + return instance; + } + + MaterialInstance *SceneManager::createUnlitMaterialInstance() + { UvMap uvmap; auto instance = _unlitMaterialProvider->createMaterialInstance(nullptr, &uvmap); - instance->setParameter("uvScale", filament::math::float2 { 1.0f, 1.0f }); + instance->setParameter("uvScale", filament::math::float2{1.0f, 1.0f}); _materialInstances.push_back(instance); return instance; } - Camera* SceneManager::createCamera() { + Camera *SceneManager::createCamera() + { auto entity = EntityManager::get().create(); auto camera = _engine->createCamera(entity); _cameras.push_back(camera); return camera; } - void SceneManager::destroyCamera(Camera* camera) { + void SceneManager::destroyCamera(Camera *camera) + { auto entity = camera->getEntity(); _engine->destroyCameraComponent(entity); _engine->getEntityManager().destroy(entity); auto it = std::find(_cameras.begin(), _cameras.end(), camera); - if(it != _cameras.end()) { + if (it != _cameras.end()) + { _cameras.erase(it); } } - size_t SceneManager::getCameraCount() { + size_t SceneManager::getCameraCount() + { return _cameras.size() + 1; } - Camera* SceneManager::getCameraAt(size_t index) { - if(index == 0) { + Camera *SceneManager::getCameraAt(size_t index) + { + if (index == 0) + { return _mainCamera; } - if(index - 1 > _cameras.size() - 1) { + if (index - 1 > _cameras.size() - 1) + { return nullptr; } - return _cameras[index-1]; + return _cameras[index - 1]; } - } // namespace thermion diff --git a/thermion_dart/native/src/TGizmo.cpp b/thermion_dart/native/src/TGizmo.cpp index d1c080b6..331474c8 100644 --- a/thermion_dart/native/src/TGizmo.cpp +++ b/thermion_dart/native/src/TGizmo.cpp @@ -14,15 +14,6 @@ extern "C" using namespace filament; #endif - EMSCRIPTEN_KEEPALIVE TGizmo* Gizmo_new(TEngine *tEngine, TView *tView, TScene *tScene) - { - auto *view = reinterpret_cast(tView); - auto *engine = reinterpret_cast(tEngine); - auto *scene = reinterpret_cast(tScene); - auto gizmo = new Gizmo(engine, view, scene); - return reinterpret_cast(gizmo); - } - EMSCRIPTEN_KEEPALIVE void Gizmo_pick(TGizmo *tGizmo, uint32_t x, uint32_t y, GizmoPickCallback callback) { auto *gizmo = reinterpret_cast(tGizmo); diff --git a/thermion_dart/native/src/ThermionDartApi.cpp b/thermion_dart/native/src/ThermionDartApi.cpp index 671cf7e5..dbc4a781 100644 --- a/thermion_dart/native/src/ThermionDartApi.cpp +++ b/thermion_dart/native/src/ThermionDartApi.cpp @@ -173,6 +173,14 @@ extern "C" return ((SceneManager *)sceneManager)->loadGlb(assetPath, numInstances, keepData); } + EMSCRIPTEN_KEEPALIVE TGizmo* SceneManager_createGizmo(TSceneManager *tSceneManager, TView *tView, TScene *tScene) { + auto sceneManager = reinterpret_cast(tSceneManager); + auto *scene = reinterpret_cast(tScene); + auto *view = reinterpret_cast(tView); + auto gizmo = sceneManager->createGizmo(view, scene); + return reinterpret_cast(gizmo); + } + EMSCRIPTEN_KEEPALIVE EntityId SceneManager_loadGlbFromBuffer(TSceneManager *sceneManager, const uint8_t *const data, size_t length, bool keepData, int priority, int layer, bool loadResourcesAsync) { return ((SceneManager *)sceneManager)->loadGlbFromBuffer((const uint8_t *)data, length, 1, keepData, priority, layer, loadResourcesAsync); @@ -1026,6 +1034,12 @@ extern "C" return reinterpret_cast(instance); } + EMSCRIPTEN_KEEPALIVE TMaterialInstance *SceneManager_createUnlitFixedSizeMaterialInstance(TSceneManager *sceneManager) + { + auto *instance = ((SceneManager *)sceneManager)->createUnlitFixedSizeMaterialInstance(); + return reinterpret_cast(instance); + } + EMSCRIPTEN_KEEPALIVE void destroy_material_instance(TSceneManager *sceneManager, TMaterialInstance *instance) { ((SceneManager *)sceneManager)->destroy(reinterpret_cast(instance)); @@ -1047,6 +1061,10 @@ extern "C" reinterpret_cast(materialInstance)->setParameter(propertyName, data); } + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat(TMaterialInstance *materialInstance, const char *propertyName, double value) + { + reinterpret_cast(materialInstance)->setParameter(propertyName, static_cast(value)); + } EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *tEngine, EntityId entityId) { diff --git a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp index 67f93267..dfdeb534 100644 --- a/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/ThermionDartRenderThreadApi.cpp @@ -371,6 +371,16 @@ extern "C" auto fut = _rl->add_task(lambda); } + EMSCRIPTEN_KEEPALIVE void SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread(TSceneManager *sceneManager, void (*callback)(TMaterialInstance*)) { + std::packaged_task lambda( + [=]() mutable + { + auto instance = SceneManager_createUnlitFixedSizeMaterialInstance(sceneManager); + callback(instance); + }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void SceneManager_loadGlbFromBufferRenderThread(TSceneManager *sceneManager, const uint8_t *const data, size_t length, diff --git a/thermion_dart/native/web/CMakeLists.txt b/thermion_dart/native/web/CMakeLists.txt index 8ff7af04..d05b9249 100644 --- a/thermion_dart/native/web/CMakeLists.txt +++ b/thermion_dart/native/web/CMakeLists.txt @@ -62,7 +62,7 @@ add_executable(${MODULE_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/../src/camutils/Manipulator.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../src/camutils/Bookmark.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/../include/material/image.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../include/material/gizmo.c" + "${CMAKE_CURRENT_SOURCE_DIR}/../include/material/unlit_fixed_size.c" "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/ThermionDartWebApi.cpp" ) set_target_properties(${MODULE_NAME} PROPERTIES diff --git a/thermion_dart/test/material_tests.dart b/thermion_dart/test/material_tests.dart index 5c7acc25..ffc49a0f 100644 --- a/thermion_dart/test/material_tests.dart +++ b/thermion_dart/test/material_tests.dart @@ -31,6 +31,29 @@ void main() async { await viewer.dispose(); }); + test('unlit fixed size material', () async { + var viewer = await testHelper.createViewer(); + await viewer.setCameraPosition(0, 0, 6); + await viewer.setBackgroundColor(1.0, 0.0, 0.0, 1.0); + await viewer.setPostProcessing(true); + await viewer.setToneMapping(ToneMapper.LINEAR); + + var materialInstance = await viewer.createUnlitFixedSizeMaterialInstance(); + var cube = await viewer.createGeometry(GeometryHelper.cube(), + materialInstance: materialInstance); + + await viewer.setMaterialPropertyFloat4( + cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 1.0); + + await testHelper.capture(viewer, "unlit_fixed_size_default_scale"); + + await materialInstance.setParameterFloat("scale", 10.0); + + await testHelper.capture(viewer, "unlit_fixed_size_scale_10"); + + await viewer.dispose(); + }); + test('apply texture to custom ubershader material instance', () async { var viewer = await testHelper.createViewer(); await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); From 08c02c15901ba7031a396a2be2b5e2e565146ea2 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 31 Oct 2024 22:41:06 +0800 Subject: [PATCH 11/14] chore(release): publish packages - thermion_dart@0.2.1-dev.0.0.16 - thermion_flutter@0.2.1-dev.16 - thermion_flutter_web@0.2.0+7 - thermion_flutter_platform_interface@0.2.1-dev.16 - thermion_flutter_ffi@0.2.1-dev.16 --- CHANGELOG.md | 34 +++++++++++++++++++ thermion_dart/CHANGELOG.md | 4 +++ thermion_dart/pubspec.yaml | 2 +- .../thermion_flutter/CHANGELOG.md | 4 +++ .../thermion_flutter/pubspec.yaml | 10 +++--- .../thermion_flutter_ffi/CHANGELOG.md | 4 +++ .../thermion_flutter_ffi/pubspec.yaml | 6 ++-- .../CHANGELOG.md | 4 +++ .../pubspec.yaml | 4 +-- .../thermion_flutter_web/CHANGELOG.md | 4 +++ .../thermion_flutter_web/pubspec.yaml | 6 ++-- 11 files changed, 68 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae31d923..6d0b0e97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,40 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 2024-10-31 + +### Changes + +--- + +Packages with breaking changes: + + - There are no breaking changes in this release. + +Packages with other changes: + + - [`thermion_dart` - `v0.2.1-dev.0.0.16`](#thermion_dart---v021-dev0016) + - [`thermion_flutter` - `v0.2.1-dev.16`](#thermion_flutter---v021-dev16) + - [`thermion_flutter_web` - `v0.2.0+7`](#thermion_flutter_web---v0207) + - [`thermion_flutter_platform_interface` - `v0.2.1-dev.16`](#thermion_flutter_platform_interface---v021-dev16) + - [`thermion_flutter_ffi` - `v0.2.1-dev.16`](#thermion_flutter_ffi---v021-dev16) + +Packages with dependency updates only: + +> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project. + + - `thermion_flutter` - `v0.2.1-dev.16` + - `thermion_flutter_web` - `v0.2.0+7` + - `thermion_flutter_platform_interface` - `v0.2.1-dev.16` + - `thermion_flutter_ffi` - `v0.2.1-dev.16` + +--- + +#### `thermion_dart` - `v0.2.1-dev.0.0.16` + + - **FEAT**: Rename Gizmo material to UnlitFixedSize, and expose methods for using this material on other entities. Also exposes new methods for setting single float parameters. + + ## 2024-10-31 ### Changes diff --git a/thermion_dart/CHANGELOG.md b/thermion_dart/CHANGELOG.md index 5e0997e8..2be2c159 100644 --- a/thermion_dart/CHANGELOG.md +++ b/thermion_dart/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.0.0.16 + + - **FEAT**: Rename Gizmo material to UnlitFixedSize, and expose methods for using this material on other entities. Also exposes new methods for setting single float parameters. + ## 0.2.1-dev.0.0.15 - **FIX**: remove superfluous ceil() calls for picking coordinates. diff --git a/thermion_dart/pubspec.yaml b/thermion_dart/pubspec.yaml index 880add89..262a59d1 100644 --- a/thermion_dart/pubspec.yaml +++ b/thermion_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_dart description: 3D rendering toolkit for Dart. -version: 0.2.1-dev.0.0.15 +version: 0.2.1-dev.0.0.16 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion diff --git a/thermion_flutter/thermion_flutter/CHANGELOG.md b/thermion_flutter/thermion_flutter/CHANGELOG.md index ad15928e..160abd1b 100644 --- a/thermion_flutter/thermion_flutter/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.16 + + - Update a dependency to the latest release. + ## 0.2.1-dev.15 - **FIX**: multiply coordinates by pixelRatio for scale events. diff --git a/thermion_flutter/thermion_flutter/pubspec.yaml b/thermion_flutter/thermion_flutter/pubspec.yaml index 90936561..d224ac06 100644 --- a/thermion_flutter/thermion_flutter/pubspec.yaml +++ b/thermion_flutter/thermion_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: thermion_flutter description: Flutter plugin for 3D rendering with the Thermion toolkit. -version: 0.2.1-dev.15 +version: 0.2.1-dev.16 homepage: https://thermion.dev repository: https://github.com/nmfisher/thermion @@ -17,10 +17,10 @@ dependencies: plugin_platform_interface: ^2.0.0 ffi: ^2.1.2 animation_tools_dart: ^0.1.0 - thermion_dart: ^0.2.1-dev.0.0.15 - thermion_flutter_platform_interface: ^0.2.1-dev.15 - thermion_flutter_ffi: ^0.2.1-dev.15 - thermion_flutter_web: ^0.2.0+6 + thermion_dart: ^0.2.1-dev.0.0.16 + thermion_flutter_platform_interface: ^0.2.1-dev.16 + thermion_flutter_ffi: ^0.2.1-dev.16 + thermion_flutter_web: ^0.2.0+7 logging: ^1.2.0 web: ^1.0.0 diff --git a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md index a2d4472a..259a0b1c 100644 --- a/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_ffi/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.16 + + - Update a dependency to the latest release. + ## 0.2.1-dev.15 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml index bc5b7b6a..386f3f18 100644 --- a/thermion_flutter/thermion_flutter_ffi/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_ffi/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_ffi description: An FFI implementation for thermion_flutter (i.e. all platforms except web). repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.15 +version: 0.2.1-dev.16 environment: sdk: ">=3.3.0 <4.0.0" @@ -23,8 +23,8 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_flutter_platform_interface: ^0.2.1-dev.15 - thermion_dart: ^0.2.1-dev.0.0.15 + thermion_flutter_platform_interface: ^0.2.1-dev.16 + thermion_dart: ^0.2.1-dev.0.0.16 logging: ^1.2.0 dev_dependencies: diff --git a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md index 419f57ee..3d41a985 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1-dev.16 + + - Update a dependency to the latest release. + ## 0.2.1-dev.15 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml index 04508581..56015549 100644 --- a/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_platform_interface/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_platform_interface description: A common platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.1-dev.15 +version: 0.2.1-dev.16 environment: sdk: ">=3.3.0 <4.0.0" @@ -11,7 +11,7 @@ dependencies: flutter: sdk: flutter plugin_platform_interface: ^2.1.0 - thermion_dart: ^0.2.1-dev.0.0.15 + thermion_dart: ^0.2.1-dev.0.0.16 dev_dependencies: flutter_test: diff --git a/thermion_flutter/thermion_flutter_web/CHANGELOG.md b/thermion_flutter/thermion_flutter_web/CHANGELOG.md index 737a3fd9..dcae3918 100644 --- a/thermion_flutter/thermion_flutter_web/CHANGELOG.md +++ b/thermion_flutter/thermion_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.0+7 + + - Update a dependency to the latest release. + ## 0.2.0+6 - Update a dependency to the latest release. diff --git a/thermion_flutter/thermion_flutter_web/pubspec.yaml b/thermion_flutter/thermion_flutter_web/pubspec.yaml index 116824e1..86811f06 100644 --- a/thermion_flutter/thermion_flutter_web/pubspec.yaml +++ b/thermion_flutter/thermion_flutter_web/pubspec.yaml @@ -1,7 +1,7 @@ name: thermion_flutter_web description: A web platform interface for the thermion_flutter plugin. repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter -version: 0.2.0+6 +version: 0.2.0+7 environment: sdk: ">=3.3.0 <4.0.0" @@ -20,8 +20,8 @@ dependencies: sdk: flutter plugin_platform_interface: ^2.1.0 web: ^1.0.0 - thermion_dart: ^0.2.1-dev.0.0.15 - thermion_flutter_platform_interface: ^0.2.1-dev.15 + thermion_dart: ^0.2.1-dev.0.0.16 + thermion_flutter_platform_interface: ^0.2.1-dev.16 flutter_web_plugins: sdk: flutter From 902f67e97d1deec578042759555ce7bb9ffbce77 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 2 Nov 2024 10:13:33 +0800 Subject: [PATCH 12/14] expose setParameterInt/setParameterFloat4, rename to getScreenSpaceBoundingBox, and expose method for getting renderable bounding box --- .../viewer/src/ffi/src/thermion_dart.g.dart | 47 +++++++++++++++++++ .../native/include/APIBoundaryTypes.h | 11 +++++ .../native/include/ThermionDartApi.h | 3 ++ thermion_dart/native/src/ThermionDartApi.cpp | 22 +++++++-- 4 files changed, 80 insertions(+), 3 deletions(-) diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart index da0e9990..f0afabe2 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_dart.g.dart @@ -1052,6 +1052,12 @@ external void set_priority( int priority, ); +@ffi.Native, EntityId)>(isLeaf: true) +external Aabb3 SceneManager_getRenderableBoundingBox( + ffi.Pointer sceneManager, + int entity, +); + @ffi.Native< Aabb2 Function( ffi.Pointer, ffi.Pointer, EntityId)>(isLeaf: true) @@ -1213,6 +1219,18 @@ external void MaterialInstance_setDepthCulling( bool enabled, ); +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double, ffi.Double, ffi.Double, ffi.Double)>(isLeaf: true) +external void MaterialInstance_setParameterFloat4( + ffi.Pointer materialInstance, + ffi.Pointer name, + double x, + double y, + double w, + double z, +); + @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Double, ffi.Double)>(isLeaf: true) @@ -1232,6 +1250,15 @@ external void MaterialInstance_setParameterFloat( double value, ); +@ffi.Native< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int)>(isLeaf: true) +external void MaterialInstance_setParameterInt( + ffi.Pointer materialInstance, + ffi.Pointer name, + int value, +); + @ffi.Native)>(isLeaf: true) external TViewport View_getViewport( ffi.Pointer view, @@ -2276,6 +2303,26 @@ final class Aabb2 extends ffi.Struct { external double maxY; } +final class Aabb3 extends ffi.Struct { + @ffi.Float() + external double centerX; + + @ffi.Float() + external double centerY; + + @ffi.Float() + external double centerZ; + + @ffi.Float() + external double halfExtentX; + + @ffi.Float() + external double halfExtentY; + + @ffi.Float() + external double halfExtentZ; +} + final class ResourceBuffer extends ffi.Struct { external ffi.Pointer data; diff --git a/thermion_dart/native/include/APIBoundaryTypes.h b/thermion_dart/native/include/APIBoundaryTypes.h index cf022b63..ee780947 100644 --- a/thermion_dart/native/include/APIBoundaryTypes.h +++ b/thermion_dart/native/include/APIBoundaryTypes.h @@ -105,6 +105,17 @@ extern "C" typedef struct Aabb2 Aabb2; + struct Aabb3 { + float centerX; + float centerY; + float centerZ; + float halfExtentX; + float halfExtentY; + float halfExtentZ; + }; + + typedef struct Aabb3 Aabb3; + #ifdef __cplusplus } #endif \ No newline at end of file diff --git a/thermion_dart/native/include/ThermionDartApi.h b/thermion_dart/native/include/ThermionDartApi.h index 76861947..6e188f78 100644 --- a/thermion_dart/native/include/ThermionDartApi.h +++ b/thermion_dart/native/include/ThermionDartApi.h @@ -277,6 +277,7 @@ extern "C" EMSCRIPTEN_KEEPALIVE void test_collisions(TSceneManager *sceneManager, EntityId entity); EMSCRIPTEN_KEEPALIVE void set_priority(TSceneManager *sceneManager, EntityId entityId, int priority); + EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *sceneManager, EntityId entity); EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(TSceneManager *sceneManager, TView *view, EntityId entity); EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(TSceneManager *sceneManager, TView *view, EntityId entity, float *minX, float *minY, float *maxX, float *maxY); @@ -296,8 +297,10 @@ extern "C" EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthWrite(TMaterialInstance* materialInstance, bool enabled); EMSCRIPTEN_KEEPALIVE void MaterialInstance_setDepthCulling(TMaterialInstance* materialInstance, bool enabled); + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat4(TMaterialInstance* materialInstance, const char* name, double x, double y, double w, double z); EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat2(TMaterialInstance* materialInstance, const char* name, double x, double y); EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat(TMaterialInstance* materialInstance, const char* name, double value); + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterInt(TMaterialInstance* materialInstance, const char* name, int value); #ifdef __cplusplus diff --git a/thermion_dart/native/src/ThermionDartApi.cpp b/thermion_dart/native/src/ThermionDartApi.cpp index dbc4a781..d0fdf1f3 100644 --- a/thermion_dart/native/src/ThermionDartApi.cpp +++ b/thermion_dart/native/src/ThermionDartApi.cpp @@ -876,7 +876,7 @@ extern "C" TMaterialInstance *materialInstance, bool keepData) { - return ((SceneManager *)sceneManager)->createGeometry(vertices, (uint32_t)numVertices, normals, (uint32_t)numNormals, uvs, numUvs, indices, numIndices, (filament::RenderableManager::PrimitiveType)primitiveType, reinterpret_cast(materialInstance), keepData); + return ((SceneManager *)sceneManager)->createGeometry(vertices, static_cast(numVertices), normals, static_cast(numNormals), uvs, static_cast(numUvs), indices, static_cast(numIndices), (filament::RenderableManager::PrimitiveType)primitiveType, reinterpret_cast(materialInstance), keepData); } EMSCRIPTEN_KEEPALIVE EntityId find_child_entity_by_name(TSceneManager *sceneManager, const EntityId parent, const char *name) @@ -910,17 +910,22 @@ extern "C" ((SceneManager *)sceneManager)->setPriority(entity, priority); } + EMSCRIPTEN_KEEPALIVE Aabb3 SceneManager_getRenderableBoundingBox(TSceneManager *tSceneManager, EntityId entity) { + auto sceneManager = reinterpret_cast(tSceneManager); + return sceneManager->getRenderableBoundingBox(entity); + } + EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(TSceneManager *sceneManager, TView *tView, EntityId entity) { auto view = reinterpret_cast(tView); - return ((SceneManager *)sceneManager)->getBoundingBox(view, entity); + return ((SceneManager *)sceneManager)->getScreenSpaceBoundingBox(view, entity); } EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(TSceneManager *sceneManager, TView *tView, EntityId entity, float *minX, float *minY, float *maxX, float *maxY) { auto view = reinterpret_cast(tView); - auto box = ((SceneManager *)sceneManager)->getBoundingBox(view, entity); + auto box = ((SceneManager *)sceneManager)->getScreenSpaceBoundingBox(view, entity); *minX = box.minX; *minY = box.minY; *maxX = box.maxX; @@ -1055,6 +1060,12 @@ extern "C" reinterpret_cast(materialInstance)->setDepthCulling(enabled); } + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat4(TMaterialInstance *materialInstance, const char *propertyName, double x, double y, double w, double z) + { + filament::math::float4 data{static_cast(x), static_cast(y), static_cast(z), static_cast(w)}; + reinterpret_cast(materialInstance)->setParameter(propertyName, data); + } + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterFloat2(TMaterialInstance *materialInstance, const char *propertyName, double x, double y) { filament::math::float2 data{static_cast(x), static_cast(y)}; @@ -1066,6 +1077,11 @@ extern "C" reinterpret_cast(materialInstance)->setParameter(propertyName, static_cast(value)); } + EMSCRIPTEN_KEEPALIVE void MaterialInstance_setParameterInt(TMaterialInstance *materialInstance, const char *propertyName, int value) + { + reinterpret_cast(materialInstance)->setParameter(propertyName, value); + } + EMSCRIPTEN_KEEPALIVE TCamera *Engine_getCameraComponent(TEngine *tEngine, EntityId entityId) { auto *engine = reinterpret_cast(tEngine); From 124938dbc2cfeb310b55bf9c576bd8907772887a Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 2 Nov 2024 10:17:18 +0800 Subject: [PATCH 13/14] temporarily disable UnprojectTexture --- .../native/include/CustomGeometry.hpp | 20 +- thermion_dart/native/include/SceneManager.hpp | 14 +- thermion_dart/native/src/CustomGeometry.cpp | 388 ++++++++++-------- thermion_dart/native/src/FilamentViewer.cpp | 10 +- thermion_dart/native/src/HighlightOverlay.cpp | 14 +- thermion_dart/native/src/SceneManager.cpp | 60 ++- thermion_dart/native/src/UnprojectTexture.cpp | 240 +++++------ 7 files changed, 396 insertions(+), 350 deletions(-) diff --git a/thermion_dart/native/include/CustomGeometry.hpp b/thermion_dart/native/include/CustomGeometry.hpp index a3348b43..6f34110f 100644 --- a/thermion_dart/native/include/CustomGeometry.hpp +++ b/thermion_dart/native/include/CustomGeometry.hpp @@ -3,13 +3,16 @@ #include #include +#include #include #include #include #include #include #include -#include + +#include +#include namespace thermion { @@ -32,9 +35,13 @@ public: Engine* engine); ~CustomGeometry(); - VertexBuffer* vertexBuffer() const; - IndexBuffer* indexBuffer() const; - Box getBoundingBox() const; + utils::Entity createInstance(MaterialInstance *materialInstance); + +private: + Engine* _engine; + + VertexBuffer* vertexBuffer; + IndexBuffer* indexBuffer; float* vertices = nullptr; float* normals = nullptr; @@ -45,11 +52,6 @@ public: Box boundingBox; RenderableManager::PrimitiveType primitiveType; -private: - Engine* _engine; - bool _vertexBufferFreed = false; - bool _indexBufferFreed = false; - void computeBoundingBox(); }; diff --git a/thermion_dart/native/include/SceneManager.hpp b/thermion_dart/native/include/SceneManager.hpp index 25f66074..55306160 100644 --- a/thermion_dart/native/include/SceneManager.hpp +++ b/thermion_dart/native/include/SceneManager.hpp @@ -230,7 +230,12 @@ namespace thermion /// @param out a pointer large enough to store four floats (the min/max coordinates of the bounding box) /// @return /// - Aabb2 getBoundingBox(View* view, EntityId entity); + Aabb2 getScreenSpaceBoundingBox(View* view, EntityId entity); + + /// @brief returns the 3D bounding box of the renderable instance for the given entity. + /// @return the bounding box + /// + Aabb3 getRenderableBoundingBox(EntityId entity); /// /// Creates an entity with the specified geometry/material/normals and adds to the scene. @@ -256,11 +261,15 @@ namespace thermion return _unlitMaterialProvider; } + bool isGeometryInstance(EntityId entity) { + return std::find(_geometryInstances.begin(), _geometryInstances.end(), entity) != _geometryInstances.end(); + } + bool isGeometryEntity(EntityId entity) { return _geometry.find(entity) != _geometry.end(); } - const CustomGeometry* const getGeometry(EntityId entityId) { + CustomGeometry* const getGeometry(EntityId entityId) { return _geometry[entityId].get(); } @@ -336,6 +345,7 @@ namespace thermion _instances; tsl::robin_map _assets; tsl::robin_map> _geometry; + std::vector _geometryInstances; tsl::robin_map> _highlighted; tsl::robin_map _transformUpdates; std::set _textures; diff --git a/thermion_dart/native/src/CustomGeometry.cpp b/thermion_dart/native/src/CustomGeometry.cpp index c104866b..c1e49adb 100644 --- a/thermion_dart/native/src/CustomGeometry.cpp +++ b/thermion_dart/native/src/CustomGeometry.cpp @@ -1,4 +1,7 @@ #include "math.h" + +#include + #include #include #include @@ -6,207 +9,232 @@ #include #include #include -#include #include "CustomGeometry.hpp" #include "Log.hpp" +namespace thermion +{ -namespace thermion { + using namespace filament; -using namespace filament; + CustomGeometry::CustomGeometry(float *vertices, uint32_t numVertices, + float *normals, uint32_t numNormals, float *uvs, + uint32_t numUvs, uint16_t *indices, + uint32_t numIndices, + RenderableManager::PrimitiveType primitiveType, + Engine *engine) + : numVertices(numVertices), numIndices(numIndices), _engine(engine) + { -CustomGeometry::CustomGeometry(float *vertices, uint32_t numVertices, - float *normals, uint32_t numNormals, float *uvs, - uint32_t numUvs, uint16_t *indices, - uint32_t numIndices, - RenderableManager::PrimitiveType primitiveType, - Engine *engine) - : numVertices(numVertices), numIndices(numIndices), _engine(engine) { - this->primitiveType = primitiveType; - this->vertices = new float[numVertices]; - std::memcpy(this->vertices, vertices, numVertices * sizeof(float)); + this->primitiveType = primitiveType; + this->vertices = new float[numVertices]; - if (numNormals > 0) { - this->normals = new float[numNormals]; - std::memcpy(this->normals, normals, numNormals * sizeof(float)); - } + std::memcpy(this->vertices, vertices, numVertices * sizeof(float)); - if (numUvs > 0) { - this->uvs = new float[numUvs]; - std::memcpy(this->uvs, uvs, numUvs * sizeof(float)); - } else { - this->uvs = nullptr; - } - - this->indices = new uint16_t[numIndices]; - std::memcpy(this->indices, indices, numIndices * sizeof(uint16_t)); - - computeBoundingBox(); -} - -IndexBuffer *CustomGeometry::indexBuffer() const { - IndexBuffer::BufferDescriptor::Callback indexCallback = [](void *buf, size_t, - void *data) { - // free((void *)buf); - }; - - auto indexBuffer = IndexBuffer::Builder() - .indexCount(numIndices) - .bufferType(IndexBuffer::IndexType::USHORT) - .build(*_engine); - - indexBuffer->setBuffer(*_engine, - IndexBuffer::BufferDescriptor( - this->indices, - indexBuffer->getIndexCount() * sizeof(uint16_t), - indexCallback)); - return indexBuffer; -} - -VertexBuffer *CustomGeometry::vertexBuffer() const { - VertexBuffer::BufferDescriptor::Callback vertexCallback = - [](void *buf, size_t, void *data) { - // free((void *)buf); - }; - - // Use provided UVs or create dummy UV data - std::vector *uvData; - if (this->uvs != nullptr) { - uvData = new std::vector( - (filament::math::float2 *)this->uvs, - (filament::math::float2 *)(this->uvs + numVertices * 2)); - } else { - uvData = new std::vector( - numVertices, filament::math::float2{0.0f, 0.0f}); - } - - // Create dummy vertex color data (white color for all vertices) - auto dummyColors = new std::vector( - numVertices, filament::math::float4{1.0f, 1.0f, 1.0f, 1.0f}); - - auto vertexBufferBuilder = - VertexBuffer::Builder() - .vertexCount(numVertices) - .attribute(VertexAttribute::POSITION, 0, - VertexBuffer::AttributeType::FLOAT3) - .attribute(VertexAttribute::UV0, 1, - VertexBuffer::AttributeType::FLOAT2) - .attribute(VertexAttribute::UV1, 2, - VertexBuffer::AttributeType::FLOAT2) - .attribute(VertexAttribute::COLOR, 3, - VertexBuffer::AttributeType::FLOAT4); - - if (this->normals) { - vertexBufferBuilder.bufferCount(5).attribute( - VertexAttribute::TANGENTS, 4, - filament::VertexBuffer::AttributeType::FLOAT4); - } else { - vertexBufferBuilder = vertexBufferBuilder.bufferCount(4); - } - auto vertexBuffer = vertexBufferBuilder.build(*_engine); - - vertexBuffer->setBufferAt( - *_engine, 0, - VertexBuffer::BufferDescriptor( - this->vertices, vertexBuffer->getVertexCount() * sizeof(math::float3), - vertexCallback)); - - // Set UV0 buffer - vertexBuffer->setBufferAt( - *_engine, 1, - VertexBuffer::BufferDescriptor( - uvData->data(), uvData->size() * sizeof(math::float2), - [](void *buf, size_t, void *data) { - delete static_cast *>(data); - }, - uvData)); - - // Set UV1 buffer (reusing UV0 data) - vertexBuffer->setBufferAt(*_engine, 2, - VertexBuffer::BufferDescriptor( - uvData->data(), - uvData->size() * sizeof(math::float2), - [](void *buf, size_t, void *data) { - // Do nothing here, as we're reusing the same - // data as UV0 - }, - nullptr)); - - // Set vertex color buffer - vertexBuffer->setBufferAt( - *_engine, 3, - VertexBuffer::BufferDescriptor( - dummyColors->data(), dummyColors->size() * sizeof(math::float4), - [](void *buf, size_t, void *data) { - delete static_cast *>(data); - }, - dummyColors)); - - if (this->normals) { - - assert(this->primitiveType == RenderableManager::PrimitiveType::TRIANGLES); - std::vector triangles; - for (int i = 0; i < numIndices; i += 3) { - filament::math::ushort3 triangle; - triangle.x = this->indices[i]; - triangle.y = this->indices[i + 1]; - triangle.z = this->indices[i + 2]; - triangles.push_back(triangle); + if (numNormals > 0) + { + this->normals = new float[numNormals]; + std::memcpy(this->normals, normals, numNormals * sizeof(float)); } - // Create a SurfaceOrientation builder - geometry::SurfaceOrientation::Builder builder; - builder.vertexCount(numVertices) - .normals((filament::math::float3 *)normals) - .positions((filament::math::float3 *)this->vertices) - .triangleCount(triangles.size()) - .triangles(triangles.data()); + if (numUvs > 0) + { + this->uvs = new float[numUvs]; + std::memcpy(this->uvs, uvs, numUvs * sizeof(float)); + } + else + { + this->uvs = nullptr; + } - // Build the SurfaceOrientation object - auto orientation = builder.build(); + this->indices = new uint16_t[numIndices]; - // Retrieve the quaternions - auto quats = new std::vector(numVertices); - orientation->getQuats(quats->data(), numVertices); + std::memcpy(this->indices, indices, numIndices * sizeof(uint16_t)); - vertexBuffer->setBufferAt(*_engine, 4, + computeBoundingBox(); + + indexBuffer = IndexBuffer::Builder() + .indexCount(numIndices) + .bufferType(IndexBuffer::IndexType::USHORT) + .build(*_engine); + + indexBuffer->setBuffer(*_engine, + IndexBuffer::BufferDescriptor( + this->indices, + indexBuffer->getIndexCount() * sizeof(uint16_t), + [](void *buf, size_t, + void *data) + { + free((void *)buf); + })); + + std::vector *uvData; + if (this->uvs != nullptr) + { + uvData = new std::vector( + (filament::math::float2 *)this->uvs, + (filament::math::float2 *)(this->uvs + numVertices * 2)); + } + else + { + uvData = new std::vector( + numVertices, filament::math::float2{0.0f, 0.0f}); + } + + // Create dummy vertex color data (white color for all vertices) + auto dummyColors = new std::vector( + numVertices, filament::math::float4{1.0f, 1.0f, 1.0f, 1.0f}); + + auto vertexBufferBuilder = + VertexBuffer::Builder() + .vertexCount(numVertices) + .attribute(VertexAttribute::POSITION, 0, + VertexBuffer::AttributeType::FLOAT3) + .attribute(VertexAttribute::UV0, 1, + VertexBuffer::AttributeType::FLOAT2) + .attribute(VertexAttribute::UV1, 2, + VertexBuffer::AttributeType::FLOAT2) + .attribute(VertexAttribute::COLOR, 3, + VertexBuffer::AttributeType::FLOAT4); + + if (this->normals) + { + vertexBufferBuilder.bufferCount(5).attribute( + VertexAttribute::TANGENTS, 4, + filament::VertexBuffer::AttributeType::FLOAT4); + } + else + { + vertexBufferBuilder = vertexBufferBuilder.bufferCount(4); + } + + vertexBuffer = vertexBufferBuilder.build(*_engine); + + vertexBuffer->setBufferAt( + *_engine, 0, + VertexBuffer::BufferDescriptor( + this->vertices, numVertices * sizeof(math::float3), + [](void *buf, size_t, void *data) + { + free((void *)buf); + })); + + // Set UV0 buffer + vertexBuffer->setBufferAt( + *_engine, 1, + VertexBuffer::BufferDescriptor( + uvData->data(), uvData->size() * sizeof(math::float2), + [](void *buf, size_t, void *data) + { + delete static_cast *>(data); + }, + uvData)); + + // Set UV1 buffer (reusing UV0 data) + vertexBuffer->setBufferAt(*_engine, 2, VertexBuffer::BufferDescriptor( - quats->data(), - quats->size() * sizeof(math::quatf), - [](void *buf, size_t, void *data) { - delete (std::vector *)data; + uvData->data(), + uvData->size() * sizeof(math::float2), + [](void *buf, size_t, void *data) + { + // Do nothing here, as we're reusing the same + // data as UV0 }, - (void *)quats)); - } - return vertexBuffer; -} + nullptr)); -CustomGeometry::~CustomGeometry() { - delete[] vertices; - delete[] indices; - if (normals) - delete[] normals; - if (uvs) - delete[] uvs; -} + // Set vertex color buffer + vertexBuffer->setBufferAt( + *_engine, 3, + VertexBuffer::BufferDescriptor( + dummyColors->data(), dummyColors->size() * sizeof(math::float4), + [](void *buf, size_t, void *data) + { + delete static_cast *>(data); + }, + dummyColors)); -void CustomGeometry::computeBoundingBox() { - float minX = FLT_MAX, minY = FLT_MAX, minZ = FLT_MAX; - float maxX = -FLT_MAX, maxY = -FLT_MAX, maxZ = -FLT_MAX; + if (this->normals) + { - for (uint32_t i = 0; i < numVertices; i += 3) { - minX = std::min(vertices[i], minX); - minY = std::min(vertices[i + 1], minY); - minZ = std::min(vertices[i + 2], minZ); - maxX = std::max(vertices[i], maxX); - maxY = std::max(vertices[i + 1], maxY); - maxZ = std::max(vertices[i + 2], maxZ); + assert(this->primitiveType == RenderableManager::PrimitiveType::TRIANGLES); + std::vector triangles; + for (int i = 0; i < numIndices; i += 3) + { + filament::math::ushort3 triangle; + triangle.x = this->indices[i]; + triangle.y = this->indices[i + 1]; + triangle.z = this->indices[i + 2]; + triangles.push_back(triangle); + } + + // Create a SurfaceOrientation builder + geometry::SurfaceOrientation::Builder builder; + builder.vertexCount(numVertices) + .normals((filament::math::float3 *)normals) + .positions((filament::math::float3 *)this->vertices) + .triangleCount(triangles.size()) + .triangles(triangles.data()); + + // Build the SurfaceOrientation object + auto orientation = builder.build(); + + // Retrieve the quaternions + auto quats = new std::vector(numVertices); + orientation->getQuats(quats->data(), numVertices); + + vertexBuffer->setBufferAt(*_engine, 4, + VertexBuffer::BufferDescriptor( + quats->data(), + quats->size() * sizeof(math::quatf), + [](void *buf, size_t, void *data) + { + delete (std::vector *)data; + }, + (void *)quats)); + } } - boundingBox = Box{{minX, minY, minZ}, {maxX, maxY, maxZ}}; -} + utils::Entity CustomGeometry::createInstance(MaterialInstance *materialInstance) { + auto entity = utils::EntityManager::get().create(); + RenderableManager::Builder builder(1); -Box CustomGeometry::getBoundingBox() const { return boundingBox; } + builder.boundingBox(boundingBox) + .geometry(0, primitiveType, vertexBuffer, indexBuffer, 0, numIndices) + .culling(true) + .receiveShadows(true) + .castShadows(true); + + builder.material(0, materialInstance); + builder.build(*_engine, entity); + + return entity; + + } + + CustomGeometry::~CustomGeometry() + { + Log("GEOMETRY DESTRUCTOR"); + _engine->destroy(vertexBuffer); + _engine->destroy(indexBuffer); + } + + void CustomGeometry::computeBoundingBox() + { + float minX = FLT_MAX, minY = FLT_MAX, minZ = FLT_MAX; + float maxX = -FLT_MAX, maxY = -FLT_MAX, maxZ = -FLT_MAX; + + for (uint32_t i = 0; i < numVertices; i += 3) + { + minX = std::min(vertices[i], minX); + minY = std::min(vertices[i + 1], minY); + minZ = std::min(vertices[i + 2], minZ); + maxX = std::max(vertices[i], maxX); + maxY = std::max(vertices[i + 1], maxY); + maxZ = std::max(vertices[i + 2], maxZ); + } + + boundingBox = Box{{minX, minY, minZ}, {maxX, maxY, maxZ}}; + } } // namespace thermion \ No newline at end of file diff --git a/thermion_dart/native/src/FilamentViewer.cpp b/thermion_dart/native/src/FilamentViewer.cpp index 2235a1b7..22e138d5 100644 --- a/thermion_dart/native/src/FilamentViewer.cpp +++ b/thermion_dart/native/src/FilamentViewer.cpp @@ -1206,11 +1206,11 @@ namespace thermion void FilamentViewer::unprojectTexture(EntityId entityId, uint8_t *input, uint32_t inputWidth, uint32_t inputHeight, uint8_t *out, uint32_t outWidth, uint32_t outHeight) { const auto *geometry = _sceneManager->getGeometry(entityId); - if (!geometry->uvs) - { - Log("No UVS"); - return; - } + // if (!geometry->uvs) + // { + // Log("No UVS"); + // return; + // } // UnprojectTexture unproject(geometry, _view->getCamera(), _engine); diff --git a/thermion_dart/native/src/HighlightOverlay.cpp b/thermion_dart/native/src/HighlightOverlay.cpp index 95c6498f..918f41df 100644 --- a/thermion_dart/native/src/HighlightOverlay.cpp +++ b/thermion_dart/native/src/HighlightOverlay.cpp @@ -55,8 +55,6 @@ namespace thermion if (_isGeometryEntity) { - Log("Entity %d is geometry", entityId); - auto geometryEntity = Entity::import(entityId); auto renderable = rm.getInstance(geometryEntity); @@ -74,17 +72,7 @@ namespace thermion auto geometry = sceneManager->getGeometry(entityId); - _entity = utils::EntityManager::get().create(); - RenderableManager::Builder builder(1); - builder.boundingBox(geometry->getBoundingBox()) - .geometry(0, geometry->primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, geometry->numIndices) - .culling(true) - .material(0, _highlightMaterialInstance) - .priority(0) - .receiveShadows(false) - .castShadows(false); - - builder.build(*engine, _entity); + _entity = geometry->createInstance(materialInstance); scene->addEntity(_entity); auto outlineTransformInstance = tm.getInstance(_entity); diff --git a/thermion_dart/native/src/SceneManager.cpp b/thermion_dart/native/src/SceneManager.cpp index 3d623027..c4844b58 100644 --- a/thermion_dart/native/src/SceneManager.cpp +++ b/thermion_dart/native/src/SceneManager.cpp @@ -412,6 +412,15 @@ namespace thermion { std::lock_guard lock(_mutex); + if(isGeometryEntity(entityId)) { + auto geometry = getGeometry(entityId); + auto materialInstance = createUnlitMaterialInstance(); + auto instanceEntity = geometry->createInstance(materialInstance); + _scene->addEntity(instanceEntity); + + return Entity::smuggle(instanceEntity); + } + const auto &pos = _assets.find(entityId); if (pos == _assets.end()) { @@ -696,9 +705,19 @@ namespace thermion if (isGeometryEntity(entityId)) { + return; + } else if(isGeometryInstance(entityId)) { + // destroy renderable + auto & rm = _engine->getRenderableManager(); + auto & em = _engine->getEntityManager(); + auto instanceEntity = utils::Entity::import(entityId); + auto it = std::find(_geometryInstances.begin(), _geometryInstances.end(), entityId); + _geometryInstances.erase(it); + rm.destroy(instanceEntity); + em.destroy(instanceEntity); + _engine->destroy(instanceEntity); return; - } - + } const auto *instance = getInstanceByEntityId(entityId); if (instance) @@ -2203,7 +2222,17 @@ namespace thermion rm.setPriority(renderableInstance, priority); } - Aabb2 SceneManager::getBoundingBox(View *view, EntityId entityId) + Aabb3 SceneManager::getRenderableBoundingBox(EntityId entityId) { + auto& rm = _engine->getRenderableManager(); + auto instance = rm.getInstance(Entity::import(entityId)); + if(!instance.isValid()) { + return Aabb3 {}; + } + auto box = rm.getAxisAlignedBoundingBox(instance); + return Aabb3 { box.center.x, box.center.y, box.center.z, box.halfExtent.x, box.halfExtent.y, box.halfExtent.z }; + } + + Aabb2 SceneManager::getScreenSpaceBoundingBox(View *view, EntityId entityId) { const auto &camera = view->getCamera(); const auto &viewport = view->getViewport(); @@ -2316,16 +2345,7 @@ namespace thermion bool keepData) { auto geometry = std::make_unique(vertices, numVertices, normals, numNormals, uvs, numUvs, indices, numIndices, primitiveType, _engine); - - auto entity = utils::EntityManager::get().create(); - RenderableManager::Builder builder(1); - - builder.boundingBox(geometry->getBoundingBox()) - .geometry(0, primitiveType, geometry->vertexBuffer(), geometry->indexBuffer(), 0, numIndices) - .culling(true) - .receiveShadows(true) - .castShadows(true); - + filament::Material *mat = nullptr; if (!materialInstance) @@ -2399,16 +2419,14 @@ namespace thermion } } - builder.material(0, materialInstance); - builder.build(*_engine, entity); + auto instanceEntity = geometry->createInstance(materialInstance); + auto instanceEntityId = Entity::smuggle(instanceEntity); + _scene->addEntity(instanceEntity); + _geometryInstances.push_back(instanceEntityId); - _scene->addEntity(entity); + _geometry.emplace(instanceEntityId, std::move(geometry)); - auto entityId = Entity::smuggle(entity); - - _geometry.emplace(entityId, std::move(geometry)); - - return entityId; + return instanceEntityId; } MaterialInstance *SceneManager::getMaterialInstanceAt(EntityId entityId, int materialIndex) diff --git a/thermion_dart/native/src/UnprojectTexture.cpp b/thermion_dart/native/src/UnprojectTexture.cpp index 8af0e664..a8c7126e 100644 --- a/thermion_dart/native/src/UnprojectTexture.cpp +++ b/thermion_dart/native/src/UnprojectTexture.cpp @@ -57,154 +57,154 @@ namespace thermion uint32_t outputWidth, uint32_t outputHeight) { - auto &rm = _engine->getRenderableManager(); + // auto &rm = _engine->getRenderableManager(); - auto &tm = _engine->getTransformManager(); + // auto &tm = _engine->getTransformManager(); - math::mat4 invViewProj = Camera::inverseProjection(_camera.getProjectionMatrix()) * _camera.getModelMatrix(); + // math::mat4 invViewProj = Camera::inverseProjection(_camera.getProjectionMatrix()) * _camera.getModelMatrix(); - auto ti = tm.getInstance(entity); - math::mat4f worldTransform = tm.getWorldTransform(ti); - auto inverseWorldTransform = inverse(worldTransform); + // auto ti = tm.getInstance(entity); + // math::mat4f worldTransform = tm.getWorldTransform(ti); + // auto inverseWorldTransform = inverse(worldTransform); - const float *vertices = _geometry->vertices; - const float *uvs = _geometry->uvs; - const uint16_t *indices = _geometry->indices; - uint32_t numIndices = _geometry->numIndices; + // const float *vertices = _geometry->vertices; + // const float *uvs = _geometry->uvs; + // const uint16_t *indices = _geometry->indices; + // uint32_t numIndices = _geometry->numIndices; - // Create a depth buffer - std::vector depthBuffer(inputWidth * inputHeight, std::numeric_limits::infinity()); + // // Create a depth buffer + // std::vector depthBuffer(inputWidth * inputHeight, std::numeric_limits::infinity()); - // Create a buffer to store the triangle index for each pixel - std::vector triangleIndexBuffer(inputWidth * inputHeight, -1); + // // Create a buffer to store the triangle index for each pixel + // std::vector triangleIndexBuffer(inputWidth * inputHeight, -1); - auto max = 0.0f; - auto min = 99.0f; + // auto max = 0.0f; + // auto min = 99.0f; - // Depth pre-pass - for (size_t i = 0; i < numIndices; i += 3) - { - math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); - math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); - math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); + // // Depth pre-pass + // for (size_t i = 0; i < numIndices; i += 3) + // { + // math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); + // math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); + // math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); - math::float2 uv0(uvs[(indices[i] * 2)], uvs[(indices[i] * 2) + 1]); - math::float2 uv1(uvs[(indices[i + 1] * 2)], uvs[(indices[i + 1] * 2) + 1]); - math::float2 uv2(uvs[(indices[i + 2] * 2)], uvs[(indices[i + 2] * 2) + 1]); + // math::float2 uv0(uvs[(indices[i] * 2)], uvs[(indices[i] * 2) + 1]); + // math::float2 uv1(uvs[(indices[i + 1] * 2)], uvs[(indices[i + 1] * 2) + 1]); + // math::float2 uv2(uvs[(indices[i + 2] * 2)], uvs[(indices[i + 2] * 2) + 1]); - // Transform vertices to world space - v0 = (worldTransform * math::float4(v0, 1.0f)).xyz; - v1 = (worldTransform * math::float4(v1, 1.0f)).xyz; - v2 = (worldTransform * math::float4(v2, 1.0f)).xyz; + // // Transform vertices to world space + // v0 = (worldTransform * math::float4(v0, 1.0f)).xyz; + // v1 = (worldTransform * math::float4(v1, 1.0f)).xyz; + // v2 = (worldTransform * math::float4(v2, 1.0f)).xyz; - // Project vertices to screen space - math::float4 clipPos0 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v0, 1.0f); - math::float4 clipPos1 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v1, 1.0f); - math::float4 clipPos2 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v2, 1.0f); + // // Project vertices to screen space + // math::float4 clipPos0 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v0, 1.0f); + // math::float4 clipPos1 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v1, 1.0f); + // math::float4 clipPos2 = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(v2, 1.0f); - math::float3 ndcPos0 = clipPos0.xyz / clipPos0.w; - math::float3 ndcPos1 = clipPos1.xyz / clipPos1.w; - math::float3 ndcPos2 = clipPos2.xyz / clipPos2.w; + // math::float3 ndcPos0 = clipPos0.xyz / clipPos0.w; + // math::float3 ndcPos1 = clipPos1.xyz / clipPos1.w; + // math::float3 ndcPos2 = clipPos2.xyz / clipPos2.w; - // Convert NDC to screen coordinates - math::float2 screenPos0((ndcPos0.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos0.y * 0.5f + 0.5f)) * inputHeight); - math::float2 screenPos1((ndcPos1.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos1.y * 0.5f + 0.5f)) * inputHeight); - math::float2 screenPos2((ndcPos2.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos2.y * 0.5f + 0.5f)) * inputHeight); + // // Convert NDC to screen coordinates + // math::float2 screenPos0((ndcPos0.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos0.y * 0.5f + 0.5f)) * inputHeight); + // math::float2 screenPos1((ndcPos1.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos1.y * 0.5f + 0.5f)) * inputHeight); + // math::float2 screenPos2((ndcPos2.x * 0.5f + 0.5f) * inputWidth, (1.0f - (ndcPos2.y * 0.5f + 0.5f)) * inputHeight); - // Compute bounding box of the triangle - int minX = std::max(0, static_cast(std::min({screenPos0.x, screenPos1.x, screenPos2.x}))); - int maxX = std::min(static_cast(inputWidth) - 1, static_cast(std::max({screenPos0.x, screenPos1.x, screenPos2.x}))); - int minY = std::max(0, static_cast(std::min({screenPos0.y, screenPos1.y, screenPos2.y}))); - int maxY = std::min(static_cast(inputHeight) - 1, static_cast(std::max({screenPos0.y, screenPos1.y, screenPos2.y}))); + // // Compute bounding box of the triangle + // int minX = std::max(0, static_cast(std::min({screenPos0.x, screenPos1.x, screenPos2.x}))); + // int maxX = std::min(static_cast(inputWidth) - 1, static_cast(std::max({screenPos0.x, screenPos1.x, screenPos2.x}))); + // int minY = std::max(0, static_cast(std::min({screenPos0.y, screenPos1.y, screenPos2.y}))); + // int maxY = std::min(static_cast(inputHeight) - 1, static_cast(std::max({screenPos0.y, screenPos1.y, screenPos2.y}))); - // Iterate over the bounding box - for (int y = minY; y <= maxY; ++y) - { - for (int x = minX; x <= maxX; ++x) - { - math::float2 pixelPos(x + 0.5f, y + 0.5f); + // // Iterate over the bounding box + // for (int y = minY; y <= maxY; ++y) + // { + // for (int x = minX; x <= maxX; ++x) + // { + // math::float2 pixelPos(x + 0.5f, y + 0.5f); - if (isInsideTriangle(pixelPos, screenPos0, screenPos1, screenPos2)) - { - math::float3 bary = barycentric(pixelPos, screenPos0, screenPos1, screenPos2); + // if (isInsideTriangle(pixelPos, screenPos0, screenPos1, screenPos2)) + // { + // math::float3 bary = barycentric(pixelPos, screenPos0, screenPos1, screenPos2); - // Interpolate depth - float depth = bary.x * ndcPos0.z + bary.y * ndcPos1.z + bary.z * ndcPos2.z; + // // Interpolate depth + // float depth = bary.x * ndcPos0.z + bary.y * ndcPos1.z + bary.z * ndcPos2.z; - // Depth test - if (depth < depthBuffer[y * inputWidth + x]) - { + // // Depth test + // if (depth < depthBuffer[y * inputWidth + x]) + // { - if (depth > max) - { - max = depth; - } - if (depth < min) - { - min = depth; - } - depthBuffer[y * inputWidth + x] = depth; - triangleIndexBuffer[y * inputWidth + x] = i / 3; // Store triangle index - } - } - } - } - } + // if (depth > max) + // { + // max = depth; + // } + // if (depth < min) + // { + // min = depth; + // } + // depthBuffer[y * inputWidth + x] = depth; + // triangleIndexBuffer[y * inputWidth + x] = i / 3; // Store triangle index + // } + // } + // } + // } + // } - for (uint32_t y = 0; y < outputHeight; ++y) - { - for (uint32_t x = 0; x < outputWidth; ++x) - { + // for (uint32_t y = 0; y < outputHeight; ++y) + // { + // for (uint32_t x = 0; x < outputWidth; ++x) + // { - math::float2 uv(static_cast(x) / outputWidth, static_cast(y) / outputHeight); + // math::float2 uv(static_cast(x) / outputWidth, static_cast(y) / outputHeight); - // Use the UV coordinates to get the corresponding 3D position on the renderable - math::float3 objectPos; - math::float2 interpolatedUV; - bool found = false; + // // Use the UV coordinates to get the corresponding 3D position on the renderable + // math::float3 objectPos; + // math::float2 interpolatedUV; + // bool found = false; - // Iterate over triangles to find which one contains this UV coordinate - for (size_t i = 0; i < numIndices; i += 3) - { - math::float2 uv0 = *(math::float2 *)&uvs[indices[i] * 2]; - math::float2 uv1 = *(math::float2 *)&uvs[indices[i + 1] * 2]; - math::float2 uv2 = *(math::float2 *)&uvs[indices[i + 2] * 2]; + // // Iterate over triangles to find which one contains this UV coordinate + // for (size_t i = 0; i < numIndices; i += 3) + // { + // math::float2 uv0 = *(math::float2 *)&uvs[indices[i] * 2]; + // math::float2 uv1 = *(math::float2 *)&uvs[indices[i + 1] * 2]; + // math::float2 uv2 = *(math::float2 *)&uvs[indices[i + 2] * 2]; - if (isInsideTriangle(uv, uv0, uv1, uv2)) - { - // Compute barycentric coordinates in UV space - math::float3 bary = barycentric(uv, uv0, uv1, uv2); + // if (isInsideTriangle(uv, uv0, uv1, uv2)) + // { + // // Compute barycentric coordinates in UV space + // math::float3 bary = barycentric(uv, uv0, uv1, uv2); - // Interpolate 3D position - math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); - math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); - math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); + // // Interpolate 3D position + // math::float3 v0(vertices[indices[i] * 3], vertices[indices[i] * 3 + 1], vertices[indices[i] * 3 + 2]); + // math::float3 v1(vertices[indices[i + 1] * 3], vertices[indices[i + 1] * 3 + 1], vertices[indices[i + 1] * 3 + 2]); + // math::float3 v2(vertices[indices[i + 2] * 3], vertices[indices[i + 2] * 3 + 1], vertices[indices[i + 2] * 3 + 2]); - objectPos = v0 * bary.x + v1 * bary.y + v2 * bary.z; - interpolatedUV = uv; + // objectPos = v0 * bary.x + v1 * bary.y + v2 * bary.z; + // interpolatedUV = uv; - // Find the screen coordinates on the input texture - math::float3 worldPos = (worldTransform * math::float4(objectPos, 1.0f)).xyz; - // Project the world position to screen space - math::float4 clipPos = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(worldPos, 1.0f); - math::float3 ndcPos = clipPos.xyz / clipPos.w; - // Convert NDC to screen coordinates - uint32_t screenX = (ndcPos.x * 0.5f + 0.5f) * inputWidth; - uint32_t screenY = (1.0f - (ndcPos.y * 0.5f + 0.5f)) * inputHeight; + // // Find the screen coordinates on the input texture + // math::float3 worldPos = (worldTransform * math::float4(objectPos, 1.0f)).xyz; + // // Project the world position to screen space + // math::float4 clipPos = _camera.getProjectionMatrix() * _camera.getViewMatrix() * math::float4(worldPos, 1.0f); + // math::float3 ndcPos = clipPos.xyz / clipPos.w; + // // Convert NDC to screen coordinates + // uint32_t screenX = (ndcPos.x * 0.5f + 0.5f) * inputWidth; + // uint32_t screenY = (1.0f - (ndcPos.y * 0.5f + 0.5f)) * inputHeight; - if (triangleIndexBuffer[(screenY * inputWidth) + screenX] == i / 3) - { - if (screenX >= 0 && screenX < inputWidth && screenY >= 0 && screenY < inputHeight) - { - int inputIndex = (screenY * inputWidth + screenX) * 4; - int outputIndex = (y * outputWidth + x) * 4; - std::copy_n(&inputTexture[inputIndex], 4, &outputTexture[outputIndex]); - } - } - } - } - } - } + // if (triangleIndexBuffer[(screenY * inputWidth) + screenX] == i / 3) + // { + // if (screenX >= 0 && screenX < inputWidth && screenY >= 0 && screenY < inputHeight) + // { + // int inputIndex = (screenY * inputWidth + screenX) * 4; + // int outputIndex = (y * outputWidth + x) * 4; + // std::copy_n(&inputTexture[inputIndex], 4, &outputTexture[outputIndex]); + // } + // } + // } + // } + // } + // } } } // namespace thermion From 6ff04fb76a09a9fba7f8236fccb723e9da3ddfd1 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 2 Nov 2024 10:18:25 +0800 Subject: [PATCH 14/14] feat: add Dart methods for getRenderableBoundingBox, setParameterInt and setParameterFloat4 --- .../src/ffi/src/thermion_viewer_ffi.dart | 77 ++++++++++++++++--- .../src/viewer/src/shared_types/material.dart | 3 + .../src/viewer/src/thermion_viewer_base.dart | 5 ++ thermion_dart/test/geometry_tests.dart | 16 +++- thermion_dart/test/material_tests.dart | 6 +- 5 files changed, 94 insertions(+), 13 deletions(-) diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart index 01afe50b..e7b5c5b2 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart @@ -83,8 +83,15 @@ class ThermionViewerFFI extends ThermionViewer { this._sharedContext = sharedContext ?? nullptr; _onPickResultCallable = NativeCallable< - Void Function(EntityId entityId, Int x, Int y, - Pointer view, Float depth, Float fragX, Float fragY, Float fragZ)>.listener(_onPickResult); + Void Function( + EntityId entityId, + Int x, + Int y, + Pointer view, + Float depth, + Float fragX, + Float fragY, + Float fragZ)>.listener(_onPickResult); _initialize(); } @@ -300,7 +307,7 @@ class ThermionViewerFFI extends ThermionViewer { return; } _disposing = true; - + await setRendering(false); await clearEntities(); await clearLights(); @@ -1509,17 +1516,38 @@ class ThermionViewerFFI extends ThermionViewer { } void _onPickResult( - ThermionEntity entityId, int x, int y, Pointer viewPtr, double depth, double fragX, double fragY, double fragZ) async { + ThermionEntity entityId, + int x, + int y, + Pointer viewPtr, + double depth, + double fragX, + double fragY, + double fragZ) async { final view = FFIView(viewPtr, _viewer!); final viewport = await view.getViewport(); - _pickResultController - .add((entity: entityId, x: x, y: (viewport.height - y), depth: depth, fragX: fragX, fragY: viewport.height - fragY, fragZ: fragZ )); + _pickResultController.add(( + entity: entityId, + x: x, + y: (viewport.height - y), + depth: depth, + fragX: fragX, + fragY: viewport.height - fragY, + fragZ: fragZ + )); } late NativeCallable< - Void Function(EntityId entityId, Int x, Int y, Pointer view, Float depth, Float fragX, Float fragY, Float fragZ)> - _onPickResultCallable; + Void Function( + EntityId entityId, + Int x, + Int y, + Pointer view, + Float depth, + Float fragX, + Float fragY, + Float fragZ)> _onPickResultCallable; /// /// @@ -1750,6 +1778,7 @@ class ThermionViewerFFI extends ThermionViewer { throw Exception("Viewer must not be null"); } + var entity = await withIntCallback((callback) => SceneManager_createGeometryRenderThread( _sceneManager!, @@ -1835,6 +1864,18 @@ class ThermionViewerFFI extends ThermionViewer { set_priority(_sceneManager!, entityId, priority); } + /// + /// + /// + @override + Future getRenderableBoundingBox(ThermionEntity entityId) async { + final result = + SceneManager_getRenderableBoundingBox(_sceneManager!, entityId); + return v64.Aabb3.centerAndHalfExtents( + Vector3(result.centerX, result.centerY, result.centerZ), + Vector3(result.halfExtentX, result.halfExtentY, result.halfExtentZ)); + } + /// /// /// @@ -2051,9 +2092,11 @@ class ThermionViewerFFI extends ThermionViewer { /// /// /// - Future createUnlitFixedSizeMaterialInstance() async { + Future + createUnlitFixedSizeMaterialInstance() async { var instance = await withPointerCallback((cb) { - SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread(_sceneManager!, cb); + SceneManager_createUnlitFixedSizeMaterialInstanceRenderThread( + _sceneManager!, cb); }); if (instance == nullptr) { throw Exception("Failed to create material instance"); @@ -2205,6 +2248,12 @@ class ThermionFFIMaterialInstance extends MaterialInstance { MaterialInstance_setDepthWrite(this._pointer, enabled); } + @override + Future setParameterFloat4(String name, double x, double y, double z, double w) async { + MaterialInstance_setParameterFloat4( + _pointer, name.toNativeUtf8().cast(), x, y, z, w); + } + @override Future setParameterFloat2(String name, double x, double y) async { MaterialInstance_setParameterFloat2( @@ -2216,6 +2265,14 @@ class ThermionFFIMaterialInstance extends MaterialInstance { MaterialInstance_setParameterFloat( _pointer, name.toNativeUtf8().cast(), value); } + + @override + Future setParameterInt(String name, int value) async { + MaterialInstance_setParameterInt( + _pointer, name.toNativeUtf8().cast(), value); + } + + } class FFIRenderTarget extends RenderTarget { diff --git a/thermion_dart/lib/src/viewer/src/shared_types/material.dart b/thermion_dart/lib/src/viewer/src/shared_types/material.dart index 0f58907b..efd2455e 100644 --- a/thermion_dart/lib/src/viewer/src/shared_types/material.dart +++ b/thermion_dart/lib/src/viewer/src/shared_types/material.dart @@ -1,8 +1,11 @@ abstract class MaterialInstance { Future setDepthWriteEnabled(bool enabled); + Future setDepthCullingEnabled(bool enabled); + Future setParameterFloat4(String name, double x, double y, double z, double w); Future setParameterFloat2(String name, double x, double y); Future setParameterFloat(String name, double x); + Future setParameterInt(String name, int value); } enum AlphaMode { OPAQUE, MASK, BLEND } diff --git a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart index 6fd1a27c..f1490f0b 100644 --- a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart +++ b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart @@ -790,6 +790,11 @@ abstract class ThermionViewer { /// void onDispose(Future Function() callback); + /// + /// Gets the 3D axis aligned bounding box for the given entity. + /// + Future getRenderableBoundingBox(ThermionEntity entity); + /// /// Gets the 2D bounding box (in viewport coordinates) for the given entity. /// diff --git a/thermion_dart/test/geometry_tests.dart b/thermion_dart/test/geometry_tests.dart index baa4c172..ee2b7707 100644 --- a/thermion_dart/test/geometry_tests.dart +++ b/thermion_dart/test/geometry_tests.dart @@ -20,10 +20,13 @@ void main() async { await viewer .setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -pi / 8)); await viewer.setBackgroundColor(1.0, 1.0, 1.0, 1.0); - await viewer + final cube = await viewer .createGeometry(GeometryHelper.cube(normals: false, uvs: false)); await testHelper.capture(viewer, "geometry_cube_no_uv_no_normal"); + await viewer.removeEntity(cube); + await testHelper.capture(viewer, "geometry_cube_removed"); + await viewer.dispose(); }); test('create cube (no normals)', () async { @@ -179,5 +182,16 @@ void main() async { .createGeometry(GeometryHelper.sphere(normals: false, uvs: false)); await testHelper.capture(viewer, "geometry_sphere_no_normals"); }); + + test('create geometry instance', () async { + var viewer = await testHelper.createViewer( + cameraPosition: Vector3(0, 0, 6), bg: kRed); + final cube = await viewer + .createGeometry(GeometryHelper.sphere(normals: false, uvs: false)); + await viewer.setTransform(cube, Matrix4.translation(Vector3(2, 1, 1))); + final cube2 = await viewer.createInstance(cube); + await viewer.setTransform(cube2, Matrix4.translation(Vector3(-2, 1, 1))); + await testHelper.capture(viewer, "geometry_instance"); + }); }); } diff --git a/thermion_dart/test/material_tests.dart b/thermion_dart/test/material_tests.dart index ffc49a0f..fa95d051 100644 --- a/thermion_dart/test/material_tests.dart +++ b/thermion_dart/test/material_tests.dart @@ -23,8 +23,10 @@ void main() async { var cube = await viewer.createGeometry(GeometryHelper.cube(), materialInstance: materialInstance); - await viewer.setMaterialPropertyFloat4( - cube, "baseColorFactor", 0, 0.0, 1.0, 0.0, 1.0); + await materialInstance.setParameterFloat4( + "baseColorFactor", 0.0, 1.0, 0.0, 1.0); + await materialInstance.setParameterInt( + "baseColorIndex", -1); await testHelper.capture(viewer, "unlit_material_base_color");