diff --git a/Assets/GadGame/Scenes/Game.unity b/Assets/GadGame/Scenes/Game.unity index dd28358..18689cf 100644 --- a/Assets/GadGame/Scenes/Game.unity +++ b/Assets/GadGame/Scenes/Game.unity @@ -123,6 +123,90 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &16274919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 16274920} + - component: {fileID: 16274921} + m_Layer: 0 + m_Name: Circle (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &16274920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16274919} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &16274921 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16274919} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1001 &22570934 PrefabInstance: m_ObjectHideFlags: 0 @@ -239,6 +323,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (9) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -449,6 +537,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (3) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -744,6 +836,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (7) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -784,7 +880,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -10} m_SizeDelta: {x: 100, y: 100} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &201703999 @@ -859,6 +955,174 @@ Transform: - {fileID: 1822366210} m_Father: {fileID: 41715676} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &236078963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 236078964} + - component: {fileID: 236078965} + m_Layer: 0 + m_Name: Circle (8) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &236078964 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236078963} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &236078965 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 236078963} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &252197707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 252197708} + - component: {fileID: 252197709} + m_Layer: 0 + m_Name: Circle (13) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &252197708 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252197707} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &252197709 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 252197707} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &272528180 GameObject: m_ObjectHideFlags: 0 @@ -943,6 +1207,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &284046319 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 284046320} + - component: {fileID: 284046321} + m_Layer: 0 + m_Name: Circle (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &284046320 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284046319} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &284046321 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 284046319} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &332379179 GameObject: m_ObjectHideFlags: 0 @@ -1135,6 +1483,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (6) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -1287,6 +1639,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (2) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -1413,6 +1769,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (4) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -1662,6 +2022,170 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 506579238345646780, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} m_PrefabInstance: {fileID: 22570934} m_PrefabAsset: {fileID: 0} +--- !u!1 &636098794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 636098795} + - component: {fileID: 636098798} + - component: {fileID: 636098797} + - component: {fileID: 636098796} + m_Layer: 5 + m_Name: loading + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &636098795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636098794} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1691484230} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -472} + m_SizeDelta: {x: 826.54, y: 132} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &636098796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636098794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 0 + animationLoop: 0 + timeScale: 0 + _text: + useDynamicScaling: 1 + referenceFontSize: 10 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 0} + databaseAppearances: {fileID: 0} + databaseActions: {fileID: 0} + defaultAppearancesTags: + - size + defaultDisappearancesTags: + - fade + defaultBehaviorsTags: [] + defaultTagsMode: 0 +--- !u!114 &636098797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636098794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Wait For Gift... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 2426 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 50 + m_fontSizeBase: 50 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &636098798 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 636098794} + m_CullTransparentMesh: 1 --- !u!1 &655028317 GameObject: m_ObjectHideFlags: 0 @@ -2114,6 +2638,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (8) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -2362,6 +2890,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &987322746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 987322747} + - component: {fileID: 987322748} + m_Layer: 0 + m_Name: Circle (9) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &987322747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987322746} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &987322748 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987322746} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &998003724 GameObject: m_ObjectHideFlags: 0 @@ -2523,7 +3135,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1137171261 RectTransform: m_ObjectHideFlags: 0 @@ -2643,6 +3255,174 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1182715074} m_CullTransparentMesh: 1 +--- !u!1 &1187927588 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1187927589} + - component: {fileID: 1187927590} + m_Layer: 0 + m_Name: Circle (12) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1187927589 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187927588} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1187927590 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1187927588} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1229982701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1229982702} + - component: {fileID: 1229982703} + m_Layer: 0 + m_Name: Circle (16) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1229982702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1229982701} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1229982703 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1229982701} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1230716509 GameObject: m_ObjectHideFlags: 0 @@ -2897,6 +3677,90 @@ Animator: m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 0 m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &1271328619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1271328620} + - component: {fileID: 1271328621} + m_Layer: 0 + m_Name: Circle (7) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1271328620 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1271328619} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1271328621 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1271328619} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1278601754 GameObject: m_ObjectHideFlags: 0 @@ -3467,6 +4331,90 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1388027224 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1388027225} + - component: {fileID: 1388027226} + m_Layer: 0 + m_Name: Circle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1388027225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1388027224} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1388027226 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1388027224} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1388120848 GameObject: m_ObjectHideFlags: 0 @@ -3757,6 +4705,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (5) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -3874,6 +4826,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -4211,6 +5167,174 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1619835393 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1619835394} + - component: {fileID: 1619835395} + m_Layer: 0 + m_Name: Circle (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1619835394 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619835393} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1619835395 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1619835393} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1634234204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1634234205} + - component: {fileID: 1634234206} + m_Layer: 0 + m_Name: Circle (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1634234205 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634234204} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1634234206 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1634234204} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1639241604 GameObject: m_ObjectHideFlags: 0 @@ -4563,6 +5687,90 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1682928234} m_CullTransparentMesh: 1 +--- !u!1 &1689361858 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1689361859} + - component: {fileID: 1689361860} + m_Layer: 0 + m_Name: Circle (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1689361859 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689361858} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1689361860 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1689361858} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &1691484229 GameObject: m_ObjectHideFlags: 0 @@ -4600,6 +5808,7 @@ RectTransform: - {fileID: 332379180} - {fileID: 1827213708} - {fileID: 1137171261} + - {fileID: 636098795} m_Father: {fileID: 1939570967} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -4662,6 +5871,90 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 506579238345646780, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} m_PrefabInstance: {fileID: 1717529633} m_PrefabAsset: {fileID: 0} +--- !u!1 &1716313073 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1716313074} + - component: {fileID: 1716313075} + m_Layer: 0 + m_Name: Circle (14) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1716313074 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716313073} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1716313075 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716313073} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1001 &1717529633 PrefabInstance: m_ObjectHideFlags: 0 @@ -4778,6 +6071,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (10) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -4998,6 +6295,54 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1805668786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1805668787} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1805668787 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1805668786} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1388027225} + - {fileID: 1689361859} + - {fileID: 1634234205} + - {fileID: 16274920} + - {fileID: 2084131005} + - {fileID: 1619835394} + - {fileID: 284046320} + - {fileID: 1271328620} + - {fileID: 236078964} + - {fileID: 987322747} + - {fileID: 1950742235} + - {fileID: 1960192227} + - {fileID: 1187927589} + - {fileID: 252197708} + - {fileID: 1716313074} + - {fileID: 1955124308} + - {fileID: 1229982702} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1810672863 GameObject: m_ObjectHideFlags: 0 @@ -5524,6 +6869,258 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0, y: 0} +--- !u!1 &1950742234 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1950742235} + - component: {fileID: 1950742236} + m_Layer: 0 + m_Name: Circle (10) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1950742235 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950742234} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1950742236 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1950742234} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1955124307 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1955124308} + - component: {fileID: 1955124309} + m_Layer: 0 + m_Name: Circle (15) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1955124308 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955124307} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1955124309 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1955124307} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &1960192226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1960192227} + - component: {fileID: 1960192228} + m_Layer: 0 + m_Name: Circle (11) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1960192227 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960192226} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1960192228 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1960192226} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1 &2012096804 GameObject: m_ObjectHideFlags: 0 @@ -5829,6 +7426,90 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &2084131004 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2084131005} + - component: {fileID: 2084131006} + m_Layer: 0 + m_Name: Circle (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2084131005 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2084131004} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1805668787} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &2084131006 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2084131004} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 --- !u!1001 &2087404703 PrefabInstance: m_ObjectHideFlags: 0 @@ -5945,6 +7626,10 @@ PrefabInstance: propertyPath: m_Name value: AnimatedTextPrefab (1) objectReference: {fileID: 0} + - target: {fileID: 7688246038804780210, guid: fe41701ffaac8a5a699e58aa5b939cce, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -6218,6 +7903,24 @@ MonoBehaviour: _defaultCapacity: 10 _max: 100 _collectionCheck: 0 + Objects: + - {fileID: 1388027225} + - {fileID: 1689361859} + - {fileID: 1634234205} + - {fileID: 16274920} + - {fileID: 2084131005} + - {fileID: 1619835394} + - {fileID: 284046320} + - {fileID: 1271328620} + - {fileID: 236078964} + - {fileID: 987322747} + - {fileID: 1950742235} + - {fileID: 1960192227} + - {fileID: 1187927589} + - {fileID: 252197708} + - {fileID: 1716313074} + - {fileID: 1955124308} + - {fileID: 1229982702} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -6236,3 +7939,4 @@ SceneRoots: - {fileID: 655028318} - {fileID: 1281411708} - {fileID: 1939570967} + - {fileID: 1805668787} diff --git a/Assets/GadGame/Scenes/PassBy.unity b/Assets/GadGame/Scenes/PassBy.unity index 10f2198..fbf248b 100644 --- a/Assets/GadGame/Scenes/PassBy.unity +++ b/Assets/GadGame/Scenes/PassBy.unity @@ -496,6 +496,7 @@ RectTransform: - {fileID: 1509506830} - {fileID: 1296119107} - {fileID: 781534353} + - {fileID: 778936296} m_Father: {fileID: 883611476} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -877,6 +878,170 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 752378338} m_CullTransparentMesh: 1 +--- !u!1 &778936295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 778936296} + - component: {fileID: 778936298} + - component: {fileID: 778936297} + - component: {fileID: 778936299} + m_Layer: 5 + m_Name: Image_idle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &778936296 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778936295} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 324847414} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 706.0657, y: 166.71} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &778936297 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778936295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: IDLE WINDOW + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 80 + m_fontSizeBase: 80 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &778936298 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778936295} + m_CullTransparentMesh: 1 +--- !u!114 &778936299 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 778936295} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 0 + animationLoop: 0 + timeScale: 0 + _text: IDLE WINDOW + useDynamicScaling: 1 + referenceFontSize: 10 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 11400000, guid: d1ab346c8b166fe1babb05950e874fb1, type: 2} + databaseAppearances: {fileID: 11400000, guid: 6f440ba43b95f6c7e90fa305a0bbda32, type: 2} + databaseActions: {fileID: 11400000, guid: 0f78b267c3825f804a4727a8b68c329d, type: 2} + defaultAppearancesTags: + - size + defaultDisappearancesTags: + - fade + defaultBehaviorsTags: [] + defaultTagsMode: 0 --- !u!1 &781534352 GameObject: m_ObjectHideFlags: 0 @@ -1025,7 +1190,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0.0000076293945, y: -337} + m_AnchoredPosition: {x: 0, y: -337} m_SizeDelta: {x: 914.6453, y: 897.0692} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &883611477 @@ -1095,6 +1260,7 @@ MonoBehaviour: _transform: {fileID: 324847414} CircleImg: {fileID: 588222147} txtProgress: {fileID: 278260376} + videoPlayer: {fileID: 2124753956} --- !u!1 &1118910917 GameObject: m_ObjectHideFlags: 0 @@ -1728,10 +1894,10 @@ RectTransform: m_Children: [] m_Father: {fileID: 324847414} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: 914, y: 898} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1509506831 MonoBehaviour: @@ -2470,8 +2636,8 @@ Canvas: m_GameObject: {fileID: 1939570963} m_Enabled: 1 serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} + m_RenderMode: 1 + m_Camera: {fileID: 1302683601} m_PlaneDistance: 100 m_PixelPerfect: 0 m_ReceivesEvents: 1 @@ -2497,6 +2663,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 731571812} + - {fileID: 2124753955} - {fileID: 1490140569} - {fileID: 1796482201} - {fileID: 883611476} @@ -2717,6 +2884,78 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2003416019} m_CullTransparentMesh: 1 +--- !u!1 &2124753954 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2124753955} + - component: {fileID: 2124753956} + m_Layer: 5 + m_Name: Video Player_Idle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2124753955 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124753954} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1939570967} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 2160, y: 3840} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!328 &2124753956 +VideoPlayer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2124753954} + m_Enabled: 1 + m_VideoClip: {fileID: 32900000, guid: b431e4dee076c8b698cee9a4d18c6dbd, type: 3} + m_TargetCameraAlpha: 1 + m_TargetCamera3DLayout: 0 + m_TargetCamera: {fileID: 1302683601} + m_TargetTexture: {fileID: 0} + m_TimeReference: 0 + m_TargetMaterialRenderer: {fileID: 0} + m_TargetMaterialProperty: + m_RenderMode: 1 + m_AspectRatio: 2 + m_DataSource: 0 + m_TimeUpdateMode: 2 + m_PlaybackSpeed: 1 + m_AudioOutputMode: 2 + m_TargetAudioSources: + - {fileID: 0} + m_DirectAudioVolumes: + - 1 + m_Url: + m_EnabledAudioTracks: 01 + m_DirectAudioMutes: 00 + m_ControlledAudioTrackCount: 1 + m_PlayOnAwake: 1 + m_SkipOnDrop: 1 + m_Looping: 1 + m_WaitForFirstFrame: 1 + m_FrameReadyEventEnabled: 0 + m_VideoShaders: [] --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/GadGame/Scripts/MainFlow.cs b/Assets/GadGame/Scripts/MainFlow.cs index 7ad3078..7a1b6d8 100644 --- a/Assets/GadGame/Scripts/MainFlow.cs +++ b/Assets/GadGame/Scripts/MainFlow.cs @@ -19,8 +19,9 @@ namespace GadGame DontDestroyOnLoad(gameObject); } - private void Start() + private async void Start() { + await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(SceneFlowConfig.PassByScene.ScenePath); SetState(); } diff --git a/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs b/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs index 83f9c51..4ce652a 100644 --- a/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs +++ b/Assets/GadGame/Scripts/MiniGame/MiniGameController.cs @@ -11,6 +11,7 @@ using TMPro; using UnityEngine; using UnityEngine.UI; using Random = UnityEngine.Random; +using Newtonsoft.Json; namespace GadGame.MiniGame { @@ -44,6 +45,9 @@ namespace GadGame.MiniGame [Header("Pool")] [SerializeField] private Pool[] _itemPools; [SerializeField] private Pool[] _bombPools; + + private Vector2[] receivedData; + public Transform[] Objects; private GameManager _gameManager; private Camera _camera; @@ -96,28 +100,49 @@ namespace GadGame.MiniGame public void PlayerControl() { //640x480; - var inputData = UdpSocket.Instance.DataReceived.PosPoint; - var inputNormalize = new Vector2((inputData.x - 213.33f)/ 213.33f, inputData.y / 480); + // string inputData = UdpSocket.Instance.DataReceived.PosPoints; + // var inputNormalize = new Vector2((inputData.x - 213.33f)/ 213.33f, inputData.y / 480); // var inputNormalize = new Vector2(inputData.x/ 200, inputData.y / 480); - var input = new Vector2 + + receivedData = UdpSocket.Instance.DataReceived.PosPoints; + Debug.Log(receivedData); + + for (int i = 0; i < Objects.Length; ++i) { - x = Mathf.Lerp(0, _canvas.pixelRect.width, inputNormalize.x), - y = -Mathf.Lerp(0, _canvas.pixelRect.height, inputNormalize.y) - }; - if (input != Vector2.zero) - { - var mousePos = input; - var pos = _camera.ScreenToWorldPoint(mousePos); - var currentPosition = _basket.Position; - pos.x *= -1; - pos.y = currentPosition.y; - pos.z = 0; - currentPosition= Vector3.Lerp(currentPosition, pos, _lerp * Time.deltaTime); - currentPosition.x = Mathf.Clamp(currentPosition.x, -2.25f, 2.25f); - var dirMove = (_preFramePosition - currentPosition).normalized; - _basket.transform.DORotate(new Vector3(0, 0, 10 * dirMove.x), 0.2f); - _basket.Position = currentPosition; + var inputNormalize = new Vector2((receivedData[i].x - 213.33f)/ 213.33f, receivedData[i].y / 480); + if (i == 0) + { + var input = new Vector2 + { + x = Mathf.Lerp(0, _canvas.pixelRect.width, inputNormalize.x), + y = -Mathf.Lerp(0, _canvas.pixelRect.height, inputNormalize.y) + }; + if (input != Vector2.zero) + { + var mousePos = input; + var pos = _camera.ScreenToWorldPoint(mousePos); + var currentPosition = _basket.Position; + pos.x *= -1; + pos.y = currentPosition.y; + pos.z = 0; + currentPosition= Vector3.Lerp(currentPosition, pos, _lerp * Time.deltaTime); + currentPosition.x = Mathf.Clamp(currentPosition.x, -2.25f, 2.25f); + var dirMove = (_preFramePosition - currentPosition).normalized; + _basket.transform.DORotate(new Vector3(0, 0, 10 * dirMove.x), 0.2f); + _basket.Position = currentPosition; + } + } + + // var pos_pose = new Vector2(); + // var x = Mathf.Clamp01(receivedData[i].x / 640); + // var y = Mathf.Clamp01(receivedData[i].y / 480); + + // pos_pose.x = x; + // pos_pose.y = y; + + // Objects[i].localPosition = pos_pose * -1; } + } public async void ShowTutorial() diff --git a/Assets/GadGame/Scripts/Network/ReceiverData.cs b/Assets/GadGame/Scripts/Network/ReceiverData.cs index 52fb854..3525776 100644 --- a/Assets/GadGame/Scripts/Network/ReceiverData.cs +++ b/Assets/GadGame/Scripts/Network/ReceiverData.cs @@ -18,6 +18,6 @@ namespace GadGame.Network public float Gender; public int AgeMin; public int AgeMax; - public Vector2 PosPoint; + public Vector2[] PosPoints; } } \ No newline at end of file diff --git a/Assets/GadGame/Scripts/PassByAnimation.cs b/Assets/GadGame/Scripts/PassByAnimation.cs index 50a2cf6..84d480f 100644 --- a/Assets/GadGame/Scripts/PassByAnimation.cs +++ b/Assets/GadGame/Scripts/PassByAnimation.cs @@ -1,11 +1,12 @@ +using System.Collections; +using Cysharp.Threading.Tasks; using DG.Tweening; -using GadGame.Network; using GadGame.Singleton; -using Microsoft.Unity.VisualStudio.Editor; using Sirenix.OdinInspector; using TMPro; using UnityEngine; using UnityEngine.UI; +using UnityEngine.Video; namespace GadGame.State.MainFlowState { @@ -13,16 +14,37 @@ namespace GadGame.State.MainFlowState { public Animator passBy; [SerializeField] private RectTransform _transform; - [SerializeField] private UnityEngine.UI.Image CircleImg; + // [SerializeField] private RectTransform _videoIdleTransform; + [SerializeField] private Image CircleImg; [SerializeField] private TextMeshProUGUI txtProgress; - // [SerializeField] [Range(0,1)] float progress = 1f; - + [SerializeField] private VideoPlayer videoPlayer; [Button] public void Play(bool engage) { - _transform.DOAnchorPosX(engage ? -1000 : 0, 2); + // videoPlayer.gameObject.SetActive(!passBy); + _transform.DOAnchorPosX(engage ? -1000 : 0, 1); } + public async void SetPlayVideo(bool value){ + if(value) { + while (videoPlayer.targetCameraAlpha < 1) + { + videoPlayer.targetCameraAlpha += Time.deltaTime * 3; + await UniTask.Yield(); + } + + videoPlayer.targetCameraAlpha = 1; + } else { + while (videoPlayer.targetCameraAlpha > 0) + { + videoPlayer.targetCameraAlpha -= Time.deltaTime * 3; + await UniTask.Yield(); + } + + videoPlayer.targetCameraAlpha = 0; + } + } + public void ReadyCountDown(float progress){ CircleImg.fillAmount = progress ; txtProgress.text = Mathf.Floor(progress * 3).ToString(); diff --git a/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs b/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs index f5419f7..3847a64 100644 --- a/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs +++ b/Assets/GadGame/Scripts/State/MainFlowState/CTAState.cs @@ -1,6 +1,5 @@ using GadGame.Manager; using GadGame.Network; -using UnityEngine; namespace GadGame.State.MainFlowState { @@ -13,7 +12,7 @@ namespace GadGame.State.MainFlowState } else if (UdpSocket.Instance.DataReceived.Gender >= 0.7f){ LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneFemale.ScenePath); } else { - LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneBoth.ScenePath); + LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.CTASceneFemale.ScenePath); } } @@ -23,18 +22,8 @@ namespace GadGame.State.MainFlowState if (time >= 10) { - if(!UdpSocket.Instance.DataReceived.PassBy) - { - Runner.SetState(); - return; - } - - if(!UdpSocket.Instance.DataReceived.Engage) - { - Runner.SetState(); - return; - } - Runner.SetState(); + LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.PassByScene.ScenePath); + Runner.SetState(); } } diff --git a/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs b/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs index bf82491..efd7fcd 100644 --- a/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs +++ b/Assets/GadGame/Scripts/State/MainFlowState/EngageState.cs @@ -1,5 +1,6 @@ using GadGame.Manager; using GadGame.Network; +using Unity.Mathematics; using UnityEngine; namespace GadGame.State.MainFlowState @@ -10,57 +11,36 @@ namespace GadGame.State.MainFlowState private bool _warned; private bool _showCountDown; - private PassByAnimation passByAnim; - public override void Enter() { - passByAnim = PassByAnimation.Instance; - passByAnim.Play(true); // LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.EndGageScene.ScenePath); + PassByAnimation.Instance.Play(true); _readyTimer = 5; } public override void Update(float time) { + if(!UdpSocket.Instance.DataReceived.PassBy) { + Runner.SetState(); + return; + } + + if(!UdpSocket.Instance.DataReceived.Engage) { + Runner.SetState(); + return; + } + + if (!UdpSocket.Instance.DataReceived.Ready) _readyTimer = 3; + PassByAnimation.Instance.ReadyCountDown(_readyTimer / 3); + _readyTimer -= Time.deltaTime; + if (_readyTimer <= 0) + { + _readyTimer = 0; + Runner.SetState(); + } if (time >= 2) { - switch (_warned) - { - case true when !UdpSocket.Instance.DataReceived.PassBy: - Runner.SetState(); - break; - case false when !UdpSocket.Instance.DataReceived.Engage: - _warned = true; - passByAnim.Play(false); - // PopupManager.Instance.Show("Come Back", 5).OnComplete(OnWaringComplete); - break; - case true when UdpSocket.Instance.DataReceived.Engage: - _warned = false; - passByAnim.Play(true); - // PopupManager.Instance.Hide(); - break; - } - - switch (_showCountDown) - { - case false when UdpSocket.Instance.DataReceived.Ready: - _showCountDown = true; - // Runner.Ready(true); - break; - case true when !UdpSocket.Instance.DataReceived.Ready: - _showCountDown = false; - // Runner.Ready(false); - break; - } - if (!UdpSocket.Instance.DataReceived.Ready) _readyTimer = 3; - passByAnim.ReadyCountDown(_readyTimer / 3); - _readyTimer -= Time.deltaTime; - if (_readyTimer <= 0) - { - _readyTimer = 0; - Runner.SetState(); - } // Runner.ReadyCountDown(_readyTimer); } diff --git a/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs b/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs index 60028a7..f21406c 100644 --- a/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs +++ b/Assets/GadGame/Scripts/State/MainFlowState/IdleState.cs @@ -1,19 +1,22 @@ +using System.Diagnostics; using GadGame.Manager; using GadGame.Network; +using UnityEngine.SceneManagement; namespace GadGame.State.MainFlowState { public class IdleState : State { - + public override void Enter() { - LoadSceneManager.Instance.LoadSceneWithTransition(Runner.SceneFlowConfig.IdleScene.ScenePath); + PassByAnimation.Instance.Play(false); + PassByAnimation.Instance.SetPlayVideo(true); } public override void Update(float time) { - if(time < 2) return; + // if(time < 2) return; if (UdpSocket.Instance.DataReceived.PassBy) { @@ -35,7 +38,7 @@ namespace GadGame.State.MainFlowState public override void Exit() { - + PassByAnimation.Instance.SetPlayVideo(false); } } } \ No newline at end of file diff --git a/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs b/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs index 6c55fe4..d551ac5 100644 --- a/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs +++ b/Assets/GadGame/Scripts/State/MainFlowState/PassByState.cs @@ -7,35 +7,27 @@ namespace GadGame.State.MainFlowState { public class PassByState : State { - private PassByAnimation passByAnim; public async override void Enter() { - await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath); - passByAnim = PassByAnimation.Instance; - passByAnim.Play(false); + // await LoadSceneManager.Instance.LoadSceneWithTransitionAsync(Runner.SceneFlowConfig.PassByScene.ScenePath); + PassByAnimation.Instance.Play(false); } public override void Update(float time) { - if (time < 2f) return; + // if(time < 2) return; if (!UdpSocket.Instance.DataReceived.PassBy) { Runner.SetState(); return; } - + if (UdpSocket.Instance.DataReceived.Engage) { Runner.SetState(); return; } - - // if (UdpSocket.Instance.DataReceived.OnVision) - // { - // Runner.SetState(); - // return; - // } } public override void Exit() diff --git a/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs b/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs index 897f0d6..d0a10c8 100644 --- a/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs +++ b/Assets/GadGame/Scripts/State/MainFlowState/PlayGameState.cs @@ -60,14 +60,10 @@ namespace GadGame.State.MainFlowState _gameManager.Resume(); if(!UdpSocket.Instance.DataReceived.PassBy) { - Runner.SetState(); + Runner.SetState(); return; } - // if(!UdpSocket.Instance.DataReceived.OnVision) - // { - // Runner.SetState(); - // return; - // } + if(!UdpSocket.Instance.DataReceived.Engage) { Runner.SetState(); diff --git a/Assets/GadGame/Scripts/State/StateRunner.cs b/Assets/GadGame/Scripts/State/StateRunner.cs index 81da28b..8c7f000 100644 --- a/Assets/GadGame/Scripts/State/StateRunner.cs +++ b/Assets/GadGame/Scripts/State/StateRunner.cs @@ -66,8 +66,8 @@ namespace GadGame.State var newState = _states.FirstOrDefault(s => s is TSt); if(newState == null) return; + newState.Enter(); ActiveState = newState; - ActiveState.Enter(); _timer = 0; } } diff --git a/Assets/Plugins/Febucci.meta b/Assets/Plugins/Febucci.meta new file mode 100644 index 0000000..8c43f36 --- /dev/null +++ b/Assets/Plugins/Febucci.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 766a79cc4c72adc929ac7638a34e1b15 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator.meta b/Assets/Plugins/Febucci/Text Animator.meta new file mode 100644 index 0000000..177296e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3c851caa99d03d4a8c8842ded166a7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes.meta b/Assets/Plugins/Febucci/Text Animator/Attributes.meta new file mode 100644 index 0000000..f0293eb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da631c92e6b893e49acea17d69d48252 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta new file mode 100644 index 0000000..61dd651 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 001402f99874ca24780daf2947cf5e14 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs new file mode 100644 index 0000000..f975e04 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs @@ -0,0 +1,66 @@ +using UnityEngine; +using UnityEditor; + +namespace Febucci.Attributes +{ + [CustomPropertyDrawer(typeof(CharsDisplayTimeAttribute))] + public class CharsDisplayTimeAttributeDrawer : PropertyDrawer + { + const float minWaitTime = 0.0001f; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + //delay in seconds + Rect delayValueRect = new Rect(position.x, position.y, 70 + 230 - position.x, position.height); + delayValueRect.width = Mathf.Clamp(position.width * 0.6f, 170, position.width); + + Rect delayLabel = new Rect(delayValueRect); + delayLabel.x += delayLabel.width - 15; + delayLabel.width = 77; + + Rect charPerSecValueRect = new Rect(delayLabel); + charPerSecValueRect.x += charPerSecValueRect.width - 15; + charPerSecValueRect.width = 65; + + + Rect charPerSecLabelRect = new Rect(charPerSecValueRect); + charPerSecLabelRect.x += charPerSecLabelRect.width - 15; + charPerSecLabelRect.width = 120; + + switch (property.propertyType) + { + case SerializedPropertyType.Float: + + property.floatValue = EditorGUI.FloatField(delayValueRect, label, property.floatValue); + + EditorGUI.LabelField(delayLabel, $"s delay, ≈"); + + + + int charPerSecond = Mathf.RoundToInt(1 / property.floatValue); + + EditorGUI.LabelField(charPerSecLabelRect, "chars per sec"); + EditorGUI.BeginChangeCheck(); + charPerSecond = EditorGUI.IntField(charPerSecValueRect, charPerSecond); + + if (EditorGUI.EndChangeCheck()) + { + property.floatValue = 1f/charPerSecond; + } + + if (property.floatValue < minWaitTime) + property.floatValue = minWaitTime; + + break; + + + default: //unsupported, fallback to the default OnGUI + EditorGUI.PropertyField(position, property, label); + return; + } + + } + + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta new file mode 100644 index 0000000..975987c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/CharsDisplayTimeAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 06ce1d00801daba44918ac07070012a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef new file mode 100644 index 0000000..7b2a8e3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Febucci.Attributes.Editor", + "rootNamespace": "", + "references": [ + "GUID:448b0b55421917e4784a8f2f7449081f" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta new file mode 100644 index 0000000..60e8dd3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/Febucci.Attributes.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fbcceeb83a7197e40b5e481f8eeb8508 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs new file mode 100644 index 0000000..92bdcc1 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs @@ -0,0 +1,30 @@ +using UnityEngine; +using UnityEditor; + +namespace Febucci.Attributes +{ + [CustomPropertyDrawer(typeof(MinValueAttribute))] + public class MinValueAttributeDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.PropertyField(position, property, label); + switch (property.propertyType) + { + case SerializedPropertyType.Integer: + property.intValue = Mathf.Clamp(property.intValue, (int)(attribute as MinValueAttribute).min, int.MaxValue); + break; + + case SerializedPropertyType.Float: + property.floatValue = Mathf.Clamp(property.floatValue, (attribute as MinValueAttribute).min, float.MaxValue); + break; + + default: + base.OnGUI(position, property, label); + break; + } + + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta new file mode 100644 index 0000000..7419d47 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/MinValueAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6969374730fb584ea155e370491caf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs new file mode 100644 index 0000000..7a43dd8 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using UnityEditor; + +namespace Febucci.Attributes +{ + [CustomPropertyDrawer(typeof(NotZeroAttribute))] + public class NotZeroAttributeDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + switch (property.propertyType) + { + case SerializedPropertyType.Integer: + int intValue = property.intValue; + intValue = EditorGUI.IntField(position, label, intValue); + if (intValue != 0) + property.intValue = intValue; + break; + + case SerializedPropertyType.Float: + float floatValue = property.floatValue; + floatValue = EditorGUI.FloatField(position, label, floatValue); + + if (floatValue != 0) + property.floatValue = floatValue; + + break; + + case SerializedPropertyType.Vector2: + Vector2 vecValue = property.vector2Value; + vecValue = EditorGUI.Vector2Field(position, label, vecValue); + + property.vector2Value = new Vector2( + (vecValue.x != 0 || vecValue.y!=0) ? vecValue.x : property.vector2Value.x, + (vecValue.y != 0 || vecValue.x!=0) ? vecValue.y : property.vector2Value.y); + + break; + + + default: + base.OnGUI(position, property, label); + break; + } + + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta new file mode 100644 index 0000000..d9d6c6c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/NotZeroAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 319c5abbdd9c94e479d7c58013da0a7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs new file mode 100644 index 0000000..e34f1a3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs @@ -0,0 +1,47 @@ +using UnityEngine; +using UnityEditor; + +namespace Febucci.Attributes +{ + [CustomPropertyDrawer(typeof(PositiveValueAttribute))] + public class PositiveValueAttributeDrawer : PropertyDrawer + { + const float minValue = .01f; + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + switch (property.propertyType) + { + case SerializedPropertyType.Integer: + int intValue = property.intValue; + intValue = EditorGUI.IntField(position, label, intValue); + if (intValue >= minValue) + property.intValue = intValue; + break; + + case SerializedPropertyType.Float: + float floatValue = property.floatValue; + floatValue = EditorGUI.FloatField(position, label, floatValue); + + property.floatValue = Mathf.Clamp(floatValue, minValue, floatValue); + break; + + case SerializedPropertyType.Vector2: + Vector2 vecValue = property.vector2Value; + vecValue = EditorGUI.Vector2Field(position, label, vecValue); + + vecValue.x = Mathf.Clamp(vecValue.x, minValue, vecValue.x); + vecValue.y = Mathf.Clamp(vecValue.y, minValue, vecValue.y); + + property.vector2Value = vecValue; + break; + + default: + base.OnGUI(position, property, label); + break; + } + + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta new file mode 100644 index 0000000..ffb95cf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Editor/PositiveValueAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9574f1311c20a8418059bbedf619737 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta new file mode 100644 index 0000000..6a0d661 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c54a190a44816374899a417122886ada +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs new file mode 100644 index 0000000..379614c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Febucci.Attributes +{ + public class CharsDisplayTimeAttribute : PropertyAttribute + { + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta new file mode 100644 index 0000000..ae69a8c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/CharsDisplayTimeAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17a442d7a8bcb7843a7b81ae4b6fcbaa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef new file mode 100644 index 0000000..bf8b236 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef @@ -0,0 +1,14 @@ +{ + "name": "Febucci.Attributes.Runtime", + "rootNamespace": "", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta new file mode 100644 index 0000000..d2ace58 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/Febucci.Attributes.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 448b0b55421917e4784a8f2f7449081f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs new file mode 100644 index 0000000..b01f415 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs @@ -0,0 +1,14 @@ +using UnityEngine; + +namespace Febucci.Attributes +{ + public class MinValueAttribute : PropertyAttribute + { + public float min = 0; + public MinValueAttribute(float min) + { + this.min = min; + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta new file mode 100644 index 0000000..d661541 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/MinValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 15c1cd35897ccae4ea16b7d7bd05c74b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs new file mode 100644 index 0000000..f009bd4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Febucci.Attributes +{ + public class NotZeroAttribute : PropertyAttribute + { + + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta new file mode 100644 index 0000000..c44227b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/NotZeroAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 330d54a9b2a8cde41a7128d6f9418661 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs new file mode 100644 index 0000000..4715bd4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Febucci.Attributes +{ + public class PositiveValueAttribute : PropertyAttribute + { + + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta new file mode 100644 index 0000000..fb3d5e5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Attributes/Runtime/PositiveValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f12d9869f06b66498d39516b6e88aa7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data.meta b/Assets/Plugins/Febucci/Text Animator/Data.meta new file mode 100644 index 0000000..54597c9 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64096182da37e607291d723f6c861fee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta new file mode 100644 index 0000000..7c83a3f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9c7916894dff634f98968d3ee28a9a6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset new file mode 100644 index 0000000..e64272e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 975089f62a0f141b0b6c1e96bb49c873, type: 3} + m_Name: Actions Database + m_EditorClassIdentifier: + data: + - {fileID: 11400000, guid: bf4bdbc3b8f308d09915d845bb8add45, type: 2} + - {fileID: 11400000, guid: 95dbfc172929c069b889d2e360cfad2f, type: 2} + - {fileID: 11400000, guid: 9f8d00c4e2f2a02348224f1f3e7673ae, type: 2} diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta new file mode 100644 index 0000000..26ddba0 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/Actions Database.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f78b267c3825f804a4727a8b68c329d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset new file mode 100644 index 0000000..ad062e6 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 24451f867ad2a6146baf57f938a44d18, type: 3} + m_Name: SpeedAction + m_EditorClassIdentifier: + tagID: speed + defaultSpeed: 2 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta new file mode 100644 index 0000000..5730b7a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/SpeedAction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf4bdbc3b8f308d09915d845bb8add45 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset new file mode 100644 index 0000000..38761cf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aed6905e7c644c14a804ef32a5216aa3, type: 3} + m_Name: WaitAnyInputAction + m_EditorClassIdentifier: + tagID: waitinput diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta new file mode 100644 index 0000000..8026803 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitAnyInputAction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 95dbfc172929c069b889d2e360cfad2f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset new file mode 100644 index 0000000..320fdc5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7806fdd5903ae4a1b8ddb77cde0d5832, type: 3} + m_Name: WaitForAction + m_EditorClassIdentifier: + tagID: waitfor + defaultTime: 1 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta new file mode 100644 index 0000000..55fff21 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Actions/WaitForAction.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f8d00c4e2f2a02348224f1f3e7673ae +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta new file mode 100644 index 0000000..b13f25d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90b80a86f3dbb666891887f97cd9f52b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset new file mode 100644 index 0000000..35b119b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 103e863f5c0347be8a512f431aaf5ec1, type: 3} + m_Name: Appearances Database + m_EditorClassIdentifier: + data: + - {fileID: 11400000, guid: 580868ca94914f3a5b4799e19bbd3085, type: 2} + - {fileID: 11400000, guid: 710e372fa4a13b1479b5e6d0a55db0c8, type: 2} + - {fileID: 11400000, guid: 7316dbc102f59da72978008734e90982, type: 2} + - {fileID: 11400000, guid: 5685734b8affc629680c1bbb91624508, type: 2} + - {fileID: 11400000, guid: ca89d2a16f2b8654ab5c938d2fe4ca84, type: 2} + - {fileID: 11400000, guid: 7dbe7206d95daeb80aaef048450d3d13, type: 2} + - {fileID: 11400000, guid: f85299684f332935b8ab73a6ff36a848, type: 2} + - {fileID: 11400000, guid: 6b3c952806296327f9e007418fb4cdab, type: 2} diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta new file mode 100644 index 0000000..7de60b2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/Appearances Database.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f440ba43b95f6c7e90fa305a0bbda32 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset new file mode 100644 index 0000000..092c734 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7303246fad8e2a049aebd6c0c71d2985, type: 3} + m_Name: DiagonalExpandAppearance + m_EditorClassIdentifier: + tagID: diagexp + baseDuration: 0.5 + diagonalFromBttmLeft: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta new file mode 100644 index 0000000..7d3f9e0 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/DiagonalExpandAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 580868ca94914f3a5b4799e19bbd3085 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset new file mode 100644 index 0000000..7a4d195 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6d26528e73e36f64dab95b69625232a7, type: 3} + m_Name: FadeAppearance + m_EditorClassIdentifier: + tagID: fade + baseDuration: 0.5 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta new file mode 100644 index 0000000..408f655 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/FadeAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 710e372fa4a13b1479b5e6d0a55db0c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset new file mode 100644 index 0000000..d8926ec --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3dbde6098d9bea441b3ac872e52073ba, type: 3} + m_Name: HorizontalExpandAppearance + m_EditorClassIdentifier: + tagID: horiexp + baseDuration: 0.5 + type: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta new file mode 100644 index 0000000..f8f416d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/HorizontalExpandAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7316dbc102f59da72978008734e90982 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset new file mode 100644 index 0000000..6a71275 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 146552007a93ecc42b0d63f26788e6cb, type: 3} + m_Name: OffsetAppearance + m_EditorClassIdentifier: + tagID: offset + baseDuration: 0.5 + baseAmount: 10 + baseDirection: {x: 1, y: 1} diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta new file mode 100644 index 0000000..48297fb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/OffsetAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5685734b8affc629680c1bbb91624508 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset new file mode 100644 index 0000000..ea2c3fd --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a65a9b7775dded41a0295e6f75be25d, type: 3} + m_Name: RandomDirectionAppearance + m_EditorClassIdentifier: + tagID: rdir + baseDuration: 0.5 + baseAmount: 10 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta new file mode 100644 index 0000000..223b9eb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RandomDirectionAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca89d2a16f2b8654ab5c938d2fe4ca84 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset new file mode 100644 index 0000000..6b93610 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 465a2951870a6954d8205f9c58a546de, type: 3} + m_Name: RotatingAppearance + m_EditorClassIdentifier: + tagID: rot + baseDuration: 0.7 + baseTargetAngle: 50 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta new file mode 100644 index 0000000..fe9d862 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/RotatingAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7dbe7206d95daeb80aaef048450d3d13 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset new file mode 100644 index 0000000..0d34f42 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ff5882c38f1b6c4682c7f207f0c98db, type: 3} + m_Name: SizeAppearance + m_EditorClassIdentifier: + tagID: size + baseDuration: 0.5 + baseAmplitude: 2 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta new file mode 100644 index 0000000..5b9709a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/SizeAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f85299684f332935b8ab73a6ff36a848 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset new file mode 100644 index 0000000..f9523bb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 351d9d9e5c9ea7946842aee1160f7731, type: 3} + m_Name: VerticalExpandAppearance + m_EditorClassIdentifier: + tagID: vertexp + baseDuration: 0.5 + startsFromBottom: 1 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta new file mode 100644 index 0000000..e4491d3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Appearances/VerticalExpandAppearance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b3c952806296327f9e007418fb4cdab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta new file mode 100644 index 0000000..9717522 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07d1ecb778bb73bfbb89c1eddb804202 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset new file mode 100644 index 0000000..84d6a88 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 103e863f5c0347be8a512f431aaf5ec1, type: 3} + m_Name: Behaviors Database + m_EditorClassIdentifier: + data: + - {fileID: 11400000, guid: 656a96850718f58f088b6f292e2437fe, type: 2} + - {fileID: 11400000, guid: 17f5322bade6132c9af4e88f9a2608dd, type: 2} + - {fileID: 11400000, guid: 7e93996a566440e0cb3a0bb99a5d24c7, type: 2} + - {fileID: 11400000, guid: 54e34e17bd344def4935c48b2c318c77, type: 2} + - {fileID: 11400000, guid: 74ee166c61550bc05b79c18b1f045558, type: 2} + - {fileID: 11400000, guid: b9dfc028dcb14496299bc95c2bfcce2c, type: 2} + - {fileID: 11400000, guid: 3312357f8bfb641fe9a1ef97387e9b7e, type: 2} + - {fileID: 11400000, guid: 5a4b74322b62c23e4ac0f1ed011ae2df, type: 2} + - {fileID: 11400000, guid: 64683658af55e22b2b00b4662f5d4fc5, type: 2} + - {fileID: 11400000, guid: 4025512822b51274db8dc40a8fbd2d12, type: 2} + - {fileID: 11400000, guid: e6c038789abd1bf0aae6cb1b2126a805, type: 2} + - {fileID: 11400000, guid: 59d46f00fa8da9799b72c7b9ee0a173a, type: 2} diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta new file mode 100644 index 0000000..d769fd3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/Behaviors Database.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1ab346c8b166fe1babb05950e874fb1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset new file mode 100644 index 0000000..b65fb95 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a333962955c4a08498d132d86d9ce19e, type: 3} + m_Name: BounceBehavior + m_EditorClassIdentifier: + tagID: bounce + baseAmplitude: 2 + baseFrequency: 1 + baseWaveSize: 0.05 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta new file mode 100644 index 0000000..861db06 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/BounceBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 656a96850718f58f088b6f292e2437fe +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset new file mode 100644 index 0000000..312e23b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01a91f0b9c670b242ae5c34286409cd9, type: 3} + m_Name: DangleBehavior + m_EditorClassIdentifier: + tagID: dangle + baseAmplitude: 7.87 + baseFrequency: 3.37 + baseWaveSize: 0.306 + anchorBottom: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta new file mode 100644 index 0000000..b40f576 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/DangleBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17f5322bade6132c9af4e88f9a2608dd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset new file mode 100644 index 0000000..9884468 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1f1dde3a46b6e748885a8d202c32044, type: 3} + m_Name: FadeBehavior + m_EditorClassIdentifier: + tagID: fade + baseSpeed: 0.5 + baseDelay: 1 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta new file mode 100644 index 0000000..5054d3f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/FadeBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7e93996a566440e0cb3a0bb99a5d24c7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset new file mode 100644 index 0000000..82bb9f1 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5005fc4984831834d826c8a9e3d42443, type: 3} + m_Name: PendulumBehavior + m_EditorClassIdentifier: + tagID: pend + baseAmplitude: 24.7 + baseFrequency: 3.1 + baseWaveSize: 0.2 + anchorBottom: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta new file mode 100644 index 0000000..59e5c6c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/PendulumBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 54e34e17bd344def4935c48b2c318c77 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset new file mode 100644 index 0000000..d39b5e2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5400420051c0a9341be4aece65080148, type: 3} + m_Name: RainbowBehavior + m_EditorClassIdentifier: + tagID: rainb + baseFrequency: 0.5 + baseWaveSize: 0.08 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta new file mode 100644 index 0000000..8a43c7b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RainbowBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74ee166c61550bc05b79c18b1f045558 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset new file mode 100644 index 0000000..f77fa84 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c179eec3e2795104eb216e340b8d8513, type: 3} + m_Name: RotationBehavior + m_EditorClassIdentifier: + tagID: rot + baseRotSpeed: 180 + baseDiffBetweenChars: 10 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta new file mode 100644 index 0000000..30ea32e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/RotationBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b9dfc028dcb14496299bc95c2bfcce2c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset new file mode 100644 index 0000000..b02c22a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 144066a43449f48469b89b2e2c9ab37d, type: 3} + m_Name: ShakeBehavior + m_EditorClassIdentifier: + tagID: shake + baseAmplitude: 1.13 + baseDelay: 0.1 + baseWaveSize: 0.45 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta new file mode 100644 index 0000000..fd289dc --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/ShakeBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3312357f8bfb641fe9a1ef97387e9b7e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset new file mode 100644 index 0000000..a447064 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6da0c21b80efda84188912ce510ee1ca, type: 3} + m_Name: SizeBehavior + m_EditorClassIdentifier: + tagID: incr + baseAmplitude: 1.5 + baseFrequency: 4 + baseWaveSize: 0.2 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta new file mode 100644 index 0000000..752641a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SizeBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5a4b74322b62c23e4ac0f1ed011ae2df +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset new file mode 100644 index 0000000..515aede --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a740b03d4c3f2d84f9cfc7b3a6f8ea80, type: 3} + m_Name: SlideBehavior + m_EditorClassIdentifier: + tagID: slide + baseAmplitude: 5 + baseFrequency: 3 + baseWaveSize: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta new file mode 100644 index 0000000..fb051d2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SlideBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64683658af55e22b2b00b4662f5d4fc5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset new file mode 100644 index 0000000..8288636 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b7822b5552d3748b1acc2a07066822, type: 3} + m_Name: SwingBehavior + m_EditorClassIdentifier: + tagID: swing + baseAmplitude: 22.74 + baseFrequency: 3.65 + baseWaveSize: 0.171 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta new file mode 100644 index 0000000..ee13dc4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/SwingBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4025512822b51274db8dc40a8fbd2d12 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset new file mode 100644 index 0000000..42b7dfa --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 99de7ce7cdaed2d42b0bd233e69e67db, type: 3} + m_Name: WaveBehavior + m_EditorClassIdentifier: + tagID: wave + baseAmplitude: 7.27 + baseFrequency: 4 + baseWaveSize: 0.4 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta new file mode 100644 index 0000000..cb46bca --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WaveBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6c038789abd1bf0aae6cb1b2126a805 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset new file mode 100644 index 0000000..363541c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c98870d7ebce9a4fa6c4a16e9701755, type: 3} + m_Name: WiggleBehavior + m_EditorClassIdentifier: + tagID: wiggle + baseAmplitude: 4.74 + baseFrequency: 7.82 + baseWaveSize: 0.551 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta new file mode 100644 index 0000000..861ef2b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Behaviors/WiggleBehavior.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59d46f00fa8da9799b72c7b9ee0a173a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset new file mode 100644 index 0000000..7a9b544 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e2a5ebb2c224910b14d053825d88b4a, type: 3} + m_Name: InstallationData + m_EditorClassIdentifier: + latestVersion: 2.0.2 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta new file mode 100644 index 0000000..e7cecde --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/InstallationData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73ab873d250d751aea5c0919aa4c705f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta b/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta new file mode 100644 index 0000000..9ee2b9c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d474c1e8238ea1a8baa2013d00d82747 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset new file mode 100644 index 0000000..98befbd --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset @@ -0,0 +1,29 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9743a50feedea474dbef99517d3e30eb, type: 3} + m_Name: TextAnimatorSettings + m_EditorClassIdentifier: + behaviors: + defaultDatabase: {fileID: 11400000, guid: d1ab346c8b166fe1babb05950e874fb1, type: 2} + enabled: 1 + openingSymbol: 60 + closingSymbol: 62 + appearances: + defaultDatabase: {fileID: 11400000, guid: 6f440ba43b95f6c7e90fa305a0bbda32, type: 2} + enabled: 1 + openingSymbol: 123 + closingSymbol: 125 + actions: + defaultDatabase: {fileID: 11400000, guid: 0f78b267c3825f804a4727a8b68c329d, type: 2} + enabled: 1 + openingSymbol: 60 + closingSymbol: 62 diff --git a/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta new file mode 100644 index 0000000..d925649 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Data/Resources/TextAnimatorSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35ca45d2ae32867448befbe9ae946a1c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example.meta b/Assets/Plugins/Febucci/Text Animator/Example.meta new file mode 100644 index 0000000..1881d16 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85011d1648ca8914cb0fc9500772569f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity new file mode 100644 index 0000000..72eafc4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity @@ -0,0 +1,535 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 49d28ee43fb9747d884ba6ecfade7616, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.62, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &903061070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903061074} + - component: {fileID: 903061073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!223 &903061073 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &903061074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1911804838} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1911804837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911804838} + - component: {fileID: 1911804840} + - component: {fileID: 1911804839} + - component: {fileID: 1911804841} + - component: {fileID: 1911804842} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1911804838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 903061074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: -84.9, y: -80.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1911804839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Hi! Welcome to TextAnimator; have fun bringing your dialogues to life! + + + Examples: + + I''m + freezing. + + I''m joking. + + It''s a secret. + + Oh, + how lucky. + + I''m confused. + + So happy right + now. + + Head over the next example scenes to discover more! + + + I''d + love to share the projects you create with TextAnimator! Let me know (if you + want) aand have a lovely day! ^^ + + Aaaaaaaaaaaaaand please do not + forget to leave a review, it really helps + ^^' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 1 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 61.6 + m_fontSizeBase: 53.61 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 15.56 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 29 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1911804840 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_CullTransparentMesh: 0 +--- !u!114 &1911804841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 1 + animationLoop: 0 + timeScale: 0 + _text: 'Hi! Welcome to TextAnimator; have fun bringing your dialogues to life! + + + Examples: + + I''m + freezing. + + I''m joking. + + It''s a secret. + + Oh, + how lucky. + + An EXPLOSION. + + I''m confused. + + So + happy right now. + + Head over the next example scenes to discover more! + + + I''d + love to share the projects you create with TextAnimator! Let me know (if you + want) aand have a lovely day! ^^ + + Aaaaaaaaaaaaaand please + do not forget to leave a review, it really + helps ^^' + useDynamicScaling: 1 + referenceFontSize: 5 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2} + databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc, + type: 2} + databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2} + defaultAppearancesTags: + - size + defaultDisappearancesTags: [] + defaultBehaviorsTags: [] + defaultTagsMode: 0 +--- !u!114 &1911804842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + onMessage: + m_PersistentCalls: + m_Calls: [] + waitForNormalChars: 0.02 + waitLong: 0.33333334 + waitMiddle: 0.06666667 + avoidMultiplePunctuactionWait: 0 + waitForNewLines: 1 + waitForLastCharacter: 1 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 diff --git a/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta new file mode 100644 index 0000000..90037ed --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/00 - Welcome.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6eaf322d703d50146afecde586026f57 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity new file mode 100644 index 0000000..04eee01 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity @@ -0,0 +1,639 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 2011447538} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &333414662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 333414663} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333414663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333414662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &349547107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349547109} + - component: {fileID: 349547108} + m_Layer: 0 + m_Name: Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &349547108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b97a825c489d94194a088dd18fedd2f0, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriter: {fileID: 1911804841} +--- !u!4 &349547109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.62, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &903061070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903061074} + - component: {fileID: 903061073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!223 &903061073 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &903061074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1911804838} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &923047835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923047836} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &923047836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923047835} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1911804837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911804838} + - component: {fileID: 1911804840} + - component: {fileID: 1911804839} + - component: {fileID: 1911804842} + - component: {fileID: 1911804841} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1911804838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 903061074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: -363.9, y: -506.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1911804839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Press play to watch the text animate + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 28.3 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1911804840 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_CullTransparentMesh: 0 +--- !u!114 &1911804841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + onMessage: + m_PersistentCalls: + m_Calls: [] + waitForNormalChars: 0.02 + waitLong: 0.6 + waitMiddle: 0.2 + avoidMultiplePunctuactionWait: 0 + waitForNewLines: 1 + waitForLastCharacter: 1 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 +--- !u!114 &1911804842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 0 + animationLoop: 0 + timeScale: 0 + _text: + useDynamicScaling: 1 + referenceFontSize: 40 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2} + databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc, + type: 2} + databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2} + defaultAppearancesTags: + - size + defaultDisappearancesTags: [] + defaultBehaviorsTags: [] + defaultTagsMode: 0 +--- !u!850595691 &2011447538 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta new file mode 100644 index 0000000..7f2c5aa --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1A - Effects.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 33f73b8875f94f64b867105f5c7d4747 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity new file mode 100644 index 0000000..7072f16 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity @@ -0,0 +1,650 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 567283253} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &333414662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 333414663} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333414663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333414662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &349547107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349547109} + - component: {fileID: 349547108} + m_Layer: 0 + m_Name: Formatted Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &349547108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3} + m_Name: + m_EditorClassIdentifier: + textAnimatorPlayer: {fileID: 1911804841} + textToShow: 'You can use multiple effects on the same + letters. YAY! + + + Example: writing "HEEEEY" + will result in "HEEEEY". + + + [Tip: if you have opened + multiple tags, you can use or {/} to close all of them + at once, instead of writing each single tag.]' +--- !u!4 &349547109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.62, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!850595691 &567283253 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 3 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 +--- !u!1 &903061070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903061074} + - component: {fileID: 903061073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!223 &903061073 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &903061074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1911804838} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &923047835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923047836} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &923047836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923047835} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1911804837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911804838} + - component: {fileID: 1911804840} + - component: {fileID: 1911804839} + - component: {fileID: 1911804842} + - component: {fileID: 1911804841} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1911804838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 903061074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: -84.9, y: -506.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1911804839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Press Play to watch how to stack effects on top of each other. + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 1 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 53.61 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1911804840 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_CullTransparentMesh: 0 +--- !u!114 &1911804841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + onMessage: + m_PersistentCalls: + m_Calls: [] + waitForNormalChars: 0.02 + waitLong: 0.6 + waitMiddle: 0.2 + avoidMultiplePunctuactionWait: 0 + waitForNewLines: 1 + waitForLastCharacter: 1 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 +--- !u!114 &1911804842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 0 + animationLoop: 0 + timeScale: 0 + _text: Press Play to watch how to stack effects on top of each other. + useDynamicScaling: 0 + referenceFontSize: -1 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2} + databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc, + type: 2} + databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2} + defaultAppearancesTags: + - rdir + defaultDisappearancesTags: [] + defaultBehaviorsTags: [] + defaultTagsMode: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta new file mode 100644 index 0000000..231b54f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1B - Stacks.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 82a6944f7c7c3fa47856f534f7482122 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity new file mode 100644 index 0000000..ccd37d3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity @@ -0,0 +1,593 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 384671842bbd047fdb6f337fea5de8cd, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &333414662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 333414663} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333414663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333414662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &349547107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349547109} + - component: {fileID: 349547108} + m_Layer: 0 + m_Name: Formatted Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &349547108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3} + m_Name: + m_EditorClassIdentifier: + textAnimatorPlayer: {fileID: 1911804841} + textToShow: 'You can use attributes to add similar effects with different values, + like: + + wiggle1 wiggle2 + + + + In + the previous example, the first tag is "". + + The + second tag is " a=2 f=2>", + which means it has a double ''amplitude'' and ''frequency'' + than the default one.' +--- !u!4 &349547109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.62, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &903061070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903061074} + - component: {fileID: 903061073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!223 &903061073 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &903061074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1911804838} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &923047835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923047836} + m_Layer: 0 + m_Name: --------------------- + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &923047836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923047835} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1911804837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911804838} + - component: {fileID: 1911804840} + - component: {fileID: 1911804839} + - component: {fileID: 1911804842} + - component: {fileID: 1911804841} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1911804838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 903061074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: -84.9, y: -506.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1911804839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Press play to watch similar effects with different values + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 1 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 53.61 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1911804840 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_CullTransparentMesh: 0 +--- !u!114 &1911804841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + onMessage: + m_PersistentCalls: + m_Calls: [] + waitForNormalChars: 0.02 + waitLong: 0.6 + waitMiddle: 0.2 + avoidMultiplePunctuactionWait: 0 + waitForNewLines: 1 + waitForLastCharacter: 1 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 +--- !u!114 &1911804842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 0 + animationLoop: 0 + timeScale: 0 + _text: Press play to watch similar effects with different values + useDynamicScaling: 0 + referenceFontSize: -1 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 11400000, guid: 143063c9d42da4bb3bdef3e969df1633, type: 2} + databaseAppearances: {fileID: 11400000, guid: efcefe34ffbda4c5eb7e39d858738fbc, + type: 2} + databaseActions: {fileID: 11400000, guid: 59963a936d6fb4257a79cffca6bafcbb, type: 2} + defaultAppearancesTags: + - vertexp + defaultDisappearancesTags: [] + defaultBehaviorsTags: [] + defaultTagsMode: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta new file mode 100644 index 0000000..f5b449a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 1C - Attributes.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 85ee4ca1f3a508347b883d20385a5eac +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity new file mode 100644 index 0000000..2d1303a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity @@ -0,0 +1,1645 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 49d28ee43fb9747d884ba6ecfade7616, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &86436864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 86436866} + - component: {fileID: 86436865} + m_Layer: 0 + m_Name: foliage_2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &86436865 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86436864} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &86436866 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 86436864} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 5.053, y: -2.343, z: 0} + m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &332677958 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 332677959} + - component: {fileID: 332677960} + m_Layer: 0 + m_Name: fake shadow (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &332677959 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332677958} + m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665} + m_LocalPosition: {x: 4.9811, y: -2.0548997, z: 0} + m_LocalScale: {x: 0.9463681, y: 0.879066, z: 0.045535617} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0} +--- !u!212 &332677960 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332677958} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -100 + m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db, + type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 0.20784314} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &376784909 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 376784910} + - component: {fileID: 376784912} + - component: {fileID: 376784911} + - component: {fileID: 376784914} + - component: {fileID: 376784913} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &376784910 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376784909} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 855521401} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.26, y: 0.19} + m_SizeDelta: {x: 4.8232, y: 1.5871} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &376784911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376784909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Press play to see an example of events + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 4.72 + m_fontSizeBase: 4.86 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 1.8 + m_fontSizeMax: 4.72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 376784912} + m_maskType: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 +--- !u!23 &376784912 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376784909} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &376784913 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376784909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + onMessage: + m_PersistentCalls: + m_Calls: [] + waitForNormalChars: 0.03 + waitLong: 0.6 + waitMiddle: 0.2 + avoidMultiplePunctuactionWait: 1 + waitForNewLines: 1 + waitForLastCharacter: 0 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 +--- !u!114 &376784914 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 376784909} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriterStartsAutomatically: 1 + animationLoop: 0 + timeScale: 0 + _text: Hello how + useDynamicScaling: 1 + referenceFontSize: 10 + isResettingTimeOnNewText: 1 + useDefaultDatabases: 1 + databaseBehaviors: {fileID: 0} + databaseAppearances: {fileID: 0} + databaseActions: {fileID: 0} + defaultAppearancesTags: + - diagexp + defaultDisappearancesTags: + - size + defaultBehaviorsTags: [] + defaultTagsMode: 0 +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.89, y: -0.48, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &557036334 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557036336} + - component: {fileID: 557036335} + m_Layer: 0 + m_Name: character + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &557036335 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557036334} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 3351748369286481944, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &557036336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 557036334} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.43, y: -2.4, z: 0} + m_LocalScale: {x: 1.14, y: 1.14, z: 1.14} + m_Children: + - {fileID: 1715889608} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &673277488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 673277490} + - component: {fileID: 673277489} + m_Layer: 0 + m_Name: crate_0 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &673277489 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673277488} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -1 + m_Sprite: {fileID: 834852548192020694, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &673277490 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673277488} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.973, y: -2.0629997, z: 0} + m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &835184617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 835184619} + - component: {fileID: 835184618} + m_Layer: 0 + m_Name: foliage_2 (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &835184618 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 835184617} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -1 + m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &835184619 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 835184617} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3.793, y: -2.2919998, z: 0} + m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &855521399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 855521401} + - component: {fileID: 855521400} + m_Layer: 0 + m_Name: dialogue box + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &855521400 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855521399} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 0ee0b44b8c03546a392c57dc59d85589, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 1 + m_Size: {x: 7.5092654, y: 3.6853285} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &855521401 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855521399} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.23, y: 0.26, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 376784910} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1242330695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242330697} + - component: {fileID: 1242330696} + m_Layer: 0 + m_Name: foliage_2 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1242330696 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242330695} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Sprite: {fileID: 9166712023175037457, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1242330697 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242330695} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.473, y: -2.7729998, z: 0} + m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1264690267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1264690269} + - component: {fileID: 1264690268} + m_Layer: 0 + m_Name: foliage_1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1264690268 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1264690267} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 1 + m_Sprite: {fileID: -7061757903698255618, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1264690269 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1264690267} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.093, y: -2.7629998, z: 0} + m_LocalScale: {x: 0.6723, y: 0.6723, z: 0.6723} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1625340089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1625340092} + - component: {fileID: 1625340091} + - component: {fileID: 1625340090} + m_Layer: 0 + m_Name: Continue text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1625340090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625340089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: (press any key to continue) + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4290690750 + m_fontColor: {r: 0.74509805, g: 0.74509805, b: 0.74509805, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18.65 + m_fontSizeBase: 12.12 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1625340091} + m_maskType: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 +--- !u!23 &1625340091 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625340089} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!224 &1625340092 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625340089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.18482, y: 0.18482, z: 0.18482} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1.45, y: -1.06} + m_SizeDelta: {x: 22.5552, y: 2.2409} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1694713420 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1694713421} + m_Layer: 0 + m_Name: Scenery + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1694713421 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694713420} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1823198194} + - {fileID: 673277490} + - {fileID: 1264690269} + - {fileID: 86436866} + - {fileID: 1242330697} + - {fileID: 835184619} + - {fileID: 1787796922} + - {fileID: 332677959} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1715889606 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1715889608} + - component: {fileID: 1715889607} + m_Layer: 0 + m_Name: fake shadow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1715889607 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715889606} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -100 + m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db, + type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 0.20784314} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1715889608 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1715889606} + m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665} + m_LocalPosition: {x: 0.009999986, y: 0.019999972, z: 0} + m_LocalScale: {x: 1.5824505, y: 1.4699122, z: 0.07614146} + m_Children: [] + m_Father: {fileID: 557036336} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0} +--- !u!1 &1787796920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1787796922} + - component: {fileID: 1787796921} + m_Layer: 0 + m_Name: fake shadow (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1787796921 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787796920} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: -100 + m_Sprite: {fileID: -2413806693520163455, guid: e074a9b4b276847b0b578d2c96d2c1db, + type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 0.20784314} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1787796922 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1787796920} + m_LocalRotation: {x: 0.5545259, y: -0, z: -0, w: 0.8321665} + m_LocalPosition: {x: 4.2630005, y: -2.5129998, z: 0} + m_LocalScale: {x: 1.1683557, y: 1.0852667, z: 0.05621681} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 67.356, y: 0, z: 0} +--- !u!1 &1790845101 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1790845102} + - component: {fileID: 1790845103} + m_Layer: 0 + m_Name: '[Script is here!]' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1790845102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790845101} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1790845103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1790845101} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 90f9467af4b1d44aab0c2f932db2b5a7, type: 3} + m_Name: + m_EditorClassIdentifier: + typewriter: {fileID: 376784913} + dialoguesLines: + - Hi! Welcome!! + - You can easily have characters change expressions mid-sentence.. + - Did you see it?? + - ' Probaby I was too too fast.' + - Noticed it now? + - These are named "Events", and can be called whenever a specific + part of the text is shown. + - Of course you can use them to make anything happen in your game, not + only characters! + - For example, you can make the scenery move word + after word! + - It's your turn now, there's no limit to creativity here!! + faces: + - {fileID: 3351748369286481944, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 567328745045655870, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 2750705142841656183, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: -7053939661997144990, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 1892523670701107293, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 405182146505222058, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 2785564300681498144, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + - {fileID: 6645427384175290001, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + faceRenderer: {fileID: 557036335} + continueText: {fileID: 1625340089} + crates: + - {fileID: 1823198194} + - {fileID: 673277490} +--- !u!1 &1823198192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1823198194} + - component: {fileID: 1823198193} + m_Layer: 0 + m_Name: crate_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1823198193 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823198192} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 834852548192020694, guid: 4dffe6eab57ca4e4ba2f967307bd1c29, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.2800001, y: 1.3002625} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1823198194 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1823198192} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.2530003, y: -2.5229998, z: 0} + m_LocalScale: {x: 0.83, y: 0.83, z: 0.83} + m_Children: [] + m_Father: {fileID: 1694713421} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta new file mode 100644 index 0000000..4c2a48e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 2 - Events.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b6a3261d7db5245c5b24f3ec0d4968b5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity new file mode 100644 index 0000000..4fbe0c7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity @@ -0,0 +1,664 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 2 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &333414662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 333414663} + m_Layer: 0 + m_Name: '---------------------' + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &333414663 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 333414662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &349547107 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 349547109} + - component: {fileID: 349547108} + m_Layer: 0 + m_Name: Formatted Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &349547108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 65cd2c622bcc2df47813a20bb2263361, type: 3} + m_Name: + m_EditorClassIdentifier: + textAnimatorPlayer: {fileID: 1911804841} + textToShow: 'You can use special tags to pause the typewriter until a certain action + is completed. + + + Example: + + + Waiting one second: done. + + Waiting three seconds: done. + + Waiting your input: done. + + + You can also create your own (via C#). + + Read the docs for more ^^' +--- !u!4 &349547109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 349547107} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.50578886, y: -0.5419356, z: -3.6875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 4.15 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.62, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &903061070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903061074} + - component: {fileID: 903061073} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!223 &903061073 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &903061074 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903061070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1911804838} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &923047835 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 923047836} + m_Layer: 0 + m_Name: '---------------------' + m_TagString: EditorOnly + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &923047836 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 923047835} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1911804837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1911804838} + - component: {fileID: 1911804840} + - component: {fileID: 1911804839} + - component: {fileID: 1911804842} + - component: {fileID: 1911804841} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1911804838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 903061074} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: -84.9, y: -506.8} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1911804839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: Press play to test typewriter actions + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, type: 2} + m_sharedMaterial: {fileID: 7453642021753212536, guid: 1ffb8c3515fb6dc4688eff5a7e48200f, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 1 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 72 + m_fontSizeBase: 53.61 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1911804839} + characterCount: 37 + spriteCount: 0 + spaceCount: 5 + wordCount: 6 + linkCount: 0 + lineCount: 2 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1911804840 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_CullTransparentMesh: 0 +--- !u!114 &1911804841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 57a6945b90dcd0c4b81619c0d8b5c283, type: 3} + m_Name: + m_EditorClassIdentifier: + useTypeWriter: 1 + startTypewriterMode: 3 + canSkipTypewriter: 1 + hideAppearancesOnSkip: 0 + triggerEventsOnSkip: 0 + resetTypingSpeedAtStartup: 1 + disappearanceOrientation: 0 + onTextShowed: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onTypewriterStart: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onTextDisappeared: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + onCharacterVisible: + m_PersistentCalls: + m_Calls: [] + m_TypeName: Febucci.UI.Core.CharacterEvent, Febucci.TextAnimator.Runtime, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + waitForNormalChars: 0.03 + waitLong: 0.6 + waitMiddle: 0.2 + avoidMultiplePunctuactionWait: 0 + waitForNewLines: 1 + waitForLastCharacter: 1 + useTypewriterWaitForDisappearances: 1 + disappearanceWaitTime: 0.015 + disappearanceSpeedMultiplier: 1 +--- !u!114 &1911804842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1911804837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e8ace8ced0e81c847968cdca0aeda757, type: 3} + m_Name: + m_EditorClassIdentifier: + triggerAnimPlayerOnChange: 0 + effectIntensityMultiplier: 100 + appearancesContainer: + tagsFallback_Appearances: + - rot + - fade + tagsFallback_Disappearances: + - size + values: + defaults: + sizeDuration: 0.36 + sizeAmplitude: 2 + fadeDuration: 0.3 + verticalExpandDuration: 0.3 + verticalFromBottom: 0 + horizontalExpandDuration: 0.3 + horizontalExpandStart: 0 + diagonalExpandDuration: 0.3 + diagonalFromBttmLeft: 0 + offsetDir: {x: 1, y: 1} + offsetDuration: 0.3 + offsetAmplitude: 1 + rotationDuration: 0.3 + rotationStartAngle: 180 + randomDirDuration: 0.3 + randomDirAmplitude: 1 + presets: [] + tags_fallbackBehaviors: [] + behaviorValues: + defaults: + wiggleAmplitude: 0.15 + wiggleFrequency: 8.9 + waveFrequency: 4.78 + waveAmplitude: 0.2 + waveWaveSize: 0.18 + angleSpeed: 180 + angleDiffBetweenChars: 10 + swingAmplitude: 27.5 + swingFrequency: 5 + swingWaveSize: 0 + shakeStrength: 0.085 + shakeDelay: 0.04 + sizeAmplitude: 1.4 + sizeFrequency: 4.84 + sizeWaveSize: 0.18 + slideAmplitude: 0.12 + slideFrequency: 5 + slideWaveSize: 0 + bounceAmplitude: 0.08 + bounceFrequency: 1 + bounceWaveSize: 0.08 + hueShiftSpeed: 0.8 + hueShiftWaveSize: 0.08 + fadeDelay: 1.2 + dangleAmplitude: 0.13 + dangleFrequency: 2.41 + dangleWaveSize: 0.18 + dangleAnchorBottom: 0 + pendAmplitude: 25 + pendFrequency: 3 + pendWaveSize: 0.2 + pendInverted: 0 + presets: [] + scriptable_globalBehaviorsValues: {fileID: 0} + scriptable_globalAppearancesValues: {fileID: 0} + useDynamicScaling: 0 + referenceFontSize: -1 + isResettingEffectsOnNewText: 1 + timeScale: 0 diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta new file mode 100644 index 0000000..be677bf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Example 3 - Actions.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba92474cac6c572459cd8fb75148ea94 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font.meta new file mode 100644 index 0000000..ab11377 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b13dc9321a13ef4383917b6db657d65 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset new file mode 100644 index 0000000..68cf88b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset @@ -0,0 +1,5367 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &-2340667833886341526 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Lato-Regular Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 1 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 1048576 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020eeffffeb6b000000000000000000000000000000000000177ac4e9fae7bd6f0d00000000000000000000000c6dbae5f9ebc77d1a000000000000000000000000000000000000007cffffffffa300000000000000000000000000000000000000009bffffffff80000000000000000000000000000064fffffffaaa06000000000000000000000000000000000000000010ffffffffffffffffffffffffffffffffffffffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000a56798080807807000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000c7e7f6b1f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000034fffffffffffffffffffffffffffffef6e9cdaa773b02000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d0000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000000000000000002c7ab9dff5fbf0d9b68445050000000000000000000028c5faffffffe12000000000000000000bedfffffa9e00000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff1800000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000000000000000000000000058ffffffff7b0000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000001aacf5ec8908000000000000000000000000000000000000000006478fc9e2f7f9eac7934903000000000000000000000ad9ffffffe833000000000000000000000000000fc9ffffffff8d0000000000000000000000000348727042010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffe4c0000000000000000000000000000000071f3ffffffffffffffea5900000000000000000054e8fffffffffffffff579010000000000000000000000000000000000cdfffffffff10700000000000000000000000000000000000004ecffffffffd0000000000000000000000000000003d7ffffffff8a00000000000000000000000000000000000000002fffffffffffffffffffffffffffffffffffffffffff3c00000000000000000000000000000000000000000000000000000000000000000000002de2fffffffffc51000000000000000000000000000358befdfffffffffffffffffffffffffab44c0100000000000000000000000000008efffff85f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c01000000000000000000000000000000000034ffffffffffffffffffffffffffffffffffffffffffe892240000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000000000000003ebdffffffffffffffffffffffed911a0000000000000028eaffffffffe3220000000000000000000082ffffffff4f000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000c0ffffffffe00200000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000007d7ffffffffa4000000000000000000000000000000000000076be4ffffffffffffffffffffe0530000000000000000000036fcffffffe10f000000000000000000000000a3ffffffffd60800000000000000000000000093ffffffff76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffffed1e000000000000000000000000000097ffffffffffffffffffffff780000000000000070feffffffffffffffffffffa5010000000000000000000000000000001effffffffffff4f00000000000000000000000000000000000047ffffffffffff21000000000000000000000000000053fffffffff619000000000000000000000000000000000000004effffffffffffffffffffffffffffffffffffffffff3c0000000000000000000000000000000000000000000000000000000000000000000026e9fffffffffe610000000000000000000000000055deffffffffffffffffffffffffffffffffffffd4470000000000000000000000000006d0fffffc3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd4470000000000000000000000000000000034fffffffffffffffffffffffffffffffffffffffffffffffda41c0000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000000000793fefffffffffffffffffffffffffffff78e150000000022e5ffffffffe625000000000000000000000015f6ffffffbf000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000000028ffffffffffff4b00000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000055ffffffffffff2a0000000000000000000000000000000023d3ffffffffffffffffffffffffffffb21200000000000000000082ffffffffa1000000000000000000000049fffffffffc350000000000000000000000000092ffffffff750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7ffffffc80500000000000000000000000067ffffffffffe6d1e6fffffffffe4e000000000042fdffffffffecd1dfffffffffff7c0000000000000000000000000000006effffffffffffa50000000000000000000000000000000000009dffffffffffff71000000000000000000000000000000c9ffffffff92000000000000000000000000000000000000006effffffffe4cccccccccccccccccccccccccccccccc2f0000000000000000000000000000000000000000000000000000000000000000001ee2ffffffffff7300000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000000000002af6ffffdf0f00000000074a82b5d8e9f8fbf0dcbb9057140000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e000000000000000000000000000034ffffffffffd2cccccccccccccccccdd6ecfffffffffffffffff463000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000000007b7ffffffffffffffecd3d2e2fdffffffffffffef4e00001cdfffffffffe8270000000000000000000000000095ffffffff2f0000000000000000000000000000000033cccccccccccccccccccccccccccccccccccccccccccccccccccc130000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000000000090ffffffffffffb300000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000078ffffffffffff4d0000000000000000000000000000003beffffffffffffff2d7d8f2ffffffffffffcd10000000000000000004ccffffffff520000000000000000000de2ffffffff8400000000000000000000000000008affffffff6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dedffffff8e000000000000000000000010f2ffffffbe2d0000002dbdffffffe40700000002d8ffffffd43e0000001da3fffffffb210000000000000000000000000000bffffffffffffff3080000000000000000000000000000000005edffffffffffffc200000000000000000000000000000041fffffffff81b0000000000000000000000000000000000008dffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016daffffffffff8600000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000006bffffffa700002d9beffffffffffffffffffffffffffcbb550300000000000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000000034ffffffffff200000000000000000000000114a97eeffffffffffff9c03000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000000a8ffffffffffed802500000000083d89e7fffffffffe891ad9ffffffffea2a000000000000000000000000000021fcffffff9d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000000000000009eefffffffffffffd1e000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000054ffffffffffff2700000000000000000000000000001feafffffffffda03801000000328ffaffffffffc805000000000000000028f6ffffffeb18000000000000000096ffffffffd005000000000000000000000000000082ffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffff4f0000000000000000000078ffffffc505000000000004c1ffffff6700000050ffffffe1110000000000009dffffff970000000000000000000000000013fcffffffffffffff520000000000000000000000000000000049fffffffffffffffd15000000000000000000000000000000b9ffffffff95000000000000000000000000000000000000acffffffff4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d0ffffffffff9800000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000b3ffffff76a1fdffffffffffffffffffffffffffffffffffdd550000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe82800000000000000000000000034ffffffffff2000000000000000000000000000000f88f7ffffffffffad03000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000054ffffffffffbb170000000000000000000978f0fffffffff7ffffffffec2d00000000000000000000000000000000a7fffffff715000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8ffffffffe93500000000000000000387fffffffffe470000000000000000000000000060fffffff7c7ffffff83000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000005d3ffffffff9f000000000000000000000000000001caffffffffeb3d00000000000000002bddffffffff790000000000000000006fffffffffb4000000000000003dfefffffff92f0000000000000000000000000000007affffffff5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089ffffffef20000000000000000000c6ffffff380000000000000031ffffffba0000009effffff600000000000000012f6ffffe90100000000000000000000000060ffffffffffffffffa8000000000000000000000000000000009fffffffffffffffff6300000000000000000000000000000031fefffffff91e0000000000000000000000000000000000cbffffffff2a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc5ffffffffffa902000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe018000000000000000000000015e8ffffffffffffffffffffffffffffffffffffffffffffffffb6170000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe018000000000000000000000034ffffffffff200000000000000000000000000000000021d6ffffffffff9800000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000004e1ffffffffc10700000000000000000000000016c0ffffffffffffffee30000000000000000000000000000000000030ffffffff7b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000000c8ffffffc585ffffffe6040000000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000016a7f4ea8406000000000000000000000000000057fffffffff52c0000000000000000000020e6fffffff620000000000000000001bcffffffff66000000000008d9ffffffff7b0000000000000000000000000000000073ffffffff570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c3ffffffca060000000000000008faffffe5000000000000000000dbfffff7050000dbfffffe0f0000000000000000b3ffffff2d000000000000000000000000b1ffffffffe6fffffff40a000000000000000000000000000005eeffffffedffffffffb400000000000000000000000000000000a8ffffffff990000000000000000000000000000000000ebffffffff0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bbffffffffffb805000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb0100000000000000000000004affffffffffffffffffffffffffffffffffffffffffffffffffe732000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000000000034ffffffffff20000000000000000000000000000000000011c1ffffffffff5c0000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000048fffffffff621000000000000000000000000000004a4ffffffffffef3300000000000000000000000000000000000000baffffffe505000000000000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d00000000000000000000002fffffffff823dffffffff520000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6ffffffff6900000000000000000000000057ffffffff920000000000000000001deffffffff4230000000088ffffffffc903000000000000000000000000000000006bffffffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bebffffff91000000000000001fffffffb9000000000000000000abffffff1b0000f7ffffe100000000000000000083ffffff4b00000000000000000000000af6ffffffff82ffffffff5500000000000000000000000000004bffffffff9af0fffffff80c00000000000000000000000000000024fafffffffa200000000000000000000000000000000affffffffee000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbefd6b2753406aeffffffffffc50a00000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b0000000000000000000004a3ffffffffffffffe092572b13050b1f3462a7ebfffffffffffffff3390000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b0000000000000000000034ffffffffff200000000000000000000000000000000000000eddfffffffff1170000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc4000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400008affffffffa600000000000000000000000000000028e5ffffffffff6f000000000000000000000000000000000000000043ffffffff59000000000000000000000000000000000000000000000000001cffffffe80000000000000000000000000000002bfffffffff1090000000000000000000000000076ffffffffb2000000000000000000000097ffffffff3602e9ffffffba0000000000000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffffe20500000000000000000000000000c9ffffffeb050000000000000000005cffffffffc503000032fbfffffff728000000000000000000000000000000000063ffffffff4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047feffffff5300000000000031ffffffa90000000000000000009affffff300009ffffffd100000000000000000072ffffff60000000000000000000000052fffffffffd18f6ffffffab0000000000000000000000000000a1ffffffff55bcffffffff550000000000000000000000000000000096ffffffff9d00000000000000000000000000000029ffffffffd00000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffff8ffffffffffd21100000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed11000000000000000001a8ffffffffffffd4480000000000000000000000035fdbffffffffffffee28000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed1100000000000000000034ffffffffff200000000000000000000000000000000000000036fbffffffff9a0000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000b0ffffffff6000000000000000000000000000002de9ffffffffffffde080000000000000000000000000000000000000000ccffffffc9000000000000000000000000000000000000000000000000001cffffffe80000000000000000000000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000cf2ffffffdb010090fffffffe2300000000000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074ffffffff84000000000000000000000000000067ffffffff4d00000000000000000000aaffffffff790004cfffffffff730000000000000000000000000000000000005bffffffff410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085fffffff02300000000002bffffffad0000000000000000009fffffff2a0004ffffffd500000000000000000077ffffff5a0000000000000000000000a3ffffffffcc00b6fffffff60b00000000000000000000000006f0fffffff80d7fffffffffa60000000000000000000000000000000018f5fffffffb23000000000000000000000000000049ffffffffb1000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffffffdd190000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d000000000000000082ffffffffffffffec2000000000000000000000000000037efeffffffffffd2080000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d00000000000000000034ffffffffff20000000000000000000000000000000000000000091fffffffffb1c000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000bcffffffff450000000000000000000000000032ecffffffffffffffff7e000000000000000000000000000000000000000056ffffffff380000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000067ffffffff7700002affffffff8a00000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adffffffff43000000000000000000000000000012fdffffff8f0000000000000000000013e6fffffffa237affffffffc30200000000000000000000000000000000000053ffffffff3a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c0ffffffcd070000000019ffffffc4000000000000000000b7ffffff180000f1ffffec0000000000000000008fffffff470000000000000000000004eeffffffff820062ffffffff580000000000000000000000004dffffffffb00036fffffffff0060000000000000000000000000000000085ffffffffffffffffffffffffffffffffffffffffffffffff9300000000000000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffff6a0000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000003dfefffffffff0f9ffffce0900000000000000000000000000004ff4ffffffffff8700000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe905000000000000000034ffffffffff20000000000000000000000000000000000000000021fcffffffff860000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc40000abffffffff4700000000000000000000000037efffffffffeb93fffffff40f000000000000000000000000000000000000005effffffffa70000000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b000000000000000000cefffffffb17000000c5ffffffeb07000000000000000000000000000000000000001cffffffe8000000000000000000000000000033cccccccccccccccccccccccccccccccccccccccccccccccccccc130000c5ffffffff19000000000000000000000000000000d7ffffffc1000000000000000000000049ffffffffaef8fffffff423000000000000000000000000000000000000004cffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019e9ffffff950000000002effffff3050000000000000003edffffef020000caffffff210000000000000000c9ffffff200000000000000000000044ffffffffff350010f9ffffffae000000000000000000000000a2ffffffff590001e7ffffffff47000000000000000000000000000000000fedffffffffffffffffffffffffffffffffffffffffffffff75000000000000000000000000000000000000000000000000000030e6fffffffffffffffffffffffffffffffffffffffffffffffe8d03000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000005dafffffffffc4769ffffffa100000000000000000000000000000056fffffffffff922000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000000034ffffffffff20000000000000000000000000000000000000000000adffffffffdf0000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000089ffffffff6d00000000000000000000003cf2ffffffffe92c06e2ffffff6c00000000000000000000000000000000000000cefffffffffb1b00000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000037ffffffffaf0000000060ffffffff5a000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000daffffffff07000000000000000000000000000000a2fffffff101000000000000000000000098ffffffffffffffff6a000000000000000000000000000000000000000044ffffffff2b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044fdffffff5700000000b3ffffff590000000000000053ffffffb20000008bffffff81000000000000002bffffffdf000000000000000000000095ffffffffe7010000b3fffffff70d0000000000000000000007f0fffffff60c00009cffffffff97000000000000000000000000000000000074ffffffffffffffffffffffffffffffffffffffffffffff570000000000000000000000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffab0500000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000066ffffffffff7700009effffff6c0000000000000000000000000000008effffffffff980000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000000000034ffffffffff200000000000000000000000000000000000000000005dffffffffff2f0000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000045ffffffffb80000000000000000000042f4ffffffffe82a000077ffffffd400000000000000000000000000000000000040ffffffffffff8500000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000faffffffff120000000000000000000000000000008bffffffff8200000000000000009fffffffff4b0000000009f0ffffffc1000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000e0ffffffff0400000000000000000000000000000081ffffffff1800000000000000000000000bdbffffffffffffbb0100000000000000000000000000000000000000003cffffffff230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081fffffff2250000005affffffe51b000000000019e2ffffff5a00000032fffffff63100000000000bc8ffffff860000000000000000000001e4ffffffff9b0000005bffffffff5b000000000000000000004effffffffab0000004fffffffffe6010000000000000000000000000000000008e2ffffffffe2ccccccccccccccccccccccccf8ffffffff3900000000000000000000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffab01000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000001ddffffffffdc04000008cbfffffa3c00000000000000000000000000000aeafffffffff71000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd7000000000000000034ffffffffff2000000000000000000000000000000000000000000021ffffffffff6b0000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff580000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc4000005e0fffffffd2c000000000000000048f7ffffffffe6280000001afcffffff260000000000000000000000000000000000b0ffffffffffffeb08000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000f9ffffffff130000000000000000000000000000008cffffffff810000000000000010f6ffffffe303000000000095ffffffff2a0000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000cbffffffff160000000000000000000000000000006dffffffff28000000000000000000000000bbffffffffffff4d00000000000000000000000000000000000000000034ffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bdffffffd008000004ddffffffe5651b051b65e4ffffffdf0400000000bafffffff27723061454d3fffffff6170000000000000000000036ffffffffff4e0000000cf6ffffffb100000000000000000000a4ffffffff540000000af7ffffffff39000000000000000000000000000000000063ffffffffbc000000000000000000000000efffffffff1b000000000000000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffff7b000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d00000042ffffffffff61000000001eebffffe71a000000000000000000000000000079ffffffffff6000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000034ffffffffff2000000000000000000000000000000000000000000000e3ffffffff9e000000000000000076ffffffffab000000000000000000000000002fffffffffea060000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000066ffffffffc6050000000000004ef9ffffffffe5260000000000c7ffffff650000000000000000000000000000000023fdffffffffffffff63000000000000000000000000000000000000000000001cffffffe8000000000000000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000006effffffff820000000000002fffffffff910000000000000033ccccccccccccccccccccd1fffffffbcccccccccccccccccccccc130000000000000000000000000000000000000000000000000000000000000000b2ffffffff410000000000000000000000000000005dffffffff36000000000000000000000066ffffffffffffffd80900000000000000000000000000000000000000002cffffffff15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017e7ffffff990000003dfcfffffffffffffffffffffffc3e000000000021f0ffffffffffffffffffffffff65000000000000000000000086fffffffff70a00000000acfffffff80f000000000000000007f1fffffff30900000000b5ffffffff89000000000000000000000000000000000003d6ffffffff41000000000000000000000efffffffffa02000000000000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6fffffffffd370000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f00000098ffffffffe904000000000043fcffffc506000000000000000000000000000ffaffffffffae00000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000034ffffffffff2000000000000000000000000000000000000000000000beffffffffc0000000000000000015f9fffffffa1600000000000000000000000095ffffffff89000000000000000000fcffffffe8000000000000000000000098ffffffff4c0000000000000000000020ffffffffc400000001bdffffffff9f020000000055faffffffffe32400000000000083ffffffa50000000000000000000000000000000092ffffffffc7ffffffd2000000000000000000000033ccccccccccccccccccccd1fffffffbcccccccccccccccccccccc13000000d3ffffffff38000000000000000000000000000000b2ffffffff5a00000000000000d5fffffffe2000000000000000caffffffef0900000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078ffffffff82000000000000000000000000000000a6ffffffff450000000000000000000020f2fffffff0ebffffff91000000000000000000000000000000000000000025ffffffff0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040fcffffff5a0000005ffbfffffffffffffffffffa5f0000000000000041f1ffffffffffffffffffff86000000000000000000000000d7ffffffffb5000000000054ffffffff5e000000000000000050ffffffffa6000000000068ffffffffda00000000000000000000000000000000000051ffffffffc5000000000000000000002fffffffffde000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffce0300000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c000000daffffffff9b0000000000000075ffffff960000000000000000000000000000c4ffffffffe900000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c0000000000000034ffffffffff2000000000000000000000000000000000000000000000acffffffffdd000000000000000000a7ffffffff7600000000000000000000000af0fffffffe23000000000000000000fcffffffe8000000000000000000000099ffffffff4d0000000000000000000021ffffffffc20000000018dcffffffffae0f00005bfcffffffffe123000000000000004effffffcf0000000000000000000000000000000ff3ffffffec40ffffffff410000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff18000000aaffffffff66000000000000000000000000000000e1ffffffff320000000000003effffffffb9000000000000000065ffffffff6100000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffe404000000000000000000000000002bfcffffffff4400000000000000000001beffffffff6980fffffffe44000000000000000000000000000000000000001dffffffff06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dfffffff3280000003ed0ffffffffffffffcf3d00000000000000000029bcffffffffffffffe15800000000000000000000000027ffffffffff68000000000009f3ffffffb40000000000000000a6ffffffff4f00000000001bffffffffff2b000000000000000000000000000000000000c8ffffffff4a0000000000000000004fffffffffffffffffffffffffffffffffffffffa8000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff5b0000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000014ffffffffff5e0000000000000000aaffffff610000000000000000000000000081ffffffffff1a00006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff580000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000009affffffffe900000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000fcffffffe80000000000000000000000a5ffffffff5e000000000000000000002effffffffb3000000000021daffffffffe15462fdffffffffe021000000000000000024ffffffe700000000000000000000000000000074ffffffff9701ddffffffb00000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff180000006affffffffa200000000000000000000000000001dffffffffef02000000000000a6ffffffff5500000000000000000cf2ffffffc900000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d2ffffffff7300000000000000000000000004c7ffffffffff380000000000000000006dffffffffc4010fe4ffffffe31000000000000000000000000000000000000015fffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b9ffffffd30900000002438eb4c5b38d41010000000000000000000000003583b0c5b7964e070000000000000000000000000078ffffffffff1c000000000000a5fffffff91100000000000008f3fffffff107000000000000ceffffffff7b00000000000000000000000000000000000040ffffffffce0100000000000000006fffffffffffffffffffffffffffffffffffffffa80000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffcc00000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100003affffffffff3000000000000000000cd4fffff7340000000000000000000000004effffffffff3c000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff610000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000008cfffffffff100000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000fcffffffe80000000000000000000000bfffffffff84000000000000000000004bffffffffa100000000000010b1ffffffffffffffffffffde1f00000000000000000000c5fffffc020000000000000000000000000003e1ffffffff2d0076fffffffd2200000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffff1800000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000014f8ffffffea060000000000000000009affffffff31000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000001aacf5ec8908000000000000000000000000000058fffffffff83e0000000000000000000002a0ffffffffffff2b000000000000000024f5fffffff92a00004bffffffffa40000000000000000000000000000000000000dfffffff700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e5f9edcb84220000000015e5ffffff9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9ffffffffce000000000000004dffffffff6100000000000052ffffffffa10000000000000081ffffffffcc00000000000000000000000000000000000000b8ffffffff5300000000000000008fffffffffffffffffffffffffffffffffffffffa80000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff3300000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800005bffffffffff1000000000000000000025f0ffffe11400000000000000000000003affffffffff5200006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff580000a0ffffffffffffffffffffffffffffffffffffffff9c0000000000000000000000009bffffffffe80000000000000000000071ffffffffa70000000000000000002bffffffffe70400000000000000000000fcfffffff10c00000000000000000005f0ffffffffd10000000000000000000086ffffffff77000000000000000057e2ffffffffffffffdc1d000000000000000000000000000000000000000000000000000000000056ffffffffbf000013f7ffffff8e00000000000000000000000000000000000000001cffffffe800000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000076ffffffff8c0000000000000000000034ffffffff98000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000007d7ffffffffa4000000000000000000000000000002c0fffffffff762010000000000000019b8ffffffffffffff0d0000000000000002c4ffffffff8100000000a1ffffffff55000000000000000000000000000000000005ffffffef0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059eafffffffffffffffa8e050000003dfcffffff5f000000000000000000000000000000000000000000000000000000000000000000000000000000000000001afeffffffff810000000000000006efffffffb7000000000000a8ffffffff4a0000000000000034ffffffffff1d00000000000000000000000000000000000030feffffffd50200000000000000afffffffffd9cccccccccccccccccccccccccccc8500000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff81000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b00006affffffffff01000000000000000000004dfeffffbd030000000000000000000026ffffffffff5d000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000000000034ffffffffff2000000000000000000000000000000000000000000000adffffffffdc0000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000fcffffffffba05000000000000000053ffffffffffff50000000000000000009e4ffffffff3c0000000000000000000689ffffffffffda1b000000000000000000000000000000000000000000000000000000000000c7ffffffff52000000a1fffffff10c000000000000000000000000000000000000001cffffffe80000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf00000000000001dcffffffff280000000000000000000000cefffffff30d0000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000055ffffffffffff2a000000000000000000000000000019e9ffffffffffcd712d1306184897f6fffffea4ffffffe5000000000000000074ffffffffd8070000000010e6ffffffed190000000000000000000000000000000000fdffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffbe0800000078fffffff52a0000000000000000000000000000000000000000000000000000000000000000000000000000000000006affffffffff3400000000000000009efffffffb130000000009f4ffffffed050000000000000001e5ffffffff6d00000000000000000000000000000000000000a6ffffffff5c00000000000000cfffffffff3100000000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffca000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d000074fffffffffb00000000000000000000000082ffffff8b0000000000000000000019ffffffffff5e000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000000000034ffffffffff2000000000000000000000000000000000000000000000beffffffffc00000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000fcffffffffffbc1500000000000014dfffffffc6ffffed2c0000000000000098ffffffffe40400000000000000000007d0ffffffffda1a00000000000000000000000000000000000000000000000000000000000037ffffffffe00300000037ffffffff6c000000000000000000000000000000000000001cffffffe80000000000000000000000000000000000b3ffffffffea370000000000000000048afffffffffd4200000000000045ffffffffc400000000000000000000000069ffffffff680000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000078ffffffffffff4d0000000000000000000000000000002ee4fffffffffffffffffffffffffffffe6985ffffffb90000000000000029f7fffffffe3e0000000000004dffffffffb60000000000000000000000000000000000f6ffffe1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050ffffffffffecd1ddfeffffffff9f00000001b5ffffffd50b0000000000000000000000000000000000000000000000000000000000000000000000000000000000bbffffffffe601000000000000000046ffffffff640000000054ffffffff9c0000000000000000009affffffffbe0000000000000000000000000000000000000023faffffffdc04000000000000efffffffff1200000000000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffff8030000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c000070ffffffffff0c000000000000000000000001b5ffffff560000000000000000002affffffffff53000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000034ffffffffff2000000000000000000000000000000000000000000000e5ffffffff9e00000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000fcfffffff6ffffe6710e0000034adafffffffd25ccfffff377140000002db0ffffffffff79000000000000000000008affffffffe11c00000000000000000000000000000000000000000000000000000000000000a8ffffffff760000000000ccffffffda010000000000000000000000000000000000001cffffffe8000000000000000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff8000000000000000adffffffff5f0000000000000000000000000ef5ffffffd00000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000054ffffffffffff27000000000000000000000000000000001dc6fffffffffffffffffffffffff05100c7ffffff7900000000000003caffffffff9a0000000000000000a4ffffffff6700000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e0ffffffce3a000000178fffffffff3b00000013e2ffffffa10000000000000000000000000000000000000000000000000000000000000000000000000000000010faffffffff9a00000000000000000003eaffffffba00000000a9ffffffff440000000000000000004dfffffffffb120000000000000000000000000000000000000095ffffffff6500000000000efffffffff20000000000000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff270000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd300000065ffffffffff1f00000000000000000000000010dcfffff42c00000000000000003dffffffffff40000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000000000000034ffffffffff2000000000000000000000000000000000000000000023ffffffffff69000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e000000000000000000000000fcffffff87a6fffffffee3d5f2ffffffffffa2002bf6fffffffdded2e9ffffffffffffd2070000000000000000001df8fffffff62d000000000000000000000000000000000000000000000000000000000000001dfbfffffff612000000000062ffffffff4b0000000000000000000000000000000000001cffffffe80000000000000000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff980200000000000019fbfffffff00a000000000000000000000000009fffffffff3800000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000005d3ffffffff9f000000000000000000000000000000000000015addfffffffffffffffff696170018fdffffff350000000000007bffffffffe710000000000000000012e7fffffff424000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffda0d0000000000007effffffb5000000003afbffffff620000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffff4d0000000000000000000097fffffffb1400000af4ffffffea0300000000000000000009f6ffffffff5f0000000000000000000000000000000000000017f4ffffffe207000000002fffffffffd30000000000000000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff460000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000004bffffffffff35000000000000000000000000002df5ffffdb100000000000000058ffffffffff1d000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff95000000000000000034ffffffffff200000000000000000000000000000000000000000005fffffffffff2d0000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000fcffffff6704a1ffffffffffffffffffffdf12000043f4ffffffffffffffffffffffe1260000000000000000000095ffffffff7000000000000000000000000000000000000000000000000000000000000000008affffffff9b00000000000009eeffffffba0000000000000000000000000000000000001cffffffe80000000000000000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000007dffffffff97000000000000000000000000000039ffffffffa000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000016a7f4ea84060000000000000000000000000000000000000000013b7ea9c1c7ba965a1000000079ffffffdd0100000000002ef9ffffffff55000000000000000000004fffffffffc6030000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffff590000000000000006e4fffff90b0000000074fffffff62d0000000000000000000000000000000000000000000000000000000000000000000000000000adfffffffff60a000000000000000000003fffffffff67000055ffffffff960000000000000000000000b3ffffffffaf000000000000000000000000000000000000000084ffffffff6e000000004effffffffb4000000000000000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff5300000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000028ffffffffff6c000000000000000000000000000058ffffffb40100000000000095fffffffff1010000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000034ffffffffff20000000000000000000000000000000000000000000b1ffffffffdc000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000fcffffff4a000062f3ffffffffffffffd4220000000026c2ffffffffffffffffffb31a0000000000000000000002e9ffffffe504000000000000000000000000000000000000000000000000000000000000000befffffffff2e000000000000008dffffffff2a00000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000002e1ffffffff32000000000000000000000000000000d3fffffff611000000000000000000000000001cffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000be7ffffff7b000000000005cfffffffffb3000000000000000000000000a7ffffffff7a0000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dafffffc0d000000000000000099ffffff420000000001b2ffffffd80c00000000000000000000000000000000000000000000000000000000000000000000000008f4ffffffffb3000000000000000000000002e5ffffffbd0000abffffffff3f000000000000000000000066fffffffff60a000000000000000000000000000000000000000eecffffffe80a0000006effffffff940000000000000000000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000003f2ffffffffae0000000000000000000000000000008fffffff80000000000000d5ffffffffb5000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe403000000000000000034ffffffffff20000000000000000000000000000000000000000024fdffffffff8300000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000fcffffd30c000000157bc5eefbecbe6908000000000000003d94cdf0fae9ce8d3800000000000000000000000033ffffffff8200000000000000000000000000000000000000000000000000000000000000006cffffffffc0000000000000000024feffffff9800000000000000000000000000000000001cffffffe80000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f17000000000000000000004dfffffffb8f0000000000000000000000000000000042eeffffff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008afffffff416000000000082ffffffffd91a00000000000000000000000010c7fffffffa3100000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2ffffe300000000000000000070ffffff5b000000000011e0ffffffa50000000000000000000000000000000000000000000000000000000000000000000000004effffffffff6700000000000000000000000090fffffffc170bf5ffffffe602000000000000000000000019feffffffff51000000000000000000000000000000000000000073ffffffff770000008effffffff75000000000000000000000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5a00000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000000baffffffffee07000000000000000000000000000004bffffffe4d0000000029ffffffffff6e000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000034ffffffffff20000000000000000000000000000000000000000095fffffffff919000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054ffffffff4b0000000000000000000000000000000000000000000000000000000000000002dbffffffff53000000000000000000b9fffffff512000000000000000000000000000000001cffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b62a6d1eefbf4dfc995521000000000000000000000000000000000000000000009b62f0000000000004dfeffffff85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feffffd800000000000000000064ffffff6a00000000000037faffffff6600000000000000000000000000000000000000000000000000000000000000000000009effffffffff1b00000000000000000000000038ffffffff6956ffffffff9100000000000000000000000000cbffffffffa1000000000000000000000000000000000000000007e2ffffffed0e0000aeffffffff560000000000000000000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4e0000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000006bffffffffff6800000000000000000000000000000016e3fffff0250000009cfffffffffc1600000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000034ffffffffff20000000000000000000000000000000000000003afcffffffff9500000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069ffffffff2f000000000000000000000000000000000000000000000000000000000000004effffffffe2030000000000000000004effffffff76000000000000000000000000000000001cffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018f6fffff4ae1200000000000000000000000000000000000000000000000357c9fffffffffffffffffffffff79621000000000000000000000000000000000000007efff86f0000000026efffffffe00e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0ffffe500000000000000000072ffffff5b0000000000000070fffffff73000000000000000000000000000000000000000000000000000000000000000000003ebffffffffcd0000000000000000000000000000deffffffb7a9ffffffff3a000000000000000000000000007effffffffee04000000000000000000000000000000000000000061ffffffff800000ceffffffff370000000000000000000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff33000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff6100000000000016f9ffffffffdf0400000000000000000000000000000036f8ffffd40b001ff8ffffffffaa000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000034ffffffffff200000000000000000000000000000000000000fdfffffffffef140000000000000000000000000000000067ffffffff9d0021feffffffe0020000000000000000000000000000000000000063fffbcb2f000000000000000000000000000000000000000064ffff9c00000000000000000000005bffffffff3f0000000000000000000016bcbb8b5b06000000000000000000000000000000beffffffff780000000000000000000002e0ffffffe2030000000000000000000000000000001cffffffe80000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000126bb2e0f8fae9cc934a02000000000000000000000000008effffffffba0000000000000000000000000000000000000000000054dcfffffffffffffffffffffffffffffffb7b020000000000000000000000000000000000aeffffffb515003decfffffffd3d00000000000000000000000000000000054a73714502000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8fffffe110000000000000000a0ffffff430000000000000000aeffffffda0d000000000000000000000000000000000000000000000000000000000000000040ffffffffff80000000000000000000000000000088fffffff3edffffffe2010000000000000000000000000031ffffffffff43000000000000000000000000000000000000000003d5fffffff21100eeffffffff170000000000000000000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008affffffffff100000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb00000000000000000a0ffffffffff820000000000000000000000000000000065ffffffaa03c3fffffffffe2f0000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb0000000000000000000000034ffffffffff20000000000000000000000000000000000012c4ffffffffff5600000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000001c7ffffe4100000000000000000000000000000000000000064ffff9c00000000000000000000003bffffffff7e0000000000000000000084fffffffa0500000000000000000000000000002ffffffffff713000000000000000000000079ffffffff5400000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000a7ff5ffffffffffffffffffde5400000000000000000000000016f5ffffffff440000000000000000000000000000000000000000a3ffffffffffffffffead6d3e7fdffffffffffffba0e0000000000000000000000000000000014b4ffffffe784f9ffffffff6c000000000000000000000000000000000093ffffffff77000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fffffff620000000000000009ebfffffb0c000000000000000010deffffffa9000000000000000000000000000000000000000000000000000000000000000090ffffffffff33000000000000000000000000000031ffffffffffffffff8c000000000000000000000000000000e3ffffffff9300000000000000000000000000000000000000000050ffffffff760dfffffffff7010000000000000000000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffdb0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd712000000000000000026fafffffffffe4c000000000000000000000000000000009bffffffc9ffffffffff9b0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd712000000000000000000000034ffffffffff200000000000000000000000000000000023d8ffffffffff920000000000000000000000000000000000000098ffffffff46d2fffffffb1800000000000000000000000000000000000000000031fcffff930000000000000000000000000000000000000064ffff9c000000000000000000000004efffffffe80d000000000000000016ebffffffc8000000000000000000000000000000a0ffffffff9d00000000000000000000000015f9ffffffc300000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000033e0ffffffffffffffffffffffffff9d0200000000000000000000008affffffffc400000000000000000000000000000000000000007dffffffffffcc681c000000001257c5ffffffffffbb05000000000000000000000000000000000065f3ffffffffffffff820000000000000000000000000000000000008affffffff6e000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffe11200000000000089ffffffbc0000000000000000000033f9ffffff6a00000000000000000000000000000000000000000000000000000000000000e0ffffffffe501000000000000000000000000000000d8ffffffffffffff3500000000000000000000000000000097ffffffffe300000000000000000000000000000000000000000000c7ffffffe02fffffffffd8000000000000000000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff9e000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000000008cfffffffffff24b00000000000000000000000000000007c9ffffffffffffffe311000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe02000000000000000000000000034ffffffffff200000000000000000000000000000118bf8ffffffffffa9020000000000000000000000000000000000000030ffffffffb1ffffffffac000000000000000000000000000000000000000000000095fffffc3100000000000000000000000000000000000064ffff9c00000000000000000000000094ffffffffb60a00000000000007c1ffffffff68000000000000000000000000000018f9ffffffff2f00000000000000000000000000a5ffffffff33000000000000000000054785b8daf1fbf5e1cc9c57130000000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080036f6fffffffffffee0d0defeffffffffff97000000000000000000000014f3ffffffff440000000000000000000000000000000000000003c2ffffcf460000000000000000000059f5ffffffff9b000000000000000000000000000000000654cbfffffffffffe71000000000000000000000000000000000000007dffffffff62000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ddffffffd43f0100001a96ffffffff4700000000000000000000006cfffffff832000000000000000000000000000000000000000000000000000000000031ffffffffff990000000000000000000000000000000081ffffffffffffde000000000000000000000000000000004affffffffff340000000000000000000000000000000000000000003fffffffff8bffffffffb90000000000000000000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4e000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000000000009d4fffffffffffd7803000000000000000000000000000037fffffffffffff83600000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b0000000000000000000000000034ffffffffff200000000000000000000000124d9bf0ffffffffffff9803000000000000000000000000000000000000000000c9ffffffffffffffff44000000000000000000000000000000000000000000000010e9ffffc601000000000000000000000000000000000064ffff9c00000000000000000000000016f1ffffffffd6550900000449d1ffffffffd706000000000000000000000000000082ffffffffc200000000000000000000000000003affffffffa100000000000000188deffffffffffffffffffffffff8951d000000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080009deffffffdc6812000000147df8ffffffff46000000000000000000000086ffffffffc400000000000000000000000000000000000000000f77570200000000000000000000000038f7ffffffff3b0000000000000000000000000e549eecffffffffffffffffa41000000000000000000000000000000000000070ffffffff560000000000000000000000000099ccccccccccccccccccccfdfffff9cccccccccccccccccccc850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffffffeed2deffffffffffaf00000000000000000000000000aaffffffdd0f0000000000000000000000000000000000000000000000000000000082ffffffffff4c0000000000000000000000000000000029ffffffffffff870000000000000000000000000000000008f5ffffffff8500000000000000000000000000000000000000000000b6fffffff3ffffffffedcccccccccccccccccccccccccccccccccccccccc2f0000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffec0700000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000028edffffffffffffd85a02000000000000000000001279f3fffffffffff94d000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a000000000000000000000000000034ffffffffffd2cccccccccccccccccdd8edfffffffffffffffff360000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000000000000000060ffffff620000000000000000affeffffffffffffffffffffffffff7c0000000000000000000049fbfffffffffff8dad4f1fffffffffff233000000000000000000000000000008eaffffffff54000000000000000000000000000000cffffffff917000000001091f7fffffffffffffffffffffffffffffff8650000000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000041f8f57c06000000000000003efaffffffc5000000000000000000000012f1ffffffff4400000000000000000000000000000000000000000000000000000000000000000000000068ffffffffca000000000000000000000088fafffffffffffffffdd5ffffffe546000000000000000000000000000000000063ffffffff4900000000000000000000000000bfffffffffffffffffffffffffffffffffffffffffffffffffa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077ffffffffffffffffffffffce0f000000000000000000000000000edbffffffad00000000000000000000000000000000000000000000000000000000d3fffffffff6090000000000000000000000000000000000d2ffffffffff300000000000000000000000000000000000b0ffffffffd6000000000000000000000000000000000000000000002ffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c0000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff820000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000000000000003af2ffffffffffffffe8a45d341f090a1a366cabf8ffffffffffffffa900000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e0000000000000000000000000000000034fffffffffffffffffffffffffffffffffffffffffffffffda11a0000000000000000000000000000000000000000000000000af0ffffffffffff760000000000000000000000000000000000000000000000000001c4ffffea110000000000000fffffffffffffffffffffffffffffff9c000000000000000000000051f1ffffffffffffffffffffffffe83c00000000000000000000000000000064fffffffdad020000000000000000000000000000003becffffff7f00000035defffffffffffffffee9d7d3e5feffffffffffff9800000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000d0e0000000000000000000096fffffffe1c000000000000000000000083ffffffffc400000000000000000000000000000000000000000000000000000000000000000000000002d9ffffffff3e00000000000000000009fffffffffffffffdab290172f9fffffb1a0000000000000000000000000000000056ffffffff3d000000000000000000000000009bffffffffffffffffffffffffffffffffffffffffffffffff84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e9fffffffffffffffda00b00000000000000000000000000000030f7ffffff6e000000000000000000000000000000000000000000000000000023ffffffffffb100000000000000000000000000000000000078ffffffffd800000000000000000000000000000000000061ffffffffff2700000000000000000000000000000000000000000000a5ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffef13000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000000000000000031e6fffffffffffffffffffffffffffffffffffffffffffffffffffd3500000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000034ffffffffffffffffffffffffffffffffffffffffffe58d2100000000000000000000000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000000002ffcffff9600000000000015efffff8728282828287cffffab28281800000000000000000000000023acfefffffffffffffffffca3160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f9ffffffffffffbb5715000000001357c5ffffffffff7c000000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000048ffffffff47000000000000000000000010f0ffffffff440000000000000000000000000000000000000000000000000000000000000000000000006fffffffff9300000000000000000000e1ffffffffda7e1d0000000031d8ffe4060000000000000000000000000000000049ffffffff31000000000000000000000000001cc1f7f0dec1a17d593a1efaffffe724456687a8cae7f5f6b8130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e4f9edcf8b2d00000000000000000000000000000000000052ebfffff9350000000000000000000000000000000000000000000000000074ffffffffda2f0000000000000000000000000000000000000db8fcffe44500000000000000000000000000000000000008affbffffff770000000000000000000000000000000000000000000022faffffffffffffffffffffffffffffffffffffffffffffffffffffff3c00000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff6e0000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f0000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffdffdffffcd0300000000000000000000000000000000000000155792bcddf0faf9eedab88b500f000000000000000000000000000000000000000034fffffffffffffffffffffffffffffef4e8cba974370100000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000091fffffd3300000000000053fffff62d0000000064ffff9c00000000000000000000000000000000002777badef2f8e3bf7a2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c9ffffffffcb380000000000000000000063f9fffffffe400000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000000000000003affffffff5f0000000000000000000000007fffffffffc40000000000000000000000000000000000000000000000000000000000000000000000002affffffffd20000000000000000000090dda86d2400000000000000000b9c5100000000000000000000000000000000003dffffffff24000000000000000000000000000000000000000000000008fffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffbd020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054ddfffffffffffffffffffffffffffffffffff57a0799ffffff6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ee7ffffc90100000000000095ffffd90d00000064ffff9c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032fcfffd820400000000000000000000000058ffffffffc70000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000064ffffffff540000000000000000000000000eeeffffffff44000000000000000000000000000000000000000000000000000000000000000000000000f8fffffff80200000000000000000001000000000000000000000000000000000000000000000000000000000000000030ffffffff18000000000000000000000000000000000000000000000016fffffffe0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffe0180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000357bdfcffffffffffffffffffffffffdc7817000011eafffff11a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffff6500000000000007cfffffa700000064ffff9c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ae41000000000000000000000000000000b0ffffffff4100000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000000000bdaffffffff37000000000000000000000000007bffffffffc4000000000000000000000000000000000000000000000000000000000000000000000000e5ffffffff1100000000000000000000000000000000000000000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009437aaacbe6f3fdfaf1e1c6a4753f050000000000000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc80000000000000000000000000000000004437db0d7e9f8f7e7d4aa783b010000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe82800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175893bcddf0faf5e3d1aa6f3401000000000060ffffffa9000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffec1300000000000026f3ffff69000064ffff9c000000000024ffffffffffffffffffffffffffffffffffffffffffffffffffff280000000000000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000000000000000000000000000000000000000000000044ffffffff9000000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000000000019c4ffffffffe603000000000000000000000000000decffffffff440000000000000000000000000000000000000000000000000000000000000000000000e0ffffffff1600000000000000000000000000000000000000000000000000000000000000000000000000000000000016fffffffe01000000000000000000000000000000000000000000000031ffffffff1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000352aff5fffffffffffffffffffffffffffff2a73d000000000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000000000000002a97ebffffffffffffffffffffffffe48d1f00000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffda2200000000000000000000000000000000000000000000000000000035c7fbffffd217000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffff47000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff9800000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000000000000000000000000000000002cfbffff99000000000000005bfffff8320064ffff9c000000000021ffffffffffffffffffffffffffffffffffffffffffffffffffff2800000885c6100000000000000000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000000000005fbffffffd800000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff0800000000000000000000000d78eeffffffffff7300000000000000000000000000000078ffffffffc40000000000000000000000000000000000000000000000000000000000000000000000f3fffffffe04000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000009fffffff30000000000000000000000000000000000000000000000003effffffff26000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056be2ffffffffffffffffffffffffffffffffffffffffcf6304000000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000000000027abfefffff9ba85553f2f2e3b5983c0f9fffffa9d1b00000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000000000000000000000000000000172faffffffcd13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac8fcffdc0800000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff3100000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000000000000000000000000000000020ddfffffff35c000000000000000000000000000000000000000000000000000000000000008efffffd36000000000000009effffdd0f63ffff9c000000000003f3ffffffffffffffffffffffffffffffffffffffffffffffffff28000077ffffca0e000000000000000000000084ffffffffff7a000000a6ffffffffff5600000000000000000000000000000000000000000000000000000000e5fffffffb01000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff080000000000000000000d7deeffffffffffffbc030000000000000000000000000000000beaffffffff4400000000000000000000000000000000000000000000000000000000000000000025ffffffffec00000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000b8dc4c2b4987959381700fbffffe7011a3b5c7c9bb6c3c28506000000000000000000000000004cffffffff33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041dafffffffffffffffffee8d7cfd6e4f2feffffffffffffffffd0350000000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc8000000000000000000000376f7ffffcf6010000000000000000000001169e0fffff1660000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffd34600000000000000000000000000000000000000000000000000000014b4ffffffffc60f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc90000000000000000000000000000000000000000000000001bd9ffffffff9f0b00000000000000000000000000000000000000000000000000000000000de6ffffcb020000000000000ad5ffffae5dffff9c0000000000006fffffffffffffffffffffffffffffffffffffffffffffffffff1a000018e8ffffa7000000000000000000000080ffffffffff75000000a2ffffffffff5100000000000000000000000000000000000000000000000000000000f0ffffffff14000000acffffffffa40000000000000000000000000000000000000000000000e4ffffffff08000000000000000473ebffffffffffffffb40a000000000000000000000000000000000074ffffffffc40000000000000000000000000000000000000000000000000000000000000000006fffffffffb500000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000088fffffffffffffffffff5fefffffcf7ffffffffffffffffff71000000000000000000000000005affffffff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048efeffffffffffeea6632f07000000000000032a5a8bcafffffffffffd8d00000000000038ffffffff7400000000000000000000000000000000000000000000000000000000000000e4ffffffc800000000000000000011beffffde4e0000000000000000000000000000000771ecffffad0a0000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000253bafcfffffffffffffffffffffffff9b34b010000000000000000000000000000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff62000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000005affffff68000000000000002bf6ffffbaffff9c000000000000007afffffffffc94aad6eefffffffffffffffffffffffffff893000000004bffffff550000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000000000000000000000000000000000000000001effffffffff1b000000acfffffffffffffffffffffff7e6d5ba83490d00000000000000000000e4ffffffff080000000000000ec1ffffffffffffffed6b0100000000000000000000000000000000000009e7ffffffff440000000000000000000000000000000000000000000000000000000000000006e0ffffffff6e00000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c00000000bdffffffffffffffffffffffffffffffffffffffffffffffffa50000000000000000000000000067ffffffff4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eb9ffffffffffc355050000000000000000000000000000002076d9ffffffaf00000000000038ffffffff740000000000000000000000000002465f380000000000000000000000000000e4ffffffc8000000000000000022d9ffff980b00000000000000000000000000000000000012baffffcb170000000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000000000000000155792bcddf0faf9eedab88d521000000000000000000000000000000000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000000000000000000000000000000013cefffffffff76a0000000000000000000000000000000000000000000000000000000000beffffed140000000000000065ffffffffff9c000000000000000078ffffffffe62800000000000000000000000000000000000000000000b8ffffe507000000000000000000003bc7f1be31000000000051d1f0b4230000000000000000000000000000000000000000000000000000000093fffffffffe05000000acfffffffffffffffffffffffffffffffffff395290000000000000000e4ffffffff08000000000000b5fffffffffffff1821000000000000000000000000000000000000000000070ffffffffc4000000000000000000000000000000000000000000000000000000000000009bfffffffff41600000038ffffffffff240000000000000000000000000000000000000000000000c0ffffffffffffffffffffffffffffffffffffffffffffffffa80000000000000000000000000075ffffffff59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc5ffffffffdb4800000000000000000000000000000000000000000258d3ff4300000000000038ffffffff7400000000000000000000000000a1ffffff7100000000000000000000000000e4ffffffc80000000000000018defffc6b000000000000000000000000000000000000000000038fffffcf0e0000000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001abfffffffffffaf0700000000000000000000000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff930000000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000029faffff9c0000000000000000a6ffffffff9c00000000000000000076ffffffffe72900000000000000000000000000000000000000000051ffffff5b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063ffffffffffe100000000acfffffffffffffffffffffffffffffffffffffffd8c07000000000000e4ffffffff0800000000003cfffffffffffe9612000000000000000000000000000000000000000000000008e5ffffffff44000000000000000000000000000000000000000000000000000000000aa1ffffffffff880000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000083ffffffff6600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b7ffffffff9909000000000000000000000000000000000000000000000000160000000000000038ffffffff7400000000000000000000000043fffffffff61b000000000000000000000000e4ffffffc80000000000000bd0fffe5c00000000000000044389a7bfc7bb9d6d28000000000000007bffffbf04000000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c0000000000000000000000000000000000000000000000000000000000065c7d808080805f000000000000000000000000000000000000000000000000000000008bfffffe38000000000000000ddbffffff9c0000000000000000000074ffffffffe82a000000000000000000000000000000000000000013ffffffaa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169dffffffffffff9000000000acffffffffedccccccccccccd5e7fcffffffffffffffd41a0000000000e4ffffffff08000000000079fffffffffe5600000000000000000000000000000000000000000000000000006dffffffffc500000000000000000000000000004591dbe4914e1600000000012f7ce9ffffffffffd00b0000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000090ffffffff730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007ffffffffe6f0000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000002d0ffffffffff9d000000000000000000000000e4ffffffc800000000000099ffff7b0000000000000a7deeffffffffffffffffffc537000000000000a4ffff8000000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcffffffffffffffffffff7400000ce4ffffce020000000000000031f8ffff9c000000000000000000000072ffffffffe92c0000000000000000000000000000000000000000f6ffffdc0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000000000000000003595f5fffffffffffffa2a00000000acffffffffa400000000000000000d48a2faffffffffffd41200000000e4ffffffff0800000000008cffffffffb100000000000000000000000000000000000000000000000000000007e3ffffffff4500000000000000000000000000dbfffffffffffff0d9d0dff3ffffffffffffffe31e000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000004dcaf2f0c43d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032fcffffff6d000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000061fffffffffffffd2d0000000000000000000000e4ffffffc8000000000049ffffbc0100000000003ae4fffffffffffffffffffffffffe99050000000008cbfffc35000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d00000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bcffffffffffffffffffff7400000057ffffff6b00000000000000000000000000000000000000000000000071ffffffffea2d0000000000000000000000000000000000000afefffff10000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000000000044292e1ffffffffffffffffff860000000000acffffffffa4000000000000000000000021c7ffffffffffb300000000e4ffffffff0800000000006dffffffff960000000000000000000000000000000000000000000000000000000069ffffffffc500000000000000000000000000aeffffffffffffffffffffffffffffffffffbd1500000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c8ffffff9800000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000ae5ffffffffffffffb60000000000000000000000e4ffffffc80000000002d5fff41e000000000052f7ffffffffffffffffffffffffffffffb3080000000035feffbf0000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed0800000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc0000000000000000003a505050c9ffffea5050502400000000bbffffef160000000000000000000000000000000000000000000000006fffffffffeb2e000000000000000000000000000000000046ffffffeb0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000000003291eaffffffffffffffffffffffa6020000000000acffffffffa400000000000000000000000005b9ffffffffff47000000e4ffffffff08000000000019f8ffffffe61100000000000000000000000000000000000000000000000000000006e0ffffffff4500000000000000000000000081ffffffffffffffffffffffffffffffd45a020000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fffffffda0800000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000007fffffffffcbffffffff4200000000000000000000e4ffffffc8000000005bffff8a000000000033f9ffffffffe67d3412020c2b6fd0ffffffe31c0000000000a9ffff43000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff98000000000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc00000000000000000000000000b0ffffe0000000000000000027f9ffff9f000000000000000000000000000000000000000000000000006effffffffec3000000000000000000000000000000000adffffffcc0000acffffffffa4000000000000000000000000000000000000000000000000000000000000000157d2fffffffffffffffffffffffffc8003000000000000acffffffffa4000000000000000000000000000fe7ffffffffc4000000e4ffffffff080000000000006fffffffffcc1900000000000000000000000000000000000000000000000000000065ffffffffc500000000000000000000000054ffffffeb7ba4cbe2f0fbecd8bc7d390100000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7ffffff460000000000000469c0ecf9e1bb6610000000000b72cbedfae2ae5b0500000000000000000038ffffffff7400000000000000000019f4ffffffe823fcffffffcd01000000000000000000e4ffffffc800000000c7fff715000000000bddffffffff980b00000000000000015fedeb2800000000000022fcffaf000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff280000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb23000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff310000000000000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff28000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000b4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc00000000000000000000000000b0ffffe000000000000000000088fffffe3a000000000000000000000000000000000000000000000000006cffffffffed31000000000000000000000000000026ffffffff910000acffffffffa40000000000000000000000000000000000000000000000000000000000001dc3fffffffffffffffffffffffffeb12e0000000000000000acffffffffa400000000000000000000000000006ffffffffffd170000e4ffffffff080000000000000081ffffffffe84e000000000000000000000000000000000000000000000000000004deffffffff45000000000000000000000027fffffffb05000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffc300000000000015ccffffffffffffffef61000014d8ffffffffffffffdb3f000000000000000038ffffffff740000000000000000009dffffffff7700a4ffffffff5b000000000000000000e4ffffffc800000023ffffab000000000075ffffffff8c000000000000000000000011170000000000000000b4fff910000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe82800000000000000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc900000000000000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc40000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf0000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf00000000000000008fccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaf00000000000000000000000000b0ffffe00000000000000000000be2ffffd003000000000000000000000000000000000000000000000000006afeffffffee330000000000000000000000000014d3ffffff370000acffffffffa4000000000000000000000000000000000000000000000000000000000028eaffffffffffffffffffffffe3832200000000000000000000acffffffffa4000000000000000000000000000016feffffffff5f0000e4ffffffff08000000000000000051f0ffffffff9c070000000000000000000000000000000000000000000000000062ffffffffc5000000000000000000000003f7ffffff2c000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087ffffff51000000000002c3ffffffffffffffffffff89009bfffffffffffffffffffe7c0000000000000038ffffffff7400000000000000002efdffffffe60c0025faffffffe0070000000000000000e4ffffffc800000075ffff530000000007e7ffffffcb040000000000000000000000000000000000000000005bffff5c000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe0180000000000000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff6200000000000000000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff580000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000000053ffffff6e000000000000000000000000000000000000000000000000000068feffffffef33000000000000000000000000000143a9b7000000acffffffffa40000000000000000000000000000000000000000000000000000000010e1ffffffffffffffffffec9c4703000000000000000000000000acffffffffa4000000000000000000000000000000d7ffffffff800000e4ffffffff0800000000000000000022cbffffffffc81a00000000000000000000000000000000000000000000000004dbffffffff450000000000000000000000cdffffff58000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffed06000000000058fffffffc7b1a052170eaffff78f4ffffc13409185ad4ffffff7c00000000000038ffffffff740000000000000000bbffffffff6100000093ffffffff730000000000000000e4ffffffc8000000acffff150000000047ffffffff4c0000000000000000000000000000000000000000000019ffff9400000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a000000000000000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000000000b8fffff017000000000000000000000000000000000000000000000000000066feffffffee3000000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000000000000091fffffffffffffff6a34504000000000000000000000000000000acffffffffa4000000000000000000000000000000beffffffff980000e2ffffffff0c000000000000000000000695ffffffffd7100000000000000000000000000000000000000000000000005effffffffc50000000000000000000000a0ffffff83000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffdffffa8000000000000b6ffffff85000000000018d4fffffffff2140000000009a8ffffff46000000000038ffffffff74000000000000004affffffffce0200000013f0ffffffee1100000000000000e4ffffffc8000000e0ffe200000000008affffffe9010000000000000000000000000000000000000000000000e7ffca00000000000000000015f9fffffffa1600000000000000000000000095ffffffff8900000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff93000000000000000000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff8900000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000097fff7b4160000000000000000000000004cffffffffffffffffffffffffffc00000000000000000000000000000b0ffffe0000000000000000000000025f8ffffa200000000000000000000000000000000000000000000000000000066feffffffec2d000000000000000000000000000000000000acffffffffedccccccccccccc3b3a28751180000000000000000000000000000000ef9fffffffffff98714000000000000000000000000000000000000acffffffffa4000000000000000000000000000000b8ffffffff9f0000d0ffffffff1e0000000000000000000000008fffffffff9d00000000000000000000000000000000000000000000000003d8ffffffff450000000000000000000073ffffffaf000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040ffffff6c000000000000eefffffc1100000000000021f2ffffffc000000000000005c1ffffe10d0000000038ffffffff7400000000000003d5ffffffff3f000000000075ffffffff8c00000000000000e4ffffffc8000001fdffbf0000000000c2ffffffaa000000000000000000000000000000000000000000000000c1ffe900000000000000000000a7ffffffff7600000000000000000000000af0fffffffe23000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed1100000000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe2300000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000011ebffffbc0000000000000000000000003affffffffffffffffffffffffffc00000000000000000000000000000b0ffffe000000000000000000000000085ffffff3d0000000000000000000000000000000000000000000000000000006bffffffffea290000000000000000000000000000000000acffffffffffffffffffffffffffffffffffd1670b00000000000000000000000059ffffffffffe3300000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000cdffffffff880000b9ffffffff3900000000000000000000000003d1fffffffd190000000000000000000000000000000000000000000000005affffffffc50000000000000000000046ffffffdb000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffff3f000000000008ffffffe000000000000000007dffffffbc0000000000000025fbffff720000000038ffffffff7400000000000067ffffffffae00000000000007dffffffff81f000000000000e4ffffffc8000010ffffaf0000000000daffffff83000000000000000000000000000000000000000000000000b0fffa0000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc40000000000000000000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000000000063ffffff5b000000000000000000000001b9ffffffffffffffffffffffffba0000000000000000000000000000b0ffffe000000000000000000000000009e0ffffd2040000000000000000000000000000000000000000000000000000007cffffffffe11900000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffee6200000000000000000000008bfffffffff627000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000008f7ffffffff6f000093ffffffff75000000000000000000000000006effffffff5c00000000000000000000000000000000000000000000000002d5ffffffff4500000000000000000019fffffffd090000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084ffffff1d00000000000bffffffcf000000000000000010f9ffffd400000000000000009fffffde0200000038ffffffff7400000000000de9fffffff9230000000000000058ffffffffa4000000000000e4ffffffc800001bffffa30000000000eeffffff70000000000000000000000000000000000000000000000000a8ffff0700000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe90500000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff58000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000001c7ffffe70e00000000000000000000000abcfffff69dbacbccccccccc74f0000000000000000000000000000b0ffffe00000000000000000000000000050ffffff710000000000000000000000000000000000000000000000000000000097ffffffffcc07000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffb30c000000000000000000a2ffffffff9200000000000000000000000000000000000000000000acffffffffa400000000000000000000000000004dffffffffff3100004affffffffc8000000000000000000000000004fffffffff740000000000000000000000000000000000000000000000000057ffffffffc500000000000000000000ecffffff320000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093ffffff08000000000000f3ffffe6000000000000000000b3fffffb090000000000000041ffffff3f00000038ffffffff74000000000085ffffffff8b000000000000000000c8fffffffe320000000000e4ffffffc800000effffac0000000000edffffff71000000000000000000000000000000000000000000000000b6fff9000000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe70400000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe7040000000000000000000000000000000031fcffff9000000000000000000000000008b8ffffc70f000000000000000000000000000000000010000000b0ffffe00000000000000000000000000000b5fffff21900000000000000000000000000000000000000000000000000000004bfffffffff91000000000000000000000000000000acffffffffa4000000000000091a3d79d0ffffffffffffbe080000000000000000adffffffff5700000000000000000000000000000000000000000000acffffffffa40000000000000000000000000001cbffffffffe500000008f1ffffffff410000000000000000000000006fffffffff620000000000000000000000000000000000000000000000000001d1ffffffff45000000000000000000bfffffff5e0000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffd00000000000000d2fffffe16000000000000000069ffffff3e0000000000000002f4ffff7e00000038ffffffff74000000001df6ffffffeb0f0000000000000000003bffffffffbd0000000000e4ffffffc8000001fcffc00000000000d6ffffff84000000000000000000000000000000000000000000000000c8ffe8000000000000000000000011f7fffffff914000000000000000090ffffffff84000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a0000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000095fffffc2e00000000000000000000000007b3ffffcb110000000000000000000000000000004bfccb1f00b0ffffe0000000000000000000000000000023f7ffffa5000000000000000000000000000000000000000000000000000000001beeffffffff3b0000000000000000000000000000acffffffffa4000000000000000000000047e1ffffffffffa0000000000000000097ffffffff4800000000000000000000000000000000000000000000acffffffffa40000000000000000000000000088ffffffffff7b000000007dffffffffe0120000000000000000000002d0ffffffff29000000000000000000000000000000000000000000000000000042ffffffffc500000000000000000092ffffff890000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dfffffc000000000000008cffffff60000000000000000024ffffff810000000000000000c4ffffbc00000038ffffffff7400000000a3ffffffff690000000000000000000000adffffffff4900000000e4ffffffc8000000deffe50000000000bdffffffb0000000000000000000000000000000000000000000000001f0ffc8000000000000000000000000a2ffffffff730000000000000008edfffffffd1f000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff2800000000000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f00000000000000000000000000000000000010e9ffffc30100000000000000000000000005aeffffcf14000000000000000000000000000ae8ffffea3fabffffe000000000000000000000000000000081ffffff400000000000000000000000000000000000000000000000000000000064ffffffffce0100000000000000000000000000acffffffffa400000000000000000000000011cefffffffffe390000000000000072ffffffff6900000000000000000000000000000000000000000000acffffffffa400000000000000000000000a97ffffffffffe409000000000be4ffffffffd42200000000000000000497ffffffffc80000000000000000000000000000000000000000000000000000000092ffffffff40000000000000000065fffffffffffffffffffffffffffffffff2c02b0000000038ffffffffffd3cccccccccccccccccccccccccccc5f00000000000000000000000000000000000000f4ffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008effffff070000000000003effffffcd000000000000000000dfffffc700000000000000009fffffdb00000038ffffffff7400000033feffffffd403000000000000000000000024faffffffd202000000e4ffffffc8000000aaffff1a0000000081ffffffee040000000000000000000000000000000000000000000026ffff920000000000000000000000003bffffffffd8000000000000005bffffffffb600000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb0000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000000000000000000061ffffff5f0000000000000000000000000004a9ffffd316000000000000000000000000005ff9fffffbdeffffe000000000000000000000000000000008ddffffd40500000000000000000000000000000000000000000000000000000003d6ffffffff4800000000000000000000000000acffffffffa40000000000000000000000000019efffffffffbd0000000000000026ffffffffba00000000000000000000000000000000000000000000acffffffffa40000000000000000073783e8fffffffffff63d00000000000036f6fffffffff69034020000000f57cdfffffffffe3b00000000000000a9feffffffffffffffffffffffffffffffffffffffffffffffffa2000000000000000039ffffffffffffffffffffffffffffffffffffc00000000038ffffffffff24000000000000000000000000000000000000000000000099ccccccccccccccccccccfdfffff9cccccccccccccccccccc850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dffffff2000000000000000c8ffffff5700000000000000009bfffffc100000000000000090ffffee00000038ffffffff74000000c0ffffffff470000000000000000000000000090ffffffff62000000e4ffffffc800000072ffff5c0000000037ffffffff5a000000000000000000000000000000000000000000006bffff5900000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e00000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff58000000000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e00000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e000000000000000000000000000000000000000001c4ffffe9100000000000000000000000000003a7ffffd618000000000000000000000000003feeffffffffffe0000000000000000000000000000000004cffffff74000000000000000000000000000000000000000000000000000000006bffffffffb100000000000000000000000000acffffffffa4000000000000000000000000000078fffffffffc1400000000000000c8ffffffff4b0000000000000000000000003bb770000000000000acffffffffedccccccccccccd5e5fafffffffffffffff64b00000000000000004ff6fffffffffffff4ddd1e0fdffffffffffff720000000000000000f7ffffffffffffffffffffffffffffffffffffffffffffffffffca00000000000000000dfeffffffffffffffffffffffffffffffffffe30000000038ffffffffff240000000000000000000000000000000000000000000000bfffffffffffffffffffffffffffffffffffffffffffffffffa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffff440000000000000044ffffffef210000000000000056ffffff510000000000000087fffffe00000038ffffffff74000050ffffffffb5000000000000000000000000000012eeffffffe4090000e4ffffffc800000020feffb40000000002d7ffffffd80a000000000000000000000000000000000000000000c4fff80f000000000000000000000000006cffffffffa4000000000027ffffffffe30300000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c000000000000000076ffffffffab000000000000000000000000002fffffffffea0600000000000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe3030000000000000000000000000000000000000000002ffcffff93000000000000000000000000000005b6ffffd50f0000000000000000000000000026dcffffffffe00000000000000000000000000000000000b3fffff31b00000000000000000000000000000000000000000000000000000014fefffffff305000000000000000000000000acffffffffa400000000000000000000000000001afeffffffff5d000000000000003ffffffffff247000000000000000000108ffdffff380000000000acffffffffffffffffffffffffffffffffffffffffc727000000000000000000002dd7fffffffffffffffffffffffffffff86b000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000dfffffffffffffffffffffffffffffffffffe40000000038ffffffffff2400000000000000000000000000000000000000000000009bffffffffffffffffffffffffffffffffffffffffffffffff840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002affffff7a000000000000000096ffffffde2500000000000013feffff960000000000000092fffff400000038ffffffff740005d9fffffffb2900000000000000000000000000000073ffffffff7a0000e4ffffffc800000000c4fffb230000000057ffffffffa3020000000000000000000000000000000000000029feffac00000000000000000000000000000ff5fffffff712000000008cffffffff7f000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000000015f9fffffffa1600000000000000000000000095ffffffff890000000000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f000000000000000000000000000000000000000000000092fffffc3100000000000000000000000000000ddcffffb9030000000000000000000000000014c4ffffffe000000000000000000000000000000000001fefffffa800000000000000000000000000000000000000000000000000000000d7ffffffff32000000000000000000000000acffffffffa4000000000000000000000000000000d8ffffffff7f000000000000000097fffffffffeaa420800000003338cefffffffffbe0000000000acfffffffffffffffffffffffffffffffffffebc55030000000000000000000000000868dcfffffffffffffffffffffeaf2d00000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000001cc1f7f0dec1a17d593a1efaffffe724456687a8cae7f5f6b81300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f4ffffbc000000000000000005c3ffffffec60010000000000cdffffdb00000000000000a7ffffe300000038ffffffff74006dffffffff930000000000000000000000000000000006ddfffffff11500e4ffffffc80000000057ffffa70000000001c2ffffffffb319000000000000000032c9da1a000000000000a7ffff400000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff61000000000000000000a7ffffffff7600000000000000000000000af0fffffffe230000000000000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000000000000000000000000fe8ffffc70100000000000000000000000000003affffff61000000000000000000000000000007a6ffffe000000000000000000000000000000000000037cefcff43000000000000000000000000000000000000000000000000000000b9ffffffff49000000000000000000000000acffffffffa4000000000000000000000000000000beffffffff98000000000000000004b6fffffffffffff9dfd0dcf4ffffffffffffffec1700000000acfffffffffffffffffffffff7e8d8c3915c200000000000000000000000000000000000033c7dbbd8ecfbecd9b47126000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000008fffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aefffffc1700000000000000000bb0ffffffffd0732e120829bcffffff20000000000000cbffffcb00000038ffffffff7310ecffffffef13000000000000000000000000000000000056ffffffff9300e4ffffffc80000000001d2fffe320000000017e3fffffffff5954a1d070a225ab3feffffb9010000000035fdffbd0000000000000000000000000000000036ffffffffd400000057ffffffffb100000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800000000000000000040ffffffffdb010000000000000000000060ffffffffbb0000000000000000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb10000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000005effffff62000000000000000000000000000000baffffe20200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028aad3f4d92a0000000000000000000000000000adffffffff55000000000000000000000000acffffffffa4000000000000000000000000000000b9ffffffff9e000000000000000000048bffffffffffffffffffffffffffffffffb2180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000016fffffffe01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffff79000000000000000000027ff6ffffffffffffffffffffffff65000000000009f9ffff9700000038ffffffff6e8bffffffff7100000000000000000000000000000000000000c6fffffffa24e0ffffffc8000000000047ffffc907000000002de0ffffffffffffffffffffffffffffffe11800000007d5fffb330000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b00000000000000000000d7ffffffff4200000000000000000000c6ffffffff5300000000000000000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff490000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff490000000000000000000000000000000000000000000000000000c2ffffeb11000000000000000000000000000067ffffff2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019ffffffffa60000000000000000000000000000c0ffffffff3f000000000000000000000000acffffffffa4000000000000000000000000000000ceffffffff8800000000000000000000003abafffffffffffffffffffffffbaa3c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000023ffffffff0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffe909000000000000000000001da0fbffffffffffffffffffffa800000000004affffff6000000038ffffffff82f8ffffffda050000000000000000000000000000000000000039ffffffffabd6ffffffc800000000000097ffff9f000000000015bbffffffffffffffffffffffffffc117000000009dffff7e00000000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000000000000000071ffffffffa70000000000000000002bffffffffe704000000000000000000000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000002dfbffff970000000003b9e4f05500000000005dffffff460000000000000000000019649ecfe3f3fae9d6ac6f2900000000000000000000033b697a6e541600000000000000000000ddfffffff20a00000000000000000000000003eeffffffff24000000000000000000000000acffffffffa400000000000000000000000000000bf8ffffffff6e000000000000000000000000002a72b5d6ebfbeddac5915416000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000368acce7fbf2d4a050030000000060f8ffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000031ffffffff1900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081ffffff800000000000000000000000001667a7d1eefaf9edcfa15f0f0000000000a9fffffb1700000038ffffffffebffffffff4f000000000000000000000000000000000000000000aafffffffff1ffffffc80000000000000acfffff7100000000000049cbffffffffffffffffffda5700000000007effffbd030000000000000000000000000000000000000cf2ffffffee057effffffff7b00000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000000000011f7fffffff914000000000000000090ffffffff8400000000000000000000000000000000000000000000000000000ff5fffffff712000000008cffffffff7f0000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b0000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000008ffffffd3300000000cfffffe60c0000000099ffffff30000000000000000027a5faffffffffffffffffffffffbe4a000000000000000080fffffffffffeb830000000000000000081ffffffff770000000000000000000000004affffffffe000000000000000000000000000acffffffffa4000000000000000000000000000056ffffffffff2d00000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000001fb2ffffffffffffffffffdc44000000c1ffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000003effffffff2600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011f1fffff72b00000000000000000000000000000000000000000000000000000031fdffffb40000000038ffffffffffffffffbd0000000000000000000000000000000000000000000022f9ffffffffffffffc80000000000000017dcffff7600000000000000216b9bb2c5b6a07c2f0000000000018bffffcd0d000000000000000000000000000000000000000098ffffffff46d2fffffffb1800000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000000000000000000000a2ffffffff730000000000000008edfffffffd1f0000000000000000000000000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb180000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000ee6ffffc9020000006dffffffbe2200046afdffffe702000000000000006ff6ffffffffffffffffffffffffffffffa9130000000000006cfffffffffffffff8530000000000000018f9fffffff7330000000000000000000009d2ffffffff8c00000000000000000000000000acffffffffa40000000000000000000000000006d7ffffffffe00000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000032eefffffffffffffffffffffffe960700e2ffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000004cffffffff330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071ffffffd50c0000000000000000000000000000000000000000000000000000c0ffffff4b0000000038fffffffffffffffd2f00000000000000000000000000000000000000000000008dffffffffffffffc8000000000000000020d7ffffa50d00000000000000000000000000000000000016b1ffffc91500000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000000000000000000000003bffffffffd8000000000000005bffffffffb60000000000000000000000000000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000005bffffff6600000005ccffffffffecf9ffffffff640000000000000088fffffffffffffff1dbd2e7fdffffffffffffdf1d000000000053fffffffffffffffff72c0000000000000081ffffffffef4500000000000000000eb5fffffffff21900000000000000000000000000acffffffffa400000000000000000000000002a6ffffffffff6f000000000000000000000000000000f3ffc30600000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000027eefffffffffffff4dad0e6ffffffffb60dfcffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000005affffffff400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c6ffffffbb060000000000000000000000000000000000000000000000006bffffffc1000000000038ffffffffffffff9b00000000000000000000000000000000000000000000000011edffffffffffffc800000000000000000010bdffffe4570100000000000000000000000000000463ebffffab090000000000000000000000000000000000000000000000c9ffffffffffffffff4400000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff44000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff4400000000000000000000000000000000000000000000000000000000000000c0ffffed1300000013befffffffffffffffd7e000000000000006afffffffffff68c30000000001159caffffffffffdb160000000008464c5c96f6ffffffffb00000000000000004c8ffffffffffab4206000000186ce1ffffffffff700000000000000000000000000000acffffffffa4000000000000000000000022bfffffffffffd905000000000000000000000000000000e2ffff3600000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000001c1ffffffffffb83e030000001b72e7ffffccffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000067ffffffff4d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026efffffffbb0c0000000000000000000000000000000000000000000057fdfffffa32000000000038fffffffffffff2170000000000000000000000000000000000000000000000000070ffffffffffffc8000000000000000000000375f7ffffd2620e00000000000000000000196fdefffff0640000000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe403000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc0100000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc01000000000000000000000000000000000000bcffffffffffffffffffff74002bfbffff9a00000000004daae0f7f5d8972e0000000000000024f5ffffffffcc2100000000000000000067f9ffffffffa80000000000000000003bfcfffffffd120000000000000012ccfffffffffffff6dbd2e5ffffffffffffff96000000000000000000000000000000acffffffffa400000000000008183468b3fdffffffffffec2b00000000000000000000000000000000d0ffff4900000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000059ffffffffff7e000000000000000014b4ffffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000075ffffffff5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042faffffffd52b000000000000000000000000000000000000000064faffffff7300000000000038ffffffffffff79000000000000000000000000000000000000000000000000000005dbffffffffffc800000000000000000000000026a9fdfffff6bb7e573a2d32425b8fc6fdfffffa9c1b00000000000000000000000000000000000000000000000000000af0ffffffffffff760000000000000000000000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000000000000000ff5fffffff712000000008cffffffff7f0000000000000000000000000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff7600000000000000000000000000000000000000bcffffffffffffffffffff7400008dfffffe3700000000000000000000000000000000000000aaffffffffd00e00000000000000000000004bfdffffffff45000000000000000000b6ffffffff4800000000000000000fa5fffffffffffffffffffffffffffffc8102000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffffe6340000000000000000000000000000000000bfffff5b00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000c2ffffffffab000000000000000000000197ffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000000083ffffffff66000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cfbfffffff781090000000000000000000000000000000017b2ffffffffa50100000000000038ffffffffffdf0800000000000000000000000000000000000000000000000000000053ffffffffffc800000000000000000000000000002995e9ffffffffffffffffffffffffe18c1f000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d0000000000000000000000000000009dffffffff6f00000006ebfffffffc1c0000000000000000000000000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000003a505050c9ffffea5050502400000de5ffffcc02000000000000000000000000000000000028fdfffffff828000000000000000000000000008affffffffb900000000000000000081ffffffff64000000000000000000004ac5fffffffffffffffffffffeb6360000000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffa111000000000000000000000000000000000000adffff6d00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000024fffffffffd21000000000000000000000002abffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000090ffffffff7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bf5ffffffffe87817000000000000000000000000309bf5ffffffffa5030000000000000038ffffffffe9440000000000000000000000000000000000000000000000000000000000a0f9ffffffc800000000000000000000000000000000033f79add6e7f8f6e5d3a7743701000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000000000000000036ffffffffd400000057ffffffffb1000000000000000000000000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000000000000002cffffffffffa7000000000000000000000000000000000000000000000000b0ffffe00000000000000059ffffff6900000000000000000000000000000000008fffffffff91000000000000000000000000000011f6fffffffb0f000000000000000071ffffffff720000000000000000000000002e77b1dbedfbeddaaf722700000000000000000000000000000000000000acffffffffffffffffffffffffffffffffffec8e2900000000000000000000000000000000000000009fffff7e00000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000068ffffffffc0000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000000000000000004dcaf2f0c43d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d9fffffffffffcbc7b46210e03102335609bd6fffffffffffd81020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb0000000000000000000000000000000000000ceffffffff3a0000bcffffffff49000000000000000000000000000000000000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000bdffffee1500000000000000000000000000000000dafffffff617000000000000000000000000000000b3ffffffff40000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffedcccccccccccbc3b4a5905f2a020000000000000000000000000000000000000f6ab5e7fffffffef4dcb274200000000000000000000038ffffffffff24000000000000000000000000000000000000000000009affffffff76000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a92fdffffffffffffffffffffffffffffffffffffffffdb43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029a3e7fae1961e000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000000000000000000000000000067ffffffff9d0021feffffffe00200000000000000000000000000000000000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe0000000000000000029faffff9e000000000000000000000000000000000b69bfd3600000000000000000000000000000000088ffffffff5f000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000000000000000000000000000000000c8ff6fffffffffffffffffffffffeb22d000000000000000038ffffffffff2400000000000000000000000000000000000000000000caffffffff4b000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029aafeffffffffffffffffffffffffffffffffe774060000000000000000000000000000000000000000000000000004437db0d7e9f8f7e7d4aa783b0100000000000000000000000000000000000000001574b6e3f6faebca9b550a000000000000000000001e76b9e5f8f5dfc8954e0d000000000000000000000000000000000000000000004df7fffffffffff03d000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000000000000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffe00000000000000000008afffffe3a00000000000000000000000000000000000000000000000000000000000000000000000080ffffffff67000000000000000070ffffffff740000000000000000000001245065727c705f481400000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000000003ee2fffffffffffffffffffffffffffffffa740000000000000038ffffffffff2400000000000000000000000000000000000000000000e1ffffffff28000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002581dcfffffffffffffffffffffff5b55805000000000000000000000000000000000000000000000000002a97ebffffffffffffffffffffffffe48d1f000000000000000000000000000000000278f8ffffffffffffffffffed8108000000000000139dfbfffffffffffffffffff89f23000000000000000000000000000000000000001bf4ffc8360f40d9ffeb100000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b00000000000000000000000000000000000000000098ffffffff46d2fffffffb18000000000000000000000000000000000000000000000000000000000000000000000093fffffffffff915000000000000000000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000000000000000000000000000000000000000000003effff91000000001679cef8f2bb3f000000000000000000000000000000000000000000b0ffffe00000000000000000000be3ffffcf03000000000000000000000000000000000000000000000000000000000000000000000096ffffffff58000000000000000070ffffffff74000000000000000658adf3ffffffffffffffffffda8b2400000000000000000000000000000000000000acffffffffa40000000000000000000000000000000000000000000000000000004bf7fffffffffffffbfffff5d7f0ffffffffffff8c00000000000038ffffffffff2400000000000000000000000000000000000000000000f0ffffffff1b000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022588ca7b8c7bfb1986d4007000000000000000000000000000000000000000000000000000027abfefffff9ba85553f2f2e3b5983c0f9fffffa9d1b00000000000000000000000000009bffffffffffffffffffffffffffda290000000035e6fffffffffffffffffffffffffff87701000000000000000000000000000000000082fff4170000002bfdff6d000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000000000000000000000030ffffffffb1ffffffffac0000000000000000000000000000000000000000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff9203000000000000000000000000000000000000000000000017fffff04008359ff9fffffffffffc4f0000000000000000000000000000000000000000b0ffffe00000000000000000000056ffffff6d0000000000000000000000000000000000000000000000000000000000000000000000cdffffffff35000000000000000070ffffffff740000000000005ce0fffffffffffffffffffffffffffffeab1a0000000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000034fafffffffffca53d46ffffd400012e8ef4ffffffe70e000000000038ffffffffff2400000000000000000000000000000000000000000000fdffffffff0f000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000035c7fbffffd2170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000376f7ffffcf6010000000000000000000001169e0fffff1660000000000000000000000005cfffffffffffff9d7d2e7ffffffffffef31000030f1fffffffffffbe2d0dbf4ffffffffffffa30200000000000000000000000000000000b4ffc20000000000dbffa0000000000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e00000000000000000000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028effffffff9724b4fffffffb690000000000000000000000000000000000000000000000000000beffffffffffffffffffffffffffe70600000000000000000000000000000000000000b0ffffe00000000000000000000000bbfffff01700000000000000000000000000000000000000000000000000000000000000000030fffffffff104000000000000000070ffffffff74000000000299fffffffffffffffffffffffffffffffffffff15100000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000000ad9ffffffffe339000030ffffe60000000017a5fffa3d00000000000038ffffffffff2400000000000000000000000000000000000000000000f8ffffffff16000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000172faffffffcd1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011beffffde4e0000000000000000000000000000000771ecffffad0a00000000000000000000deffffffffe65d080000001d74e8ffffffe2150ddcffffffffd3570d000000033089effffffff92700000000000000000000000000000000b2ffc50000000000dfff9d00000000000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066fbffffffffffffffef4400000000000000000000000000000000000000000000000000000028edfffffffffffffff5d6e3ffffff4100000000000000000000000000000000000000b0ffffe0000000000000000000000027f9ffffa100000000000000000000000000000000000000000000000000000000000000000bc9ffffffff9100000000000000000070ffffffff740000000083fffffffffffdc78d69574e556488bbf8fffffffffc5d000000000000000000000000000000acffffffffa4000000000000000000000000000000000000000000000000007cffffffffe9210000001efffff8000000000000382d0000000000000038ffffffffff2400000000000000000000000000000000000000000000e7ffffffff23000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffffd50e00000000000000000000000005cdffffffe7020000000000000000000000000000000022d9ffff980b00000000000000000000000000000000000012baffffcb1700000000000000002dfffffffff0210000000000000015c2ffffff9788ffffffff90030000000000000000119effff6b00000000000000000000000000000000007cfff71e00000034feff680000000000000000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f00000000000000000000000000000000000000000000000000000000000af0ffffffffffff7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042eeffffffffffdb28000000000000000000000000000000000000000000000000000000000022a3e9f8e1b97a370300007fffff6600000000000000000000000000000000000000b0ffffe000000000000000000000000087ffffff3d0000000000000000000000000000000000000000000000000000000000002cc9ffffffffec1800000000000000000070ffffffff740000001dfcffffffff981d0000000000000000000e75f2fffffff82d0000000000000000000000000000acffffffffa400000000000000000000000000000000000000000000000007e9ffffffff4a000000000cffffff0a000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000d3ffffffff3e000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016fdffffffff690000000000000000000000004dffffffffff3b00000000000000000000000000000018defffc6b000000000000000000000000000000000000000000038fffffcf0e000000000000005bffffffff8900000000000000000010dbfffffbf7ffffff9c000000000000000000000000404f00000000000000000000000000000000000017f1ffd64a2455e3ffe70d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c00000000000000000000000000000000000000000000000000000000000025808080807c1300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000b0ffffe00000000000000000000000000ae1ffffd2040000000000000000000000000000000000000000000000000001215db6fcfffffffff8470000000000000000000070ffffffff7400000074ffffffff6b0000000000000000000000000025e6ffffffc400000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bffffffffba000000000000faffff1c000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000a5ffffffff6e000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000000000000027ffcffffffffb809000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066ffffffffffbe000000000000000000000000a2ffffffffff8d00000000000000000000000000000bd0fffe5c0000002b8c8c8c890000000000000000001c7e8c8c8c52007bffffbf040000000000006fffffffff4e000000000000000000004fffffffffffffe20c00000000000000000000000000000000000000000000000000000000000000000049f5ffffffffffee3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffffffa7000000000000000000000000000000000000000000000000000000000000000010e5fffffff729000000000044ffffffffd20500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfccb1f00b0ffffe00000000000000000000000000053ffffff700000000000000000000000000000000000000000000073d2e1f7ffffffffffffffe844000000000000000000000070ffffffff7400000097ffffffdb0000000000000000000000000000004fffffffff2d000000000000000000000000000000000000000000000000000000000000000000000000000000000000009effffffff58000000000000e9ffff2e000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000006bffffffffab000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000001abfffffffffffaf07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b9fffffffffffd170000000000000000000006efffffffffffdf000000000000000000000000000099ffff7b0000000050fffffffc00000000000000000adaffffffef1d0000a4ffff8000000000000062ffffffff440000000000000000000000ddffffffffff700000000000000000000000000000000000000000000000000000000000000000000000279fe5f9df931c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcc000000000000000000000000b4ffff54000000000ae8ffffea3fabffffe00000000000000000000000000000b8fffff11900000000000000000000000000000000000000000090fffffffffffffffff48e1400000000000000000000000070ffffffff740000008cffffffb600000000000000000000000000000004fbffffff6f00000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000000ddfffffffe0e000000000000d7ffff40000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000029fffffffff80f0000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffff7800000000000000000038ffffffffffd3cccccccccccccccccccccccccccc5f0000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010faffffffffffff69000000000000000000004bffffffffffffff3200000000000000000000000049ffffbc010000000050fffffffc000000000000000094ffffffff5a00000008cbfffc35000000000037ffffffff72000000000000000000000097fffffffffa0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffff7d00000000009cffffffffff350000000000000000000000000020b4f6e98306000000000000000013a1f2f0970e0000000000000000088becf5ac1c0000000000000000000000004cffffff2c0000000000003cffffcc000000000000000000000000b4ffff5400000000005ff9fffffbdeffffe0000000000000000000000000000025f8ffffa500000000000000000000000000000000000000000090fffffffffffff8780e000000000000000000000000000070ffffffff740000004bffffffdf00000000000000000000000000000005faffffff8d00000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000006ffffffffdb00000000000000c5ffff52000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000c3ffffffff8400000000000000000000000063ffffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccc5f00000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005effffffd3feffffbf000000000000000000009fffffffd5ffffff85000000000000000000000002d5fff41e000000000050fffffffc0000000000000042feffffffa7000000000035feffbf000000000000d5ffffffe1110000000000000000000071ffffffffc6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020ddfffffff35c0000000000000000000000000000000000000000000000000000000000000000000005e7ffffffff4c00000000000000000000000000000000000000000000000000000000000000000de1fffffff52400000000003dfeffffffcb030000000000000000000000000de1ffffffff9a0000000000000002c8ffffffffbc0000000000000000a3ffffffffdc0a00000000000000000000004cffffff2c0000000000003cffffcc000000002ad9e04200000000b4ffff540000000000003feeffffffffffe000000000000000000000000000000085ffffff40000000000000000000000000000000000000000090fffffffffffffffeb6350000000000000000000000000070ffffffff7400000001c5ffffff68000000000000000000000000000078ffffffff8100000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000000000019ffffffffbd00000000000000b3ffff64000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccc5f000000000000000057fffffffff9320000000000000000000017e1ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0ffffff91cefffffd17000000000000000005eefffffd69ffffffd700000000000000000000005bffff8a00000000000050fffffffc0000000000000ee1ffffffe311000000000000a9ffff43000000000055ffffffffcb220000000000000000005dffffffff8c000000000000000000000000000000000000000084fffffff9960000000000000000000000000000000000000000000000000032e2fffffff30d00000000000000000000000000000000000000001bd9ffffffff9f0b000000000000000000000000000000000000000000000000000000000000000056ffffffffffb500000000000000000000000000000000000000000000000000000000000000000026baf1c63b0000000000000053d3efab180000000000000000000000000065fffffffffffe1d00000000000041ffffffffffff400000000000001affffffffffff6800000000000000000000004cffffff2c0000000000003cffffcc00000000c3ffffde07000000b4ffff540000000000000026dcffffffffe000000000000000000000000000000009e0ffffd50500000000000000000000000000000000000000010e1d4477ccfffffffffd8401000000000000000000000070ffffffff740000000015c3fffffc6f010000000000000000001752b2ffffffffff5700000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000002bffffffffaf00000000000000a2ffff76000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000001c3ffffffffec37000000000000000021d4ffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf7ffffff5e87ffffff69000000000000000048ffffffc822ffffffff2900000000000000000000c7fff71500000000000050fffffffc0000000000009dfffffffe440000000000000022fcffaf0000000000008afffffffff58d250000000000000058ffffffff6d00000000000000000000000000000000000000001ffdffffffff49000000000000000000000000000000000000000000000000ccffffffff980000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000000000c0fffffffffffd21000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffff3d00000000000064ffffffffffff610000000000003cffffffffffff8900000000000000000000004cffffff2c0000000000003cffffcc00000056ffffffff75000000b4ffff54000000000000000014c4ffffffe00000000000000000000000000000000048feffff740000000000000000000000000000000000000000000000000039d0ffffffff90000000000000000000000070ffffffff7400000000000680efffffcb80adc4ccccccd5e3f3ffffffffffffffe70700000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000002affffffffae0000000000000090ffff88000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000025f6fffffffffd9837010000002b86f3ffffffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffff283affffffbf00000000000000009cffffff8000e1ffffff7c00000000000000000023ffffab0000000000000050fffffffc00000000004bffffffff90000000000000000000b4fff91000000000000070f9ffffffffffd897674423160c5affffffff54000000000000000000000000000000000000000000b6ffffffffac000000000000000000000000000000000000000000000031ffffffffff31000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000029ffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064fffffffffffe1b00000000000040ffffffffffff3d00000000000018ffffffffffff6500000000000000000000004cffffff2c0000000000003cffffcc000007dffffffbfff0140000b4ffff5400000000000000000007a6ffffe000000000000000000000000000000000005bdefef31b0000000000000000000000000000000000000000000000000009bcffffffff4c0000000000000000000070ffffffff74000000000000003ff6fffffffffffffffffffffffffffffffffff83d0000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000016ffffffffbe000000000000007effff9a000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000046f6fffffffffffff3dbd6f1fffffffff4ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7ffffffe40002e7fffffd1700000000000004ecffffff320099ffffffce00000000000000000075ffff530000000000000050fffffffc0000000012e6ffffffd5080000000000000000005bffff5c0000000000000028aefdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb680000004efffffffff9140000000000000000000000000000000000000000000092ffffffffc90000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000093ffffffffffffffeb0700000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff7400000bdeffffffff950000000000000001c3ffffffffb600000000000000009dffffffffd90800000000000000000000004cffffff2c0000000000003cffffcc000079ffffc9acffff930000b4ffff54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017f1ffffffce0000000000000000000070ffffffff740000000000004ffaffffffffffffffffffffffffffffffffffc62d000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000003fdffffffd9000000000000006cffffac000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000043ebffffffffffffffffffffffffbb68ffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffff9a000096ffffff6a00000000000045ffffffe000004cffffffff210000000000000000acffff150000000000000050fffffffc00000000a7fffffffa300000000000000000000019ffff940000000000000000002482d4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa200000003e3ffffffff6f00000000000000000000000000000000000000000006ecffffffff620000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000000000000000000000000000000000000bf1ffffffffffffffff5b00000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff740000001caff6e77d0400000000000000000f9cf1ee920b00000000000000000685eaf4a8180000000000000000000000004cffffff2c0000000000003cffffcc0017f2ffff5234fefffb2700b4ffff5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099ffffffff2900000000000000000070ffffffff74000000000009e9fffffffffffffffffffffffffcf1dbb77f340000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000d0fffffffe0e0000000000005affffbe000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000139ffefffffffffffffffff579055cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffffff4e000043ffffffbf0000000000009affffff90000009f5ffffff730000000000000000e0ffe2000000000000000050fffffffc00000773ffffffff78000000000000000000000000e7ffca0000000000000000000000001c5486aac9ddedf4fbfffffffffdfcfcfcfcfcfcfcfcfcfcfcfcfcfeffffff9a0000000080ffffffffd000000000000000000000000000000000000000000055fffffffff00a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066ffffffffb8ffffffffc400000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcc009cffffc10000a3ffffb100b4ffff54000000000000000000000e5197cbe1f6f5e0c9964f0d00000000000000000000001445000000000000000000000000000000000000000000000000000000005affffffff6300000000000000000070ffffffff74000000000038fffffffff39048210b020000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000008effffffff5100000000000049ffffd0000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000237dbee6f8f4ddbb6d1800005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009ffffffff80b000003ecfffffd180000000003eaffffff3f000000b2ffffffc60000000000000001fdffbf000000000000000050ffffffffffffffffffffffa902000000000000000000000000c1ffe9000000000000000000000000000000000000000058ffffffff6e00000000000000000000000000baffffff87000000001bfcffffffff310000000000000000000000000000000000000000b6ffffffff9300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cfffffffff51e2ffffffff2e000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cffffff2c0000000000003cffffcb2ffdfffe3200001cf5ffff41b3ffff5400000000000000001083f1fffffffffffffffffffff38915000000000000000040edfd5a00000000000000006bb2dae881000000000000000000000000000043ffffffff7d00000000000000000070ffffffff74000000000041ffffffff3900000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000045ffffffffb700000000000037ffffe2000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ecffffffb7000000009dffffff6a0000000043ffffffeb0300000065fffffffe1a00000000000010ffffaf000000000000000050ffffffffffffffffffffffd17a110000000000000000000000b0fffa00000000000000000000000000000000000000005dffffffff9f00000000000000000000000000d1ffffff6f0000000000b1ffffffff93000000000000000000000000000000000000001bfcffffffff2c00000000000000000000003ffffdd74500000000000000000000000000000000000000005cffffa4000000000000000000000000000000000000000038fffffffff70d9dffffffff97000000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff740000000000000000000000000000234c4c4c4000000000000000284c4c4c3b0000000000000000000000000000000000004cffffff2c0000000000003cffffb5beffff9f0000000082ffffce9fffff54000000000000003feafffffffffffffffffffffffffffff35c0000000000000057fffffc4a0000000000000096fffffffe25000000000000000000000000004effffffff8400000000000000000070ffffffff74000000000011f6fffff80100000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000001d3ffffffff44000000000025fffff4000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044ffffffff6c000000004affffffc00000000097ffffff9d0000000019feffffff6a0000000000001bffffa3000000000000000050ffffffffffffffffffffffffffee5100000000000000000000a8ffff070000000000000000000000000000000000000071ffffffffea0300000000000000000000000dfcffffff34000000000049ffffffffed0700000000000000000000000000000000000079ffffffffc400000000000000000000000000a5fffff424000000000000000000000000000000000000005cffffa40000000000000000000000000000000000000000a2ffffffffaf0048fffffffff30d0000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000004cffffff2c0000000000003cffffe2fffff41a000000000be5ffffdbffff5400000000000062fbffffffffffffe8d4d7edffffffffffffff9501000000000000a4ffffe8130000000000005affffffff800000000000000000000000000074ffffffff6c00000000000000000070ffffffff7400000000000085ffffff5f00000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000005cffffffffe01c0000000013ffffff060000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096ffffffff210000000006f0fffffd18000002e8ffffff4c0000000000cbffffffbd0000000000000effffac000000000000000050fffffffc00000004133d8ff8fffffd54000000000000000000b6fff90000000000000000000000000000000000000000a3ffffffffff5c000000000000000000000064fffffff003000000000002dfffffffff55000000000000000000000000000000000000d9ffffffff5d0000000000000000000000000018f1ffffb7000000000000000000000000000000000000005cffffa40000000000000000000000000000000000000013f7ffffffff530004e7ffffffff6a0000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000004cffffff2c0000000000003cffffffffff7d00000000000061ffffffffff5400000000003ffbffffffffdc651a00000000226fe1ffffffffff8800000000000013edffffa40000000000000ef2ffffffed10000000000000000000000000c7ffffffff4700000000000000000070ffffffff7400000000000003acfffff97874a6bdc7b9a36f3000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000001b6ffffffffdd2f00000003feffff180000004f9e3b0000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e6ffffffd5000000000000a4ffffff6b000040fffffff30800000000007efffffffc13000000000001fcffc0000000000000000050fffffffc0000000000000038f9ffffee130000000000000000c8ffe80000000000004b741c000000000000000000000ff2ffffffffffe3160000000000000000000ddeffffff95000000000000007bffffffffb600000000000000000000000000000000003cffffffffed08000000000000000000000000000071ffffff510000000000000000000000000000000000005cffffa40000000000000000000000000000000000000075ffffffffe705000086ffffffffd30000000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000033dcdcdcdce6ffffffe2dcdcdcdc1b003cffffffffe20900000000000002ceffffffff540000000011e9ffffffff92050000000000000000068dffffffffff5a00000000000082fffffe2800000000000092ffffffffad020000000000000000000051ffffffffee0600000000000000000070ffffffff7400000000000000026ef7ffffffffffffffffffffcd570000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000014e3fffffffffc96320000f0ffff2a0f62d0ffffed1d00000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003bffffffff8a00000000000050ffffffc0000095ffffffaa00000000000031ffffffff62000000000000deffe5000000000000000050fffffffc0000000000000000a0ffffff760000000000000001f0ffc8000000000060fffff67b070000000000000001a4fffffffeffffffcc1b0000000000000008b5fffffffc220000000000000018faffffffffffffffffffffffffffffffffffffffffffffffffffff8e00000000000000000000000000000004d1ffffe10a00000000000000000000000000000000005cffffa400000000000000000000000000000000000001dcffffffff8400000020fdffffffff3d00000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000003cffffffffffffffffffffffffff20003cffffffff5b00000000000000003fffffffff540000000083ffffffff8f00000000000000000000000074ffffffffe50a00000000002bffffff8500000000000017eaffffffffa90d00000000000000003ef2ffffffff8d0000000000000000000070ffffffff74000000000000000893ffffffffffffffffffffffffffb10d000000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000023d9ffffffffffffe7bef6ffffddfbffffffffff9d00000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffff2400000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffffff3e00000000000009f4fffffd1802e6ffffff5900000000000000e3ffffffb4000000000000aaffff1a0000000000000050fffffffc000000000000000064ffffffbc0000000000000026ffff920000000004e7ffffffffe378230000000032b6ffffffff52e7ffffffed7b210000000954d7ffffffff88000000000000000000acffffffffffffffffffffffffffffffffffffffffffffffffffff28000000000000000000000000000000003cffffff860000000000000000a9feffffffffffffffffffffffffff7e00000000000000000000000000000048fffffffffd1f00000000b7ffffffffa700000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000003cffffffffffffffffffffffffff20003cffffffb00100000000000000000097fcffff540000000ef1ffffffd60400000000000000000000000000afffffffff79000000000005fcffffc5000000000000004ffeffffffffe4721b00000003379cfdffffffffe50d0000000000000000000070ffffffff740000000000000acaffffffffffffffffffffffffffffffc40a0000000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000013b6fffffffffffffffffffffffffffffffe9a0800000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dfffffffee0400000000000000aaffffff6a3dfffffff90f0000000000000097fffffff90e000000000072ffff5c0000000000000050fffffffc000000000000000059ffffffdc000000000000006bffff5900000000003cebffffffffffffecd7d3edffffffffffaa0039f9ffffffffffe9d4dcf7ffffffffffc50400000000000000000045ffffffffffffffffffffffffffffffffffffffffffffffffffbf000000000000000000000000000000000000a2fffff9260000000000000afdffffffffffffffffffffffffffffa4000000000000000000000000000000b1ffffffffb5000000000050fffffffff916000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053ffffffff5f000000000000000000000000000027feffffffd3000000000000f8ffffe9000000000000000063fdffffffffffffe6d2d9f4fffffffffffff034000000000000000000000070ffffffff74000000000000abffffffffed83360f04134195f7ffffffff8d0000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000046d0fffffffffffffffffffffffeb935000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032ffffffffa7000000000000000057ffffffb487ffffffb800000000000000004affffffff59000000000020feffb40000000000000050fffffffc00000000000000007affffffdd00000000000000c4fff80f0000000000001abaffffffffffffffffffffffffffd11000003de4ffffffffffffffffffffffffbc0d0000000000000000000001dbffffffffe2ccccccccccccccccccccccccccccfdffffffff5800000000000000000000000000000000000017f0ffffba00000000000010ecffffaa7c7c7c7c7cabffffd07c7c4f00000000000000000000000000001efcffffffff4d000000000004e5ffffffff79000000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097fffffffd11000000000000000000000000000000caffffffff230000000021fffffff20000000000000000004ee7ffffffffffffffffffffffffffffdc3500000000000000000000000070ffffffff74000000000052ffffffffca17000000000000002ae3fffffffc2000000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000003884bde2f5feffffeaac731e0000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffffff5c00000000000000000cf7fffff1c7ffffff67000000000000000008f4ffffffab000000000000c4fffb2300000000000050fffffffc0000000000000007d6ffffffc400000000000029feffac00000000000000000054d3ffffffffffffffffffffa90f0000000015acfefffffffffffffffff1780600000000000000000000000076ffffffffab000000000000000000000000002fffffffffea06000000000000000000000000000000000000006dffffff540000000000004bfeffdd0f000000005cffffa4000000000000000000000000000000000084ffffffffe20300000000000082ffffffffe0020000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc800000000000000000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000002abc3200000000000000000000cfffffffd7000000000000000000000000000000008affffffff550000000073ffffffe000000000000000000000118defffffffffffffffffffffec840a0000000000000000000000000070ffffffff740000000000bcfffffff2190000000000000000003affffffff7800000000000038ffffffffffffffffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000090ffff850000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff88000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7fffffffd13000000000000000000b1fffffffefffffd18000000000000000000b0fffffff409000000000057ffffa700000000000050fffffffc00000000000138bfffffffff83000000000000a7ffff4000000000000000000000003886bfe4f6fbedcb913500000000000000002a81bfe7f8f5dcb46614000000000000000000000000000015f9fffffffa1600000000000000000000000095ffffffff89000000000000000000000000000000000000000003cfffffe30b0000000000008dffffad000000005cffffa40000000000000000000000000000000005e8ffffffff7e000000000000001efdffffffff4c0000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000000000025edefffffffffffffffffffffeaa27000000000000000073faffca02000000000000000000e6ffffffc00000000000000000000000000000000071ffffffff6e00000008e4ffffffb2000000000000000000000000095794cae4f6f7e5cc9556080000000000000000000000000000000000000000000000000005f9ffffff990000000000000000000000c9ffffffb200000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000007fffff960000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff10000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029ffffffffc5000000000000000000005effffffffffffc50000000000000000000063ffffffff50000000000001d2fffe32000000000050ffffffffccccccccd7f4fffffffffff51f000000000035fdffbd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7ffffffff7600000000000000000000000af0fffffffe2300000000000000000000000000000000000000000039feffff8900000000000005c9ffff700000005cffffa40000000000000000000000000000000057fffffffffb1b0000000000000000b4ffffffffb60000000000000000000000000000000000000000000000000058fffffffff8000000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000000001bcafffffffffffffffffffffffffffffc7a00000000000000ebffffff69000000000000000000faffffffbc000000000000000000000000000000006effffffff8100000032ffffffff680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffff65000000000000000000000096ffffffcd00000000000038ffffffffffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000006fffffa7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffff790000000000000000000010faffffffffff740000000000000000000017feffffffa300000000000047ffffc9070000000050fffffffffffffffffffffffffffffe60000000000007d5fffb330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040ffffffffdb010000000000000000000060ffffffffbb00000000000000000000000000000000000000000000009ffffffa2900000000000021f0fffa3700005cffffa400000000000000000000000000000000c0ffffffffaf0000000000000000004dfffffffffd210000000000000000000000000000000000000000000000006afffffffffb0e0000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa003000000000099ffffffed0f0000000000000003ffffffffd60000000000000000000000000000000085ffffffff710000000058c7fff0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ffffffff60000000000000000000000091ffffffc500000000000038ffffffffffd3cccccccccccccccccccccccccccc5f000000000000000000000000000000000000000000000000000000000000005effffb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e2fffff7b8250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ceffffffff2e0000000000000000000000b7ffffffffff230000000000000000000000c9ffffffef0500000000000097ffff9f0000000050ffffffffffffffffffffffffffe04d0000000000009dffff7e00000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000000d7ffffffff4200000000000000000000c6ffffffff53000000000000000000000000000000000000000000000015eeffffbd0000000000000053ffffe112005cffffa40000000000000000000000000000002affffffffff4700000000000000000003e2ffffffff8900000000000000000000000000000000000000000000000de5ffffffffff930000000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000001bf6ffffff810000000000000000f1fffffffe16000000000000000000000000000000bdffffffff5a0000000000002e4b00000000000000000000002f71abd4e7f8f6e4d1a268230000000000000000000000000000000000000000000000000000000bffffffff860000000000000000000000b8ffffffa700000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffc9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f00000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffffe200000000000000000000000064ffffffffd20000000000000000000000007cffffffff480000000000000acfffff7100000050fffffffffffffffff4e7c6984c050000000000007effffbd03000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c0100000000000000000000000000000000000000000071ffffffffa70000000000000000002bffffffffe7040000000000000000000000000000000000000000000000006affffff570000000000000096ffffb4015cffffa400000000000000000000000000000093ffffffffde01000000000000000000007fffffffffeb070000000000000000000000000000000000000000000091fffffffffffffd3300000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000000000b8ffffffffe93500000000000000000387fffffffffe47000000000089fffffff11300000000000000c8ffffffff72000000000000000000000000000016f9ffffffff2d00000000000000000000000000000000025dcafffffffffffffffffffffffeb9480000000000000000000000000000000000000000000000000000daffffffdf060000000000000000001ef8ffffff6100000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023fdffda0000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000000000000000037f9ffffffef9f0e0000000000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff920300000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073fffffff2560000000000000000000000000acafffff24e00000000000000000000000012d4ffffff9a0000000000000017dcffff76000000000000000000000000000000000000000000018bffffcd0d0000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000000000000011f7fffffff914000000000000000090ffffffff840000000000000000000000000000000000000000000000000002ccffffe50d00000000000007cfffff7758ffffa400000000000000000000000000000bf1ffffffff7800000000000000000000001bfcffffffff5b00000000000000000000000000000000000000000031fcffffffffffffffcb02000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000004bfffffffff52b000000000000000000000094ffffffffd4010000000016f7ffffff82000000000000008dffffffffeb13000000000000000000000000008effffffffdf0000000000000000000000000000000025c3ffffffffffffffffffffffffffffffffa813000000000000000000000000000a93eff29f12000000000083ffffffff9801000000000000000ac3fffffffc3a0a000000000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000487f73000000000000000000000000000000000010e5fffffff729000000000044ffffffffd205000000000000000000006cffffffffffb600000000000000000000000000000000000000000000000000028effffffff9724b4fffffffb69000000000000000000000000000000000000000000000017d3ffffffffd72e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d7ffffa50d00000000000000000000000000000000000016b1ffffc91500000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000000000000000a2ffffffff730000000000000008edfffffffd1f000000000000000000000000000000000000000000000000000037feffff8c0000000000000026f3fffc87ffffa4000000000000000000000000000066fffffffffa16000000000000000000000000b1ffffffffc5000000000000000000000000000000000000000002c9ffffffffb9ffffffff6c000000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc800000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000099ffffffe8060000000000003fffffffffffbf07000000000000000000000049fcffffffff8500000000000000000000000000000035f1ffffffffffffffe7d3d6ebffffffffffffffdc1a000000000000000000000000b7ffffffffce050000000012eaffffffffc044050000000b58d9ffffffffffffffe59f05000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a0000000000000000000000a6ffffffffff6c000000000000000000000000000000000000000000000000000066fbffffffffffffffef440000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010bdffffe4570100000000000000000000000000000463ebffffab0900000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb230000000000000000000000000000000000003bffffffffd8000000000000005bffffffffb6000000000000000000000000000000000000000000000000000000009bfffffb2b000000000000005cfffffbffffa40000000000000000000000000000cfffffffffa9000000000000000000000000004affffffffff2e0000000000000000000000000000000000000069ffffffffce21fefffffff1180000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000002bfffffffff1090000000000000000000000000076ffffffffb2000000000027ffffffff5c00000000000001deffffffffffc91f0000000000000000005df6ffffffffec0f000000000000000000000000000028eeffffffffffca5b16000000001f6adbffffffffffd60f0000000000000000000043ffffffffffff6200000000004dfbfffffffffff8dad0defcffffffffffffffffffffff34000038ffffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffff7d00000000009cffffffffff3500000000000000000000000bd5fffffffff72a000000000000000000000000000000000000000000000000000042eeffffffffffdb2800000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020efffffeb6b000000000000000000000000000000000000177ac4e9fae7bd6f0d000000000000000000000000000000000375f7ffffd2620e00000000000000000000196fdefffff0640000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000000000000000d3ffffffff3e000000000000c1ffffffff4e0000000000000000000000000000000000000000000000000000000013edffffc000000000000000009fffffffffa40000000000000000000000000039ffffffffff410000000000000000000000000002e0ffffffff9800000000000000000000000000000000000016efffffffff5300a8ffffffffa70000000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc80000000000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000c4ffffffc3000000000000006ffffffffffffff89239020000001154c4ffffffffffff5d000000000000000000000000000000c3fffffffff8690000000000000000000489ffffffffff930000000000000000000066ffffffffffff8800000000000055f4ffffffffffffffffffffffffffffffffffffffff38000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac33b00000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000000000028f3ffffffffd006000000000000000000000000000000000000000000000000000025808080807c130000000000000000000000000000000000000000000000000000000000065c7d808080805f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffe4c0000000000000000000000000000000071f3ffffffffffffffea59000000000000000000000000000000000026a9fdfffff6bb7e573a2d32425b8fc6fdfffffa9c1b0000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe01800000000000000000000000000000000006cffffffffa4000000000027ffffffffe303000000000000000000000000000000000000000000000000000000000067ffffff5a000000000000000ad5ffffffa400000000000000000000000000a2ffffffffd80000000000000000000000000000007cfffffffff30e0000000000000000000000000000000000a3ffffffffcd010027fbffffffff4500000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000adffffffff64000000000000000000000000000000dfffffffff35000000000063fffffffe1c0000000000000ae4fffffffffffffffff5ded2e5fdffffffffffffff8000000000000000000000000000000057fffffffffe5700000000000000000000000081fffffffffc2a0000000000000000003fffffffffffff5e0000000000000021affdffffffffffffffffffe3694c4c4c4c4c4c4c10000038ffffffffff240000000000000000000000000000000000000000000000799f020000000000000000000000000000000012bc310000000000000000000000a9fffe92000000000000000026baf1c63b0000000000000053d3efab18000000000000000000000000000057ffffffffff8a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008effffffed1e000000000000000000000000000097ffffffffffffffffffffff780000000000000000000000000000000000002995e9ffffffffffffffffffffffffe18c1f000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb01000000000000000000000000000000000ff5fffffff712000000008cffffffff7f00000000000000000000000000000000025bb4e5f9f7dca13f000000000002caffffe70e000000000000002cf6ffffa400000000000000000000000013f7ffffffff7200000000000000000000000000000019fbffffffff6b0000000000000000000000000000000041fffffffffe3b00000090ffffffffdb08000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b00000000000ffaffffff6f000000000000005ffffffffffffffffffffffffffffffffffffff86b00000000000000000000000000000000b6ffffffffa80000000000000000000000000001cfffffffff8700000000000000000000b3ffffffffcc040000000000000000001f74afdceffbeed19d4f06000000000000000000000038ffffffffff240000000000000000000000000000000000000000000079ffffa202000000000000000000000000000013d0ffee3100000000000000000046ffffffff0d00000000000000000000000000000000000000000000000000000000000000000000000000000091fffffffffe41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7ffffffc80500000000000000000000000067ffffffffffe6d1e6fffffffffe4e00000000000000000000000000000000000000033f79add6e7f8f6e5d3a77437010000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b00000000000000000000000000000000009dffffffff6f00000006ebfffffffc1c00000000000000000000000000000013c6ffffffffffffffffa9090000000034fdffff8f00000000000000000000000000000000000000000000000075fffffffff71200000000000000000000000000000000adffffffffd400000000000000000000000000000006d7ffffffffa2000000000fe8ffffffff80000000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000baffffffc00000000000000000beffffffffb9befffffffffffffffffffeaf2e000000000000000000000000000000000df9ffffffff3100000000000000000000000000005affffffffdb000000000000000000000a8fedf19c11000000000000000000000000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000047ffffffffa40300000000000000000000000014d1ffffffeb100000000000000003d7ffffffbc0000000000000000000000000000000000000000000000000000000000000000000000000000000005c6ffffffffe31100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001eedffffff8e000000000000000000000010f2ffffffbe2d0000002dbdffffffe407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed110000000000000000000000000000000036ffffffffd400000057ffffffffb100000000000000000000000000000003c4fffffffff7fcffffffffb3000000000098fffffb2d0000000000000000000000000000000000000000000001dcffffffffa2000000000000000000000000000000000046ffffffffff3e00000000000000000000000000007cfffffffff118000000000060fffffffff8250000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000faffffffff120000000000000000000000000000008bffffffff820000000000006bfffffff9080000000000000021f1ffffffff572d85c1e6f8f2dcb7742700000000000000000000000000000000000031ffffffffe700000000000000000000000000000011ffffffffff07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000195ffffffffa7030000000000000000000015d3fffffffd5e00000000000000005fffffffff3500000065808080180000000000000000000000000000000000000000000000000000000000000000001ceaffffffffa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffff4f0000000000000000000078ffffffc505000000000004c1ffffff67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000000000000000000000000ceffffffff3a0000bcffffffff4900000000000000000000000000000067ffffffbd2b000553e4ffffff530000000012ebffffc20000000000000000000000000000000000000000000048ffffffffff3b000000000000000000000000000000000001ddffffffffa70000000000000000000000000022f6ffffffff7100000000000001c6ffffffffbb0000000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000f9ffffffff130000000000000000000000000000008cffffffff8100000000000029ffffffff4000000000000000005afffffffff52e0000000000000000000000000000000000000000000000000000004affffffffc500000000000000000000000000000000eeffffffff2000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000092ffffffffaa04000000000000000016d4fffffffc5b000000000000000005deffffffac00000000beffffff4c0000000000000000000000000000000000000000000000000000000000000000000043fdffffffff5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008affffffef20000000000000000000c6ffffff380000000000000031ffffffba00000000000000000000000000000000175a94bedff1fbfbf0dbba8d54110000000000000000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000000000000000000000000067ffffffff9d0021feffffffe002000000000000000000000000000000d9ffffc906000000002efaffffb0000000000064ffffff5d000000000000000000000000000000000000000000b1ffffffffd20000000000000000000000000000000000000078fffffffff916000000000000000000000000b6ffffffffd4040000000000000033fdffffffff5a00000000000000000070ffffffff74000000000000000000000000000078ffffffd80000000000000088ffffffc8000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e00000000000000ebffffff7d0000000000000000009bffffffffde12000000000000000000000000000000000000000000000000000056ffffffffba00000000000000000000000000000000e2ffffffff2d000094fff4e1b6731500000000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff2400000000000000000000000000000000000000000000000090ffffffffad0500000000000017d6fffffffc5800000000000000000062ffffffff3000000000a0ffffff840000000000000000003a93d2f3f7e0a5470000000000000000000000000000000000007cfffffffff221000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c4ffffffca060000000000000008faffffe5000000000000000000dbfffff7050000000000000000000000000358befdfffffffffffffffffffffffffab44c010000000000000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff48000000000000000000000000000000000cf2ffffffee057effffffff7b000000000000000000000000000000057de1ef33000000000000caffffd6000000000001c7ffffe80f000000000000000000000000000000000000001efcffffffff6b0000000000000000000000000000000000000016faffffffff7a000000000000000000000054ffffffffff4100000000000000000099ffffffffe80f000000000000000070ffffffff7400000000000000000004387799acdbffffffd80000000000000088ffffffc8000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a00000000000000b1ffffffab00000000000000000008cfffffffffba030000000000000000000000000000000000000000000000000046ffffffffce00000000000000000000000000000000f7ffffffff1d000094fffffffffff57d020000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000000000000008fffffffffaf050000000019d7fffffffb5500000000000000000000ceffffffbb000000000065fffffff11700000000001476d8ffffffffffffffffaf0b0000000000000000000000000000000001b4ffffffffc50300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cebffffff91000000000000001fffffffb9000000000000000000abffffff1b000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a000000000000000000000000000000000098ffffffff46d2fffffffb180000000000000000000000000000000000000100000000000000ceffffce00000000000032fdffff920000000000000000000000000000000000000084fffffffff50f0000000000000000000000000000000000000000aaffffffffe1020000000000000000000de4ffffffffa80000000000000000000013edffffffff95000000000000000070ffffffff74000000000000001887eeffffffffffffffffd80000000000000088ffffffc8000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff320000000000000083ffffffd60000000000000000000024f1ffffffff8a0000000000000000000000000000000000000000000000000023fffffffff10500000000000000000000000000001ffffffffff504000090ffffffffffffffae0200000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c000000000000008dffffffffb20600001ad8fffffffa52000000000000000000003bffffffff49000000000012f5ffffffd7490b1047a2f8ffffffffffffffffffffffbf020000000000000000000000000000000011dfffffffff7d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048feffffff5300000000000031ffffffa90000000000000000009affffff3000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e00000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd7000000000000000000000000000000000030ffffffffb1ffffffffac00000000000000000000000000000000000000000000000000001df8ffff950000000000000095fffffc2f000000000000000000000000000000000005e8ffffffff9c00000000000000000000000000000000000000000043ffffffffff4d0000000000000000008efffffffff41c000000000000000000000069fffffffffd350000000000000070ffffffff740000000000006af6ffffffffffffffffffffd80000000000000088ffffffc80000000000000000006affffffffa200000000000000000000000000001dffffffffef020000000000000057fffffffb050000000000000000000053ffffffffff5800000000000000000000000000000000000000000000000000e7ffffffff4600000000000000000000000000006effffffffbe00000034c3d4f6ffffffffff8000000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000008bffffffffb4071bdafffffff94f0000000000000000000000a1ffffffe30200000000000085fffffffffffffffffffffffffffff8d7dcffffffffff70000000000000000000000000000000000033f8fffffffb3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086fffffff02300000000002bffffffad0000000000000000009fffffff2a000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb23000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000000000000000000000000c9ffffffffffffffff440000000000000000000000000000000000000000000000082363dfffffe6170000000000000010e9ffffc5010000000000000000000000000000000057ffffffffff3500000000000000000000000000000000000000000001daffffffffb600000000000000002ffcffffffff7800000000000000000000000002ceffffffffcd0300000000000070ffffffff740000000003a7ffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000002fffffffff1d000000000000000000000091fffffffff52f0000000000000000000000000000000000000000000000008affffffffc4000000000000000000000000000be3ffffffff5e0000000000000869f6fffffff618000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff1000000000000000000089ffffffffbadbfffffff94c000000000000000000000006f0ffffff840000000000000005beffffffffffffffffffffffc2590b00002cd4ffffffe404000000000000000000000000000000000067ffffffffdb0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c1ffffffcd070000000019ffffffc4000000000000000000b7ffffff180000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe8280000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f000000000000000000000000000000000062ffffffffffffffdc010000000000000000000000000000000000000000000054fffffffffbaa1900000000000000000061ffffff6000000000000000000000000000000000c1ffffffffcd000000000000000000000000000000000000000000000075fffffffffd2200000000000001c7ffffffffd906000000000000000000000000003afeffffffff6e00000000000070ffffffff74000000009dffffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000000bfffffffff780000000000000000000000000de5ffffffff47000000000000000015ffffffff36000000000000000000000005c8ffffffffde1300000000000000000000000000000000000000000000001af0ffffffff7e000000000000000000000002a5ffffffffd70700000000000000004bffffffff74000000000038ffffffffff240000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000000000000000000087fffffffffffffff8490000000000000000000000004cffffffff2900000000000000000898fdffffffffffffeb902c00000000000025fcffffff3f000000000000000000000000000000000000a1ffffffff910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ae9ffffff950000000002effffff3050000000000000003edffffef0200000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe01800000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c00000000000000000000000000000000000af0ffffffffffff76000000000000000000000000000000000000000000000054ffffffffb6210000000000000000000001c4ffffe91000000000000000000000000000002affffffffff62000000000000000000000000000000000000000000000014f7ffffffff8900000000000067ffffffffff47000000000000000000000000000000a2fffffffff11a000000000070ffffffff7400000054ffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000046fffffffff62d000000000000000000000098ffffffffcf00000000000000000001faffffff4f0000000000000000000000001eedffffffffbb0300000000000000000000000000000000000000000000005bfeffffffff950c000000000000000018b1fffffffff63700000000000000000000c0ffffffb6000000000038ffffffffff24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085fffffffffff746000000000000000000000000009dffffffda0000000000000000000000277db0c5ba934f06000000000000000000a7ffffff7900000000000000001e72b5def4f8e5c286340bd6fffffffd3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045fdffffff5700000000b3ffffff590000000000000053ffffffb200000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb0100000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff5800000000000000000000000000000000000093fffffffffff91500000000000000000000000000000000000000000000000d3255adfffff137000000000000000000002ffcffff95000000000000000000000000000094fffffffba8020000000000000000000000000000000000000000000000005eeeffffffeb070000000015eeffffffffaf0000000000000000000000000000000018f1ffffffffaa000000000070ffffffff74000004e1ffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000b3ffffffffea370000000000000000048afffffffffd4200000000000000000000e7ffffff5e000000000000000000000000004bfeffffffff8b0000000000000000000000000000000000000000000000006bfcffffffffec904a1b070a20539ef4fffffffff34800000000000000000000007affffffd6000000000038ffffffffff2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ef0ffffffffc90900000000000000000000000000dfffffff8b0000000000000000000000000000000000000000000000000000000074ffffff950000000000001aa1fbffffffffffffffffffc666f9ffffffd80500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffff2250000005affffffe51b000000000019e2ffffff5a00000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff610000000000000000000000000000000000002cffffffffffa70000000000000000000000000000000000000000000000000000000094ffffdc030000000000000000000092fffffd3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1fffffffff620000000000000000000000000000000000073ffffffffff470000000070ffffffff74000047ffffffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff800000000000000000000000deffffff66000000000000000000000000000088ffffffffff590000000000000000000000000000000000000000000000003ed9ffffffffffffffffffffffffffffffffc52700000000000000000000000061ffffffe6000000000038ffffffffff24000000000000000000000000000000000000000000d0fffff54c0000002285c7eefcf7deb06a110000000000000000000000000000000000000020dfffffffffffffbd0a00000000000000000000001effffffff49000000000000000000000000000000000000000000000000000000002c80808051000000000044eafffffffffffffffffffffffffcecffffffff6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002beffffffd008000004ddffffffe5651b051b65e4ffffffdf04000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed11000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052605000000000021ffffff41000000000000000000000fe8ffffc70100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffffffff7e00000000000000000000000000000000000004d5ffffffffdc0800000070ffffffff74000095ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff98020000000000000000000000d5ffffff6e000000000000000000000000000003c1fffffffff530000000000000000000000000000000000000000000000000035cbdfdfffffffffffffffffffff8ae4900000000000000000000000000006bffffffd7000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffa3000380fbfffffffffffffffff576040000000000000000000000000000000021e0fffffff9ffffffffbf0b000000000000000000005bfffffffd0f000000000000000000000000000000000000000000000000000000000000000000000000003df8fffffffffffffde2d1dcf4ffffffffffffffffe30700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018e7ffffff990000003dfcfffffffffffffffffffffffc3e00000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066faffc1000000000009ffffff6600000000000000000000005dffffff6300000000000000000038fffffffffffffffffffffffffffffff6eaceab783c03000000000000000000000000000000000000000005d6ffffffffdc080000000000000000000000000000000000000042feffffffff8300000070ffffffff740000b9ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000000000000000d3ffffff700000000000000000000000000000001ae9ffffffffdf1300000000000000000000000000000000000000000000000032aafafffffffffffffffffffff4982000000000000000000000000000007effffffc2000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffba09bfffffffffffffffffffffffffcf1b000000000000000000000000000022e2fffffff54176ffffffffc10c0000000000000000008affffffd10000000000000000000000000000000000000000000000000000000000000000000000000018edffffffffffc3510f000000023692f8ffffffffffff680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041fdffffff5a0000005ffbfffffffffffffffffffa5f00000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe90500000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffff490000000043ffffff63000000000000000000000000c2ffffeb12000000000000000038ffffffffffffffffffffffffffffffffffffffffffe992240000000000000000000000000000000000007affffffffde2e00000000000000000000000000000000000000000075f5fffffff927000070ffffffff740000d1ffffffffffffffffffffffffffffffd80000000000000088ffffffc800000000000000000000000000000155d8fffffffffffffffffffffda1210000000000000000000000000000dcffffff680000000000000000000000000000000043fdffffffffbc030000000000000000000000000000000000000000000593fdffffffffffe7d3d6ecfffffffffff7720000000000000000000000000092ffffffa5000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffd4b3fffffffce6d1e0f8ffffffffffffdc1d00000000000000000000000024e3fffffff43f000074ffffffffc30d0000000000000000b6ffffffa30000000000000000fcffffffe80000000000000000000000000000000000000000000000009cfffffffffd6f00000000000000000023d0ffffffffffca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007efffffff3280000003ed0ffffffffffffffcf3d0000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff4800000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000000000000000000000000000000000000035c7fbffffd21700000000000000000000000000000000000001d7ffffed53070441dfffffff270000000000000000000000002cfbffff98000000000000000038fffffffffffffffffffffffffffffffffffffffffffffffda31b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000c4ffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000000000000e4ffffff6000000000000000000000000000000000007dffffffffff8c000000000000000000000000000000000000000005baffffffffe26a1900000000247beeffffffff92000000000000000000000000baffffff78000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffffffc85a10000000074abbffffffffffd1050000000000000000000025e4fffffff33d0000000072ffffffffc50e00000000000000e0ffffff790000000000000000fcffffffe800000000000000000000000000000000000000000000001dfdffffffff7800000000000000000000000cd2ffffffffff190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002baffffffd30900000002438eb4c5b38d41010000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a00000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd30000000000000000000000000000000000000172faffffffcd1300000000000000000000000000000000000000003dfbfffffffdfbffffffffa300000000000000000000000000008ffffffd340000000000000038ffffffffffd3cccccccccccccccccdd6ebfffffffffffffffff361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aaffffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffffff5400000000000000000000000000000000000070ddfdffffff590000000000000000000000000000000000000090ffffffffb20c00000000000000001accffffffff630000000000000000000000e4ffffff49000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffff7e01000000000000000068feffffffff8100000000000000000026e5fffffff33c00000000000070ffffffffc70f000000000001fbffffff520000000000000000fcffffffe800000000000000000000000000000000000000000000006bffffffffd80200000000000000000000000028fcffffffff56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e5f9edcb84220000000016e5ffffff9d0000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd700000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff95000000000000000000000000000000000014b4ffffffffc60f000000000000000000000000000000000000000000004eefffffffffffffffb00900000000000000000000000000000ddeffffca0200000000000038ffffffffff240000000000000000000000114997eeffffffffffff9a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000effffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000027fcffffffd1080000000000000000000018eaffffffed0b0000000000000000000fffffffff1a000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff7d000000000000000000000070fffffffffa190000000000000028e6fffffff23b00000000000000006fffffffffc9100000000016ffffffff370000000000000000fcffffffe80000000000000000000000000000000000000000000000b1ffffffff6f0000000000000000000000000000a3ffffffff7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059eafffffffffffffffa8e050000003efcffffff5f00000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000000000000000000003fe4ffffffffbf0c000000000000000000000000000000000000000000000000177fc9f1fae6af4e000000000000000000000000000000000024c1f9ff6600000000000038ffffffffff2400000000000000000000000000000f88f7ffffffffffad030000000000000000000000000000000000000000000000000024e2fffff7b8250000000000000000000000000000000000acffffff200000001dfeffffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ffffffff22000000000000000000000000000000000000000000000000000000000000000000000000000000000000008affffffff4f0000000000000000000000007affffffff610000000000000000003bffffffeb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000001c5ffffffff7f00000000000029e7fffffff139000000000000000000006dffffffffcb110000002dffffffff1d0000000000000000fcffffffe80000000000000000000000000000000000000000000000ceffffffff2c000000000000000000000000000051ffffffff9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffbe080000007afffffff52a000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe4030000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000021d6ffffffffff98000000000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000acffffff20000000009effffffffffffffffffffffffffffd80000000000000088ffffffc80000000000000000000000000000000000000000003eddffffaa00000000000000000000000000000000004cfffffffe0900000000000000000000043c83c1daeff9e6d1ab651d000000000000000000000000000000000000000000cbfffffff8070000000000000000000000002affffffffa100000000000000000065ffffffc000000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c0000000000000000000000004bffffffffe400000000000de7fffffff1380000000000000000000000006afeffffffb40000003cffffffff090000000000000000fcffffffe80000000000000000000000000000000000000000000000e5ffffffff0b000000000000000000000000000025ffffffff9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050ffffffffffecd1ddfeffffffff9f00000001b7ffffffd50b0000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c0000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff7600000000000000000000000000001abfffffffffffaf07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000011c1ffffffffff5b00000000000000000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000acffffff200000000015e9ffffffffffffffffffffffffffd80000000000000088ffffffc8000000000000000000000000000000000000000034f4fffff31b000000000000000000000000000000000076ffffffdf000000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000eeffffffd90000000000000000000000000003feffffffc40000000000000000007effffffa700000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c00000000000000000000000003e9ffffffff27000000000065fefff036000000000000000000000000000068feffe62700000044ffffffff010000000000000000fcffffffe80000000000000000000000000000000000000000000000e3fffffffc00000000000000000000000000000016ffffffff8e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e0ffffffce3a000000178fffffffff3b00000014e3ffffffa1000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000000000000036a808080807c530200000000000000000000000000000000000000000000000000000000000000000000000012558fbbddf1fbfdf7eedcc6a37c470f000000000000000000000038ffffffffff240000000000000000000000000000000000000edefffffffff016000000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000acffffff2000000000002eeefffffffffffffffffffffffff7cccccccccccccce7fffffff4cccccccccca50000000000000000000000000023e9ffffff73000000000000000000000000000000000000a2ffffffb400000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000000000f5ffffffd40000000000000000000000000001fbffffffcc00000000000000000091ffffff9200000000000038ffffffffffffffffffffffffffffffffffffffffff500000000000d0ffffffff1c00000000000000000000000000afffffffff6200000000000065ee350000000000000000000000000000000066e426000000004cfffffff8000000000000000000fcffffffe80000000000000000000000000000000000000000000000caffffffff0e00000000000000000000000000002affffffff7900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffda0d0000000000007effffffb5000000003bfbffffff6200000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014eb6fafffffffffffffffffffffffffffffab86211000000000000000038ffffffffff240000000000000000000000000000000000000038fbffffffff9800000000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000acffffff2000000000000029ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd000000000000000000000000015dbffffffd304000000000000000000000000000000000000dbffffff88000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000000000000dcfffffff2040000000000000000000000001fffffffffb30000000000000000009affffff9000000000000038ffffffffffd3cccccccccccccccccccccccccccccc3f0000000000d0ffffffff1c000000000000000000000000007fffffffff9200000000000000120000000000000000000000000000000000000c00000000004cfffffff7000000000000000000fcffffffe80000000000000000000000000000000000000000000000a5ffffffff3a000000000000000000000000000056ffffffff53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffff590000000000000006e4fffff90b0000000076fffffff62d00000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff58000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ad6fffffffffffffffffffffffffffffffffffffffff9961900000000000038ffffffffff24000000000000000000000000000000000000000094fffffffffa1a00000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000acffffff2000000000000000046edcffffffffffffffffffffffffffffffffffffffffffffffffffffffd000000000000000000000000bcafffffffe3d00000000000000000000000000000000000017ffffffff4e00000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000000000000000000000000000b1ffffffff4700000000000000000000000070ffffffff870000000000000000007cffffffbb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000065ffffffffa5000000000000000000000000000000000000000000000000000000000000000045fffffffe000000000000000000fcffffffe8000000318bcce6fbf4d8a65b080000000000000000000059ffffffff890000000000000000000000000000a5fffffffc10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dafffffc0d000000000000000099ffffff420000000001b3ffffffd80c0000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000046fffffffff55b0000000000000000000000000000000000000000006cf7ffffffff960000000000000000000000000011abfffffffffffffffffee6d4cdd3e2fafffffffffffffffffff685000000000038ffffffffff24000000000000000000000000000000000000000024fdffffffff8200000000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000acffffff20000000000000000000024281bcdbedfdffffffffffffffffffffffffffffffffffffffffffd00000000000000000000004b5ffffffffa00000000000000000000000000000000000000056fffffffd11000000000000b8ffffffffe93500000000000000000387fffffffffe470000000000000000000000000000005cffffffffcd070000000000000000000015e8ffffffff3000000000000000000029fefffffd35000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000056ffffffffb800000000000000000000000000000000000000000000000000000000000000003dffffffff060000000000000000fcffffffe80012a5ffffffffffffffffffe85c0000000000000000000df5fffffff11400000000000000000000000023fbffffffc100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f2ffffe300000000000000000070ffffff5b000000000012e1ffffffa50000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe020000000000000000098fffffffff7270000000000000000000000000000000000000032fcffffffffdf0c0000000000000000000000002ae0ffffffffffffda803c090000000000052d5ea8f4fffffffffffff4000000000038ffffffffff24000000000000000000000000000000000000000000b1ffffffffdb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffee1600000000000000000000000000000000000000a4ffffffcf0000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000000000009deffffffffb00d00000000000000001ccdffffffffbb000000000000000000000089ffffffe44d0500000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000050ffffffffbe000000000000000000003078bad8effae7d2b37431010000000000000000000031ffffffff170000000000000000fcffffffe81fdfffffffffffffffffffffffffb50b000000000000000081ffffffffb7030000000000000000000007c7ffffffff4a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000feffffd800000000000000000064ffffff6a00000000000038faffffff6600000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b0000000000000000000cdeffffffffc602000000000000000000000000000000000004cefffffffffe4200000000000000000000000032eeffffffffffd95a020000000000000000000000000966defffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000061ffffffffff2b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffffee1470000000000000000000000000000000000000004edffffff80000000000000c4ffffffff750000000000000000000000000be3ffffffff4d00000000000000000000000000000048feffffffffe26f1c000000002781eefffffffff6250000000000000000000000007dfbfffffffb47000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000005dffffffffaf000000000000000047caffffffffffffffffffffffe37c0d00000000000000001bffffffff300000000000000000fcfffffff2defffffffae2d1e4fcffffffffffffc10c000000000000000be3ffffffffb512000000000000000014bcffffffffc50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0ffffe500000000000000000072ffffff5b0000000000000072fffffff730000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd30000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a00000000000000000000003ffeffffffff73000000000000000000000000000000000076ffffffffff9700000000000000000000000022e9ffffffffff8c030000000000000000000000000000000004e5fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000023ffffffffff670000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff2000000000000000000000043c83c1daeff9e6d1ab651d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047ffffffff2b00000000002bfffffffff1090000000000000000000000000076ffffffffb20000000000000000000000000000000069ffffffffffffffe8d4d7edfffffffffffff74500000000000000000000000000002be1ffffff4c000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000006bffffffffa00000000000000badffffffffffffffffffffffffffffffe9540000000000000004fdffffff4a0000000000000000fcffffffffffffb14c080000000f5ad4ffffffffffa9000000000000000031f3ffffffffee7f2a00000000267dedffffffffea1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8fffffe110000000000000000a0ffffff430000000000000000b0ffffffda0d0000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff950000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000000000091fffffffff72700000000000000000000000000000023f6ffffffffdf0c000000000000000000000006ccfffffffff95d00000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000e5ffffffff9a0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffd60000000000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000000000000000057edffffffffffffffffffffffffffffdd3b000000000000000000000000000065f2ffffffff4c000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000000000091ffffffff8800000000001bd0fffffffffffffce5d2d7ecffffffffffffff8100000000000000e7ffffff6e0000000000000000fcfffffffff85900000000000000000592ffffffffff53000000000000000047f2ffffffffffffefd8d6ecfffffffffffff13d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fffffff620000000000000009ebfffffb0c000000000000000010dfffffffa900000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff43000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000000000009daffffffffc6020000000000000000000000000000bcfffffffffe4300000000000000000000000082ffffffffff690000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000bfffffffffbc0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000000043c83c1daeff9e6d1ab651d000000000000000000000000000000000000000011f8ffffff72000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000000000000001894f3ffffffffffffffffffffe9810b000000000000000000000000000070ffffffed611400000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c00000000000000000000000000bfffffffff570000000005c8ffffffffffc55410000000001e69ccffffffffe90f000000000000bfffffff980000000000000000fcfffffffd4e00000000000000000000009fffffffffe103000000000000000026d2ffffffffffffffffffffffffffffd8270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055ffffffe11200000000000089ffffffbc0000000000000000000035f9ffffff6a000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000000000000000000000000000000000000155792bcddf0faf9eedab88b500f0000000000000000000000000000000000000039fdffffffff730000000000000000000000000060ffffffffff9800000000000000000000000020f7ffffffffa1000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000adffffffffd90000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa0030000000000000000000000025edefffffffffffffffffffffeaa2700000000000000000000000000000000000078fffffff410000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b000000000000000000000000000000000000000f5b9acfe4f7f4e1c98f50070000000000000000000000000000001bf9ffffff44000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1d00000000000000000000000010f9ffffffff240000000090fffffffffa620000000000000000000043cefffb3f0000000000000093ffffffc30000000000000000fcffffffe80000000000000000000000000fe7ffffffff4f0000000000000000000564dfffffffffffffffffffffe87108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ddffffffd43f0100001a96ffffffff4700000000000000000000006ffffffff8320000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008afffffffff727000000000000000000000016edffffffffe00d0000000000000000000000009affffffffef0f000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000009affffffffe50000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000001bcafffffffffffffffffffffffffffffc7a0000000000000000000000000000000007e6ffffff9800000000000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffc600000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffa100000000000000000000000068ffffffffde0000000024fcfffffffe4e000000000000000000000000024e38000000000000000066fffffff50500000000000000fcffffffe8000000000000000000000000007bffffffffb50000000000000000000000043e86c3dcf2f6e1ca924a0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004bfeffffffffeed2deffffffffffaf00000000000000000000000000adffffffdd0f0000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007d4ffffffffc60200000000000000000000a7ffffffffff4300000000000000000000000014f8ffffffff8100000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000008cffffffffed0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa003000000000000000000000000000067fffffffb2300000000000000faffffffff120000000000000000000000000000008bffffffff820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffff9800000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffff82000000000000000000000fe8ffffffff7f000000009cffffffff920000000000000000000000000000000000000000000000002cffffffff3700000000000000fcffffffe8000000000000000000000000001efffffffff4030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077ffffffffffffffffffffffce0f000000000000000000000000000fddffffffad000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033fbffffffff730000000000000000004affffffffff980000000000000000000000000069fffffffff51100000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff24000000000000000000000000000000000000000000009bffffffffe40000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000004bfffffffff52b000000000000000000000094ffffffffd40100000000000014e3fffffffffc9839020000001059d0ffffffffff86000000000000000000000000000ae5ffffff9c0000000000000000f9ffffffff130000000000000000000000000000008cffffffff81000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000097ffffff8d00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffffffa309000000000000000ac0fffffffff81e0000000ef9fffffff61400000000000000000000000000000000000000000000000001eaffffff7600000000000000fcffffffe80000000000000000000000000000dfffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057e9fffffffffffffffda00b00000000000000000000000000000032f8ffffff6e00000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000000000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f0000000000000000000000000000000000000082fffffffff727000000000000000ce1ffffffffe10d00000000000000000000000000bbffffffffae0000000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000adffffffffd80000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff2000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000000000000079fffffff91e0000000000000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000085ffffffa100000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffffd3ffffdb63110000000e5bddffffffffff81000000004bffffffff9f0000000000000000000000000000000000000000000000000000abffffffc300000000000000fcffffffe80000000000000000000000000000afffffffff620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6cb8e4f9edcf8b2d0000000000000000000000000000000000004de9fffff9350000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd7120000000000000000000000000000000000000000000db5ffffffe64800000067f4ffffff9203000000000000000000000000000000000000000005cfffffffffc60200000000000091ffffffffff440000000000000000000000000004f5ffffffff6a0000000000000000000000000000000000000000000000e0fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000bfffffffffbc0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000002bfffffffff1090000000000000000000000000076ffffffffb200000000004bfffffffff52b000000000000000000000094ffffffffd4010000000000000000000000e3ffffff8a000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000072ffffffb600000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff27c2fffffffee0d0e0faffffffffffffcd07000000008cffffffff5900000000000000000000000000000000000000000000000000005efffffffd15000000000000fcffffffe8000000000000000000000000000095ffffffff75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe0200000000000000000000000000000000000000000000000028effffffff9724b4fffffffb6900000000000000000000000000000000000000000000002ef9ffffffff73000000000036fdffffffff9900000000000000000000000000002fffffffffff3600000000000000000000000000000005a5ccccccccccccf9fffffff4000000000038ffffffffff2400000000000000000000000000000000000000000000e7ffffffff9a0000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff200000006dffffffff9e00000000000000000000000000001bfffffffff10300000000c4ffffffff750000000000000000000000000be3ffffffff4d0000000000000000000000a2ffffe30b000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000000000000000000000000000000005cffffffff880000000000000000000000000000000000004effffffdb00000000000038ffffffffff24000000000000000000000000000000000000000000d0ffffffff1c0ca5ffffffffffffffffffffffffd0120000000000beffffffff1e00000000000000000000000000000000000000000000000000000ff9ffffff67000000000000fcffffffe8000000000000000000000000000086ffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000000000000000000000000000000000000000066fbffffffffffffffef44000000000000000000000000000000000000000000000000007bfffffffff72700000005d2ffffffffe10d000000000000000000000000000054ffffffffff1300000000000000000000000000000023fffffffffffffffffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000025ffffffffff650000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000adffffffff64000000000000000000000000000000dfffffffff350000002bfffffffff1090000000000000000000000000076ffffffffb20000000000000000000000005ee953000000000000000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000025fffffffd0a000000000038ffffffffffd3cccccccccccccccccccccccccccccccccccc0c0000d0ffffffff1c000057e8fffffffffffffffffb8c0c000000000000d2fffffffd03000000000000000000000000000000000000000000000000000000b3ffffffc9000000000000fcffffffe8000000000000000000000000000080ffffffff8e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000175a94bedff1fbfbf0dbba8d5411000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a0000000000000000000000000000000000000000000000000000000042eeffffffffffdb28000000000000000000000000000000000000000000000000000003caffffffffc60200007bffffffffff4500000000000000000000000000000070fffffffffa0000000000000000000000000000000024fffffffffffffffffffffff4000000000038ffffffffff2400000000000000000000000000000000000000000063ffffffffff290000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000d4ffffffff36000000000000000000000000000000b0ffffffff5b0000006dffffffff9e00000000000000000000000000001bfffffffff1030000000000000000000000000d000000000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000002f8ffffff35000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000085eabdcf5f7dfbf74200000000000000000e5ffffffea0000000000000000000000000000000000000000000000000000000051ffffffff2c0000000000fcffffffe800000000000000000000000000008dffffffff7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358befdfffffffffffffffffffffffffab44c01000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e0000000000000000000000000000000000000000000000000000000000000025808080807c130000000000000000000000000000000000000000000000000000000029f7ffffffff730026f7ffffffff9a000000000000000000000000000000007dfffffffff00000000000000000000000000000000024fffffffffffffffffffffff4000000000038ffffffffff24000000000000000000000000000000000000000000b4ffffffffd8000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000e8ffffffff200000000000000000000000000000009affffffff6f000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000d3ffffff62000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000000000000000000000000000000000000000f3fffffffffffffffffffffffffffffffffffffffffffff853000000000000000003e1ffffff9a0000000000fcffffffe800000000000000000000000000009bffffffff700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055deffffffffffffffffffffffffffffffffffffd447000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b04600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073fffffffff71fc0ffffffffe20e0000000000000000000000000000000085fffffffff00000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000027feffffffff7f000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000faffffffff120000000000000000000000000000008bffffffff82000000d4ffffffff36000000000000000000000000000000b0ffffffff5b0000000000000000000000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf0000000000000000000000000000000000000000000000005cffffffff8800000000000000000000000000000000000000abffffff8f000000000038ffffffffffffffffffffffffffffffffffffffffffffffff100000d0ffffffff1c000000000000000000000000000000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000000000000000078fffffff81800000000fcffffffe80000000000000000000000000000c1ffffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016b6ffffffffffffffffffffffffffffffffffffffffffffa60e0000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c3ffffffffd6ffffffffff4600000000000000000000000000000000007efffffffffa0000000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000000097fffffffff817000000000000000000000000000000000058fffffffff80000000000000000000000000000000000000000000000acffffff20000000f9ffffffff130000000000000000000000000000008cffffffff81000000e8ffffffff200000000000000000000000000000009affffffff6f000000000000000038ffffffffff1c0000000000000000000000b3ffffffffea370000000000000000048afffffffffd420000000000000000000000000000000000000000000000005cffffffff88000000000000000000000000000000000000008affffffb6000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a00000000000000000010efffffff8a00000000fcffffffe80000000000000000000000000001eeffffffff270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e6ffffffffffffffffffffffffffffffffffffffffffffffffdb2300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff740000000000000000000000000000000000000000000063e3ffffbc00000070ffffffff7400000000000000000000000000000024f5ffffffffffffffff9b00000000000000000000000000000000000071ffffffffff1400000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000000003cfcffffffff940000000000000000000000000000000000006afffffffffb0e00000000000000000000000000000000000000000000acffffff20000000e7ffffffff210000000000000000000000000000009affffffff6e000000faffffffff120000000000000000000000000000008bffffffff82000000000000000038ffffffffff1c000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000000368acce7fbf2d49f4e020000005cffffffff880000000000000000000000000000000000000079ffffffcb000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000aeffffffff260000000000000000000000000000daffffff76000000000000000000007bfffffff71c000000fcffffffe9000000000000000000000000003bfffffffff20100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038f1ffffffffffffffe5a05b321d080b1f3462a7ebffffffffffffffe828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000000047fdffffffbc00000070ffffffff74000000000000000000000000000000006cffffffffffffffe20e00000000000000000000000000000000000055ffffffffff3800000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000fe0ffffffffee1300000000000000000000000000000000000de5ffffffffff9300000000000000000000000000000000000000000000acffffff20000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000f9ffffffff130000000000000000000000000000008cffffffff81000000000000000038ffffffffff1c0000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000001fb2ffffffffffffffffffda4200005cffffffff880000000000000000000000000000000000000067ffffffde000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c0000000000000000000000000000000000000000006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000ceaffffff9d000000fcffffffff6f0000000000000000000000009affffffffaf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025ecffffffffffffd45501000000000000000000000461deffffffffffffe0180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000001debffffffffbc00000070ffffffff740000000000000000000000000000000062ffffffffffffffa00000000000000000000000000000000000000031ffffffffff6d00000000000000000000000000000000000000000000000000000000000000000038ffffffffff24000000000000000000000000000000000012c4ffffffffff5600000000000000000000000000000000000091fffffffffffffd33000000000000000000000000000000000000000000acffffff20000000aaffffffff66000000000000000000000000000000e1ffffffff32000000e7ffffffff210000000000000000000000000000009affffffff6e000000000000000038ffffffffff1c0000000000000000000000000016c3fffffffffffffffffffffffffffffa71000000000000000000000032eefffffffffffffffffffffffe98055cffffffff880000000000000000000000000000000000000063ffffffe4000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c0000000000000000000000000000000000000000002affffffffb8000000000000000000000000002effffffff21000000000000000000000067fffffffb0c0000fcfffffffffd54000000000000000000002cfcffffffff4f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006cffffffffffffc720200000000000000000000000000000483ffffffffffffbb010000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000000000000000000000038ffffffff740000000000000000000000000000000000000006c8ffffffffffbc00000070ffffffff740000000000000000000000000000001ff2fffffffffffffffe4600000000000000000000000000000000000005f6ffffffffb500000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000023d8ffffffffff9200000000000000000000000000000000000031fcffffffffffffffcb020000000000000000000000000000000000000000acffffff200000006affffffffa200000000000000000000000000001dffffffffef02000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000038ffffffffff1c00000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000027eefffffffffffff4dad0e6ffffffffb766ffffffff880000000000000000000000000000000000000082ffffffd1000000000000001cffffffffffffffffffffffffffffffffffffffffff04000000d0ffffffff1c00000000000000000000000000000000000000000000c4fffffffe3500000000000000000000000090ffffffdb00000000000000000000000002c9ffffc2000000fcfffffffffffd7d01000000000000001cdeffffffffe205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084ffffffffffef4500000000000000000000000000000000000055f6ffffffffff6b000000000000000000000000000000000010e5fffffff729000000000044ffffffffd20500000000000000000000000038ffffffff740000000000000000000000000000000000000093ffffffffffffbc00000070ffffffff74000000000000000000000000000001bfffffffffdbfcffffffe512000000000000000000000000000000000000c0fffffffff818000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000118bf8ffffffffffa902000000000000000000000000000000000002c9ffffffffb9ffffffff6c0000000000000000000000000000000000000000acffffff2000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000038ffffffffff1c0000000000000000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000001c1ffffffffffb83e030000001b72e7fffff1ffffffff8800000000000000000000000000000000000000cdffffffa80000000000000016ccccccccccccccccedffffffffd9cccccccccccccc03000000d0ffffffff1c000000000000000000000000000000000000000000004bffffffffd10d000000000000000000002cf6ffffff7a0000000000000000000000000032f07404000000fcfffffff2dcffffc650080000001870eeffffffffff51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f7fffffffffd4600000000000000000000000000000000000000005dffffffffffed110000000000000000000000000000000056ffffffffff820000000000a0ffffffffff3a00000000000000000000000038ffffffff7400000000000000000000000000000000000057ffffffffffffffbc00000070ffffffff74000000000000000000000000000071fffffffffd36a5ffffffffaa0000000000000000000000000000000000006fffffffffff8b000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000124d9bf0ffffffffffff970200000000000000000000000000000000000069ffffffffce21fefffffff11800000000000000000000000000000000000000acffffff2000000000bfffffffff780000000000000000000000000de5ffffffff47000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000059ffffffffff7e000000000000000014b4ffffffffffff880000000000000000000000000000000000005dffffffff6400000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c0000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d00000000000000000000000000000d0000000000fcffffffe81ddefffffffbdbd1e5feffffffffffffa500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097ffffffffff7b0000000000000000000000000000000000000000000097ffffffffff7d0000000000000000000000000000000052ffffffffff7d00000000009cffffffffff3500000000000000000000000038ffffffff74000000000000000000000000000000000028f3ffffffffffffffbc00000070ffffffff740000000000000000000000000029f7ffffffff8d0019eeffffffff5d000000000000000000000000000000000019fafffffffff3140000000000000000000000000000000000000000000000000000000000000038ffffffffffd3cccccccccccccccccdd8edfffffffffffffffff25e0000000000000000000000000000000000000016efffffffff5300a8ffffffffa700000000000000000000000000000000000000acffffff200000000046fffffffff62d000000000000000000000098ffffffffcf000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffffffab000000000000000000000197ffffffffff88000000000000000000000000000000000a73faffffffee0c00000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d000000000000000000000000000000000000000000fcffffffe8001cc2ffffffffffffffffffffffffae04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f6ffffffffdb03000000000000000000000000000000000000000000000deeffffffffe9050000000000000000000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000000000038ffffffff74000000000000000000000000000000000bd5ffffffffffffffffbc00000070ffffffff7400000000000000000000000004cbffffffffdc0a00005cfffffffff01f0000000000000000000000000000000000a3ffffffffffb40100000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffffffca0190000000000000000000000000000000000000000a3ffffffffcd010027fbffffffff45000000000000000000000000000000000000acffffff200000000000b3ffffffffea370000000000000000048afffffffffd42000000000000bfffffffff780000000000000000000000000de5ffffffff4700000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000024fffffffffd21000000000000000000000002abffffffff880000000000000000000000000035c3d5f7ffffffffff6c0000000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c0000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d00000000000000000000000000000000000000000000fcffffffe800000275f3fffffffffffffffff16f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ffffffffff6200000000000000000000000000000000000000000000000082ffffffffff480000000000000000000000000000000026baf1c63b0000000000000053d3efab180000000000000000000000000038ffffffff7400000000000000000000000000000000a5fffffffff4ebffffffbc00000070ffffffff740000000000000000000000007ffffffffffe4000000000afffffffffc0020000000000000000000000000000000028faffffffffff7d00000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffe58d2100000000000000000000000000000000000000000041fffffffffe3b00000090ffffffffdb080000000000000000000000000000000000acffffff20000000000011e0fffffffffd9c3d02000000115ad2ffffffffff800000000000000046fffffffff62d000000000000000000000098ffffffffcf0000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000068ffffffffc0000000000000000000000000005cffffffff880000000000000000000000000090ffffffffffffff9d000000000000000000000000000000000000a4ffffffff400000000000000000000000d0ffffffff1c000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd780000000000000038ffffffffff1c000000000000000000fcffffffe800000000116cb5e2f7f4dbb565130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1ffffffffeb0500000000000000000000000000000000000000000000000014fcffffffff9a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff740000000000000000000000000000006affffffffff59e2ffffffbc00000070ffffffff74000000000000000000000033fbffffffff99000000000017ecffffffff7500000000000000000000000000000000008dfffffffffffe8201000000000000000000000000000000000000002a160000000000000038fffffffffffffffffffffffffffffef5e9ccaa7538020000000000000000000000000000000000000000000006d7ffffffffa2000000000fe8ffffffff800000000000000000000000000000000000acffffff200000000000002ae0fffffffffffff6ded3e8fdffffffffffff98020000000000000000b3ffffffffea370000000000000000048afffffffffd420000000000000000000038ffffffffff1c00000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000000009affffffff76000000000000000000000000005cffffffff880000000000000000000000000094fffffffffff17300000000000000000000000000000000000000a4ffffffff4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecffffffffaa0000000000000000000000000000000000000000000000000000caffffffffd70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff74000000000000000000000000000035f9ffffffff9400edffffffbc00000070ffffffff740000000000000000000008d6ffffffffe30e00000000000058fffffffff92e0000000000000000000000000000000009d3ffffffffffffae150000000000000000000000000000000030bbfff02c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cfffffffff118000000000060fffffffff82500000000000000000000000000000000acffffff200000000000000016c3fffffffffffffffffffffffffffffa710000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000038ffffffffff1c00000000000000000000000000002cf8fffffff32300000046ffffffffe3100000000000000000caffffffff4b000000000000000000000000005cffffffff880000000000000000000000000094fff3e0b36f120000000000000000000000000000000000000000a4ffffffff40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f330000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ffffffffff68000000000000000000000000000000000000000000000000000087fffffffffe0d0000000000000000000000002872abd2eefafbf1d9b47e38000000000000000000000000005ddcfacc3d00000038ffffffff740000000000000000000000000012e1ffffffffc90600f0ffffffbc00000070ffffffff74000000000000000000008dffffffffff4c0000000000000000aaffffffffd3070000000000000000000000000000000027ecfffffffffffff4871200000000000000000000000037a7feffffffcf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022f6ffffffff7100000000000001c6ffffffffbb00000000000000000000000000000000acffffff2000000000000000000155d8fffffffffffffffffffffda1210000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000000038ffffffffff1c000000000000000000000000000084ffffffffff7a000000a6ffffffffff560000000000000000e1ffffffff28000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045ffffffffff33000000000000000000000000000000000000000000000000000051ffffffffff2f0000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000005bfffffffffb31000038ffffffff7400000000000000000000000001b6ffffffffec1e0000f0ffffffbc00000070ffffffff740000000000000000003ffdffffffffa500000000000000000014e9ffffffff8d000000000000000000000000000000000036effffffffffffffff8b3713d1c0a020b16355b95ddffffffffffffff65000000000000000000000000000000001a7bc3e4f9e8ce9b39000000000000000000000000000000000000000000000000b6ffffffffd4040000000000000033fdffffffff5a000000000000000000000000000000acffffff200000000000000000000001357ebed8eef9e5cfa85f1700000000000000000000000000000016c3fffffffffffffffffffffffffffffa710000000000000000000000000038ffffffffff1c000000000000000000000000000080ffffffffff75000000a2ffffffffff510000000000000000f0ffffffff1b000000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ffffffffff1e00000000000000000000000000000000000000000000000000003cffffffffff4c00000000000000002bc1ffffffffffffffffffffffffffffffffd7460000000000000000d1ffffffffffb0000038ffffffff740000000000000000000000007dfffffffffd48000000f0ffffffbc00000070ffffffff7400000000000000000ddfffffffffea140000000000000000000052fffffffffe4100000000000000000000000000000000002adfffffffffffffffffffffffffffffffffffffffffffffffffffa1040000000000000000000000000000000034ffffffffffffffff8b0000000000000000000000000000000000000000000054ffffffffff4100000000000000000099ffffffffe80f0000000000000000000000000000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000000000038ffffffffff1c000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000fdffffffff0f000000000000000000000000005cffffffff88000000000000000000003078bad8effae7d2b3743101000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffffff0a000000000000000000000000000000000000000000000000000028ffffffffff58000000000000004ef2fffffffffffffffffffffffffffffffffffffd7500000000000000f4ffffffffffd1000038ffffffff74000000000000000000000044fdffffffff8100000000f0ffffffbc00000070ffffffff7400000000000000009cffffffffff58000000000000000000000000a7ffffffffe21000000000000000000000000000000000000fa4fffffffffffffffffffffffffffffffffffffffffffff76900000000000000000000000000000000000000a07f3e2f59e3ffffff4900000000000000000000000000000000000000000de4ffffffffa80000000000000000000013edffffffff950000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f170000000000000000000000000000000038ffffffffff1c0000000000000000000000000000003bc7f1be31000000000051d1f0b423000000000000000000f8ffffffff16000000000000000000000000005cffffffff88000000000000000047caffffffffffffffffffffffe37c0d00000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075fffffffffc00000000000000000000000000000000000000000000000000000019ffffffffff6100000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000d0ffffffffffad000038ffffffff74000000000000000000001beaffffffffba0200000000f0ffffffbc00000070ffffffff74000000000000004bffffffffffb10000000000000000000000000012e7ffffffffa50000000000000000000000000000000000000040caffffffffffffffffffffffffffffffffffffffb2220000000000000000000000000000000000000000000000000062ffffff8600000000000000000000000000000000000000008efffffffff41c000000000000000000000069fffffffffd3500000000000000000000000000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000e7ffffffff23000000000000000000000000005cffffffff880000000000000badffffffffffffffffffffffffffffffe954000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000000041cbf3c237000000000057d4f2b8280000000000000038ffffffffff1c000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dffffffffff0b000000000000000000000000000000000000000000000000000029ffffffffff5800000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff69000000000055fffffffff92d000038ffffffff7400000000000000000005c5ffffffffe3140000000000f0ffffffbc00000070ffffffff7400000000000013e7fffffffff01a00000000000000000000000000004dffffffffff5800000000000000000000000000000000000000003ca4f1fffffffffffffffffffffffffff1a031000000000000000000000000000000000000000000000000000003a3ffffff6c000000000000000000000000000000000000002ffcffffffff7800000000000000000000000002ceffffffffcd03000000000000000000000000acffffff20000000000000000000000000004ffffff59c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000d3ffffffff3e000000000000000000000000005cffffffff8800000000001bd0fffffffffffffce5d2d7ecffffffffffffff810000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000002cf8fffffff32300000046ffffffffe31000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060ffffffffff1f00000000000000000000000000000000000000000000000000003dffffffffff4b0000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000056daf9c93700000038ffffffff7400000000000000000090fffffffffa39000000000000f0ffffffbc00000070ffffffff74000000000000aaffffffffff6400000000000000000000000000000000a2ffffffffee1c00000000000000000000000000000000000000000007427baccde8f4fdf6ebd2af804508000000000000000000000000000000000000000000000000002a5f8eddffffffd60c00000000000000000000000000000000000001c7ffffffffd906000000000000000000000000003afeffffffff6e000000000000000000000000acffffff200000000000000000000000000000b5ffffffa50100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000112000000000000000000000000000000000000080000000000000000a5ffffffff6e000000000000000000000000005cffffffff880000000005c8ffffffffffc55410000000001e69ccffffffffe90f00000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000084ffffffffff7a000000a6ffffffffff5600000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffff35000000000000000000000000000000000000000000000000000052ffffffffff2d0000000095ffffffffffe53100000000000000000000000017caffffffffffc10000000000000000000000000038ffffffff74000000000000000055ffffffffff6e00000000000000f0ffffffbc00000070ffffffff7400000000005affffffffffbc000000000000000000000000000000000010e5ffffffffbc0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086fffffffff1900f0000000000000000000000000000000000000067ffffffffff47000000000000000000000000000000a2fffffffff11a0000000000000000000000acffffff20000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000095da1a0000000000000000000000000000000015d474000000000000006bffffffffab000000000000000000000000005cffffffff880000000090fffffffffa620000000000000000000043cefffb3f0000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000080ffffffffff75000000a2ffffffffff5100000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020ffffffffff6c00000000000000000000000000000000000000000000000000008afffffffffe0c0000001cf8fffffffff42800000000000000000000000000000edcffffffffff4000000000000000000000000038ffffffff740000000000000026f2ffffffffa90000000000000000f0ffffffbc00000070ffffffff74000000001aeefffffffff52100000000000000000000000000000000000049ffffffffff6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035fffff64608000000000000000000000000000000000000000015eeffffffffaf0000000000000000000000000000000018f1ffffffffaa0000000000000000000000acffffff2000000000000000000000000000000082ffffffff6d000000000000000000000000000000000090fffff791020000000000059bf9ffff640000000000000000000000000038ffffffffff1c00000000000000000091ffffd818000000000000000000000000000014d2ffff7400000000000029fffffffff80f0000000000000000000000005cffffffff8800000024fcfffffffe4e000000000000000000000000024e38000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c00000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eaffffffffad0000000000000000000000000000000000000000000000000000cdffffffffd3000000008bffffffffff620000000000000000000000000000000034fdffffffffb700000000000000000000000038ffffffff740000000000000ad3ffffffffd80c0000000000000000f0ffffffbc00000070ffffffff7400000000b7fffffffff55d000000000000000000000000000000000000000082f9fffffff72a0000000000000000000000000000033e7cafd3edf8fcf2e5c5a067240000000000000000000000000000000000000000000000000000000000000001e5ffff27000000000000000000000000000000000000000000a1fffffffff620000000000000000000000000000000000073ffffffffff4700000000000000000000acffffff2000000000000000000000000000000009dffffffffd530000000000000000000000000000000002adffffffaa0600000009b5ffffff83000000000000000000000000000038ffffffffff1c000000000000000011deffffffd61600002174abc3c1a66b19000013d1ffffffe912000000000000c3ffffffff8400000000000000000000000063ffffffff880000009cffffffff9200000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe80000014495d1e8fbf4d8a65b08000000000000000000000000000000003bc7f1be31000000000051d1f0b4230000000000000038ffffffffff1c000000000000000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adffffffffee0700000000000000000000000000000000000000000000000017fdffffffff9500000000e0ffffffffda020000000000000000000000000000000000aefffffffffb12000000000000000000000038ffffffff74000000000000a2fffffffff42b000000000000000000f0ffffffbc00000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e8de8ffffffffffffffffffffffffffc960030000000000000000000000000000000000000000000000001562a1d5f6fffffffdf4e6c69f652000000000000000000000000000003fffffffffff7e00000000000000000000000000000000000004d5ffffffffdc08000000000000000000acffffff20000000000000000000000000000000004ffffffffff73c0000000000000000000000000000000009c7ffffffb80a000dc0ffffffa200000000000000000000000000000038ffffffffff1c00000000000000000021e3ffffffd434a9fdfffffffffffffa9e29cfffffffed2e0000000000000057fffffffff9320000000000000000000018e1ffffffff8800000ef9fffffff61400000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe8002ec4ffffffffffffffffffe85c0000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffff6800000000000000000000000000000000000000000000000087ffffffffff4300000023ffffffffff6d0000000000000000000000000000000000003effffffffff50000000000000000000000038ffffffff74000000000067ffffffffff5b00000000000000000000f0ffffffbc00000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001194faffffffffffffffffffffffffffffffffffd7450000000000000000000000000000000000000000003fb2fcfffffffffffffffffffffffffffec253010000000000000000000005d6ffffffffdc080000000000000000000000000000000000000042feffffffff83000000000000000000acffffff200000000000000000000000000000000000b3ffffffffee290000000000000000000000000000000014dbffffffc421caffffffbd0500000000000000000000000000000038ffffffffff1c0000000000000000000025e7ffffffffffffffffffffffffffffffffffffef32000000000000000001c3ffffffffec37000000000000000024d7ffffffffff8800004bffffffff9f0000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffe84cf6ffffffffffffffffffffffffb50b000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000df2ffffffffdf040000000000000000000000000000000000000000000010f1ffffffffe40300000056ffffffffff2600000000000000000000000000000000000004f3ffffffff85000000000000000000000038ffffffff740000000033f8ffffffff960000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000000044e8fffffffffffffffffffffffffffffffffffffffffe9104000000000000000000000000000000000018a9ffffffffffffffffffffffffffffffffffffffcc340000000000000000007affffffffde2e00000000000000000000000000000000000000000075f5fffffff9270000000000000000acffffff20000000000000000000000000000000000017c2fbffffffe0190000000000000000000000000000000024ebfffffffaffffffd30f0000000000000000000000000000000038ffffffffff1c00000000000000000000002bebfffffffffffffffffffffffffffffffff1360000000000000000000025f6fffffffffd9837010000002e8cf5ffffffffffff8800008cffffffff590000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffafbfffffffae2d1e4fcffffffffffffc10c0000000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffffffff82000000000000000000000000000000000000000000009dffffffffff760000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa7000000000000000000000038ffffffff7400000011dfffffffffcb060000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000006efdffffffffffffffffffffffffffffffffffffffffffffffb90c0000000000000000000000000000005eeffffffffffffffffffffffffffffffffffffffffffffc79010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000039f6ffffffffffe51d000000000000000000000000000000000038ffffffffff1c0000000000000000000000004ffffffffff488310a0d368ff7ffffffff5000000000000000000000000046f6fffffffffffff3dbd7f2ffffffffc5fdffffff880000beffffffff1e0000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcffffffffffffb14c080000000f5ad4ffffffffffaa0000000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001af4fffffffffe4c000000000000000000000000000000000000000064ffffffffffe80d000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000037ffffff3900000038ffffffff74000001b3ffffffffed1f000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000074ffffffffffffffffe19a532e180406122a5d99dfffffffffffffbd070000000000000000000000000077ffffffffffffffe79f562f180406122a5e9be2ffffffffffffa20300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000052fdfffffff23000000000000000000000000000000000000038ffffffffff1c000000000000000000000000b2ffffffd32100000000000027dbffffff9f0000000000000000000000000043ebffffffffffffffffffffffffbe0be2ffffff880000d2fffffffd030000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffff85900000000000000000592ffffffffff5300000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007afffffffffff24b0000000000000000000000000000000000005cf8ffffffffff61000000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000054ffffff5500000038ffffffff7400007afffffffffe4a00000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000053feffffffffffffd45201000000000000000000000254cdfffffffff53000000000000000000000000082ffffffffffffdf5d0200000000000000000000045ed8fffffffff831000006d8ffee8b0200000000000000000000000000000000000000000000000000000000000000004796d1ebfcff140000acffffff2000000000000000000000043c83c1daeff9e6d1ab651d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c00000000000000000000002cffffffe418000000000000000021eefffffc1b00000000000000000000000000139ffefffffffffffffffff6760400bfffffff880000e5ffffffea000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4000000000000000000000fcfffffffd4e00000000000000000000009fffffffffe203000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c6fffffffffffd780300000000000000000000000000000689ffffffffffffb000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000070ffffff7000000038ffffffff740042fcffffffff830000000000000000000000000000f0ffffffbc00000070ffffffff7400000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000001df0fffffffffffd77020000000000000000000000000000037dfcfff7430000000000000000000000005dffffffffffff8b0600000000000000000000000000000795fffffc510000000044ffffff780000000000000000000000000000000000000000000000000000000000002bcbffffffffffff14000000000000000000000000000000025edefffffffffffffffffffffeaa27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000083ffffff5d0000000000000000000071ffffff6f000000000000000000000000000000237dbee6f8f4dbbb6c160000005af7ffff880000f3fffffffffffffffffffffffffffffffffffffffffffff853000000005a992f000000000000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000fe7ffffffff51000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001de5ffffffffffffd85a02000000000000000000000566e1ffffffffffffd71200000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000088ffffff8700000038ffffffff701ae8ffffffffbc020000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000b3fffffffffff34b00000000000000000000000000000000000039a9410000000000000000000000001ff1fffffffffb6400000000000000000000000000000000000054c957000000000000abfffff6200000000000000000000000000000000000000000000000000000000041f4ffffffffffffff0f00000000000000000000000000001bcafffffffffffffffffffffffffffffc7a000000000000000000000000000bedfffffa9e00000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000bdfffff5080000000000000000000013fcffffa80000000000000000000000000000000000000000000000000000000000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000054fffff6570000000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000007bffffffffb7000000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002eebffffffffffffffe8a45d341f090c213665abeeffffffffffffffe0200000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000009dffffff9d00000038ffffffff6cc3ffffffffe415000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000040fffffffffffe5000000000000000000000000000000000000000000000000000000000000000000000c0ffffffffff6d000000000000000000000000000000000000000000000000000000001cf4ffffb10000000000000000000000000000000000000000000000000000001aecffffffffffe3cd8f00000000000000000000000000002fe5fffffffffffff5ddd2e6fcffffffffffffa00300000000000000000000000082ffffffff4f000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000d7ffffd1000000000000000000000000e0ffffc10000000000000000000000000000000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a000022f0ffffffff8201000000a4ffffffff4000000000000000000000fcffffffe8000000000000000000000000001efffffffff4040000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027dfffffffffffffffffffffffffffffffffffffffffffffffffd31b000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000afffffffae00000038ffffffffdafffffffffa3a00000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000baffffffffff860000000000000000000000000000000000000000000000000000000000000000000044ffffffffffaa00000000000000000000000000000000000000000000000000000000000076ffffff4c000000000000000000000000000000000000000000000000000094ffffffffbb2a0000000000000000000000000000000014e3fffffffffc9839020000001059d0ffffffffff8600000000000000000000000015f6ffffffbf000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000d6ffffce000000000000000000000000dbffffc2000000000000000000000000003078bad8effae7d2b374310100000000000000000000aeffffffff260000000000000000000000000000daffffff76000013c2ffffffffffab0a0000a4ffffffff4000000000000000000000fcffffffe80000000000000000000000000000dfffffffff330000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010acffffffffffffffffffffffffffffffffffffffffffff9c0a00000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000bdffffffbc00000038ffffffffffffffffff700000000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000026feffffffffe10600000000000000000000000000000000000000000000000000000000000000000000b6fffffffff21200000000000000000000000000000000000000000000000000000000000005d6ffffdd0800000000000000000000000000000000000000000000000004f3ffffffc3040000000000000000000000000000000000b8ffffffffe93500000000000000000387fffffffffe4700000000000000000000000095ffffffff2f0000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000bdffffef03000000000000000000000af8ffffa9000000000000000000000047caffffffffffffffffffffffe37c0d00000000000000006effffffff5f0000000000000000000000000001f1ffffff5e00000006a3ffffffffffcc1b00a1ffffffff4000000000000000000000fcffffffe80000000000000000000000000000afffffffff620000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cd9ffffffffffffffffffffffffffffffffffffce3e000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c8ffffffc800000038ffffffffffffffffab000000000000000000000000000000000000f0ffffffbc00000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000007cffffffffff66000000000000000000000000000000000000000000000000000000000000000000002afeffffffff87000000000000000000000000000000000000000000000000000000000000000041ffffff8000000000000000000000000000000000000000000000000038ffffffff3e00000000000000000000000000000000004bfffffffff52b000000000000000000000094ffffffffd401000000000000000000000021fcffffff9d0000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000083ffffff48000000000000000000005cffffff6f0000000000000000000badffffffffffffffffffffffffffffffe954000000000000002affffffffb8000000000000000000000000002effffffff2100000000007fffffffffffe5359affffffff4000000000000000000000fcffffffe8000000000000000000000000000095ffffffff760000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000253bafcfffffffffffffffffffffffff8b0460000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ceffffffcd00000038ffffffffffffffd90d000000000000000000000000000000000000f0ffffffbc0000000a93eff29f1200000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000c9ffffffffe9050000000000000000000000000000000000000000000000000000000000000000000086fffffffff815000000000000000000000000000000000000000000000000000000000000000000a8fffff722000000000000000000000000000000000000000000000058fffffff5030000000000000000000000000000000000c4ffffffff750000000000000000000000000be3ffffffff4d000000000000000000000000a7fffffff71500000000000000000000000000000000000000000038ffffffffff1c000000000000000000000029ffffffd00800000000000000000eddfffffb1b00000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff8100000000000000c4fffffffe3500000000000000000000000090ffffffdb000000000000005bf8fffffffff6d2ffffffff4000000000000000000000fcffffffe8000000000000000000000000000086ffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000155792bcddf0faf9eedab88b500f00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d2ffffffd200000038fffffffffffff52c00000000000000000000000000000000000000f0ffffffbc000000b7ffffffffce05000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000008faffffffff980000000000000000000000000000000000000000000000000000000000000000000000d0ffffffffb2000000000000000000000000000000000000000000000000000000000000000000001af2ffffb4000000000000000000000000000000000000000000000067ffffffe000000000000000000000000000000000002bfffffffff1090000000000000000000000000076ffffffffb200000000000000000000000030ffffffff7b00000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000afffffffaf090000000000000dbbffffff9c000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000000000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000003cecffffffffffffffffff4000000000000000000000fcffffffe8000000000000000000000000000080ffffffff8d0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffffff5d0000000000000000000000000000000000000000f0ffffffbc000043ffffffffffff62000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000035ffffffffff58000000000000000000000000000000000000000000000000000000000000000000000bfdffffffff6c000000000000000000000000000000000000000000000000000000000000000000000073ffffff4f0000000000000000000000000000000000000000000058ffffffe900000000000000000000000000000000006dffffffff9e00000000000000000000000000001bfffffffff103000000000000000000000000baffffffe505000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000005fffffffffd7540700000a5bdcffffffff31000000000000000090fffffffffa620000000000000000000043cefffb3f0000000000000000b6ffffffffc218000000000000000029dfffffffed0d00000000000000000024d9ffffffffffffffff4000000000000000000000fcffffffe800000000000000000000000000008dffffffff7e0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffff99000000000000000000000000000000000000000000f0ffffffbc000066ffffffffffff88000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000057ffffffffff270000000000000000000000000000000000000000000000000000000000000000000039ffffffffff37000000000000000000000000000000000000000000000000000000000000000000000004d4ffffdf0900000000000000000000000000000000000000000043fffffffa0000000000000000000000000000000000adffffffff64000000000000000000000000000000dfffffffff3500000000000000000000000043ffffffff59000000000000000000000000000000000000000038ffffffffff1c00000000000000000000003af4fffffffffffff5d7daf8ffffffffffffd81500000000000024fcfffffffe4e000000000000000000000000024e3800000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d000000000000000000000012c0ffffffffffffff4000000000000000000000fcffffffe800000000000000000000000000009bffffffff6f0000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038ffffffffcc07000000000000000000000000000000000000000000f0ffffffbc00003fffffffffffff5e000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000073fffffffffe07000000000000000000000000000000000000000000000000000000000000000000005affffffffff130000000000000000000000000000000000000000000000000000000000000000000000003fffffff8300000000000000000000000000000000000000000026ffffffff0e00000000000000000000000000000000d4ffffffff36000000000000000000000000000000b0ffffffff5b00000000000000000000000000ccffffffc9000000000000000000000000000000000000000038ffffffffff1c000000000000000000002fefffffffffffffffffffffffffffffffffffffce0f00000000009cffffffff9200000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d0000000000000000000000000006a1ffffffffffff4000000000000000000000fcffffffe80000000000000000000000000000c1ffffffff580000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003effff91000000001679cef8f2bb3f00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000038fffffdce1d00000000000000000000000000000000000000000000f0ffffffbc000000b3ffffffffcc04000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000007ffffffffff5000000000000000000000000000000000000000000000000000000000000000000000074fffffffffa0000000000000000000000000000000000000000000000000000000000000000000000000000a4fffff824000000000000000000000000000000000000000003f7ffffff3700000000000000000000000000000000e8ffffffff200000000000000000000000000000009affffffff6f0000000000000000000000000056ffffffff38000000000000000000000000000000000000000000000000000000000000000000000025e9ffffffd24fd8ffffffffffffffffcb64f4ffffffc3090000000ef9fffffff6140000000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd78000000000000000000000000000000007cfeffffffff4000000000000000000000fcffffffe80000000000000000000000000001eeffffffff260000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017fffff04008359ff9fffffffffffc4f000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000a8fedf19c1100000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000085ffffffffee000000000000000000000000000000000000000000000000000000000000000000000080fffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000018f1ffffb7000000000000000000000000000000000000000000cdffffff6300000000000000000000000000000000faffffffff120000000000000000000000000000008bffffffff82000000000000000000000000005effffffffa7000000000000000000000000000000000000000000000000000000000000000000001be1ffffffd616000351a5def6f4da9e4501003ef5ffffffb60400004bffffffff9f0000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a00000000000000000000000000000000000059f8ffffff4000000000000000000000fcffffffe9000000000000000000000000003bfffffffff0010000fcffffffe800000000000000000000000000b4ffffffff34000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffffffffffffffffffffffffe7060000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000007dfffffffff5000000000000000000000000000000000000000000000000000000000000000000000085fffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffff5200000000000000000000000000000000000000009fffffff8e00000000000000000000000000000000f9ffffffff130000000000000000000000000000008cffffffff8100000000000000000000000000cefffffffffb1b00000000000000000000000000000000000000000000000000000000000000000009bcffffd919000000000000000000000000000041f5ffff9d0100008cffffffff5900000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f33000000000000000000000000000000000000000000000000000000000000000000000000fcffffffff6f0000000000000000000000009affffffffac000000fcffffffe800000000000000000000000000b5ffffffff32000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028edfffffffffffffff5d6e3ffffff410000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc0000000070ffffffffff09000000000000000000000000000000000000000000000000000000000000000000007cfffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000003d1ffffe10a0000000000000000000000000000000000000070ffffffba00000000000000000000000000000000e7ffffffff210000000000000000000000000000009affffffff6e00000000000000000000000040ffffffffffff85000000000000000000000000002bbff3ca410000000000000059d7f1af1c0000000009b9dd1c0000000000000000000000000000000042f6a302000000beffffffff1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffffffd54000000000000000000002cfcffffffff4c000000fcffffffe800000000000000000000000000c2ffffffff23000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022a3e9f8e1b97a370300007fffff660000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000003effff91000000001679cef8f2bb3f000000000000000000000000091d0000000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc0000000053ffffffffff2a000000000000000000000000000000000000000000000000000000000000000000006fffffffffff150000000000000000000000000000000000000000000000000000000000000000000000000000003cfeffff860000000000000000000000000000000000000044ffffffe400000000000000000000000000000000d3ffffffff38000000000000000000000000000000b2ffffffff5a000000000000000000000000b0ffffffffffffeb08000000000000000000000010e5fffffff729000000000044ffffffffd20500000000081b000000000000000000000000000000000000300300000000d2fffffffd0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003078bad8effae7d2b374310100000000000000fcfffffffffffd7d01000000000000001cdeffffffffdf04000000fcffffffe800000000000000000000000000e1ffffffff10000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000017fffff04008359ff9fffffffffffc4f0000000000000000000000bae72e00000000000038ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc000000002effffffffff5d0000000000000000000000000000000000000000000000000000000000000000000051ffffffffff3b00000000000000000000000000000000000000000000000000000000000000000000000000000000a1fffff9260000000000000000000000000000000000002bfffffffc01000000000000000000000000000000aaffffffff66000000000000000000000000000000e1ffffffff32000000000000000000000023fdffffffffffffff63000000000000000000000056ffffffffff820000000000a0ffffffffff3a000000000000000000000000000000000000000000000000000000000000e5ffffffea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047caffffffffffffffffffffffe37c0d0000000000fcffffffb6dcffffc650080000001870eeffffffffff4b00000000fcfffffff72e00000000000000000000001fffffffffe300000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd400000000000000000000000000beffffffffffffffffffffffffffe70600000000000000000003e6ffe822000000000038ffffffffffd3ccccccccccccccccccccccccccccccccccccccccecffffffffbc0000000003f3ffffffffa0000000000000000000000000000000000000000000000000000000000000000000002cffffffffff710000000000000000000000000000000000000000000000000000000000000000000000000000000016efffffba00000000000000000000000000000000000014ffffffff100000000000000000000000000000006affffffffa200000000000000000000000000001dffffffffef02000000000000000000000092ffffffffc7ffffffd2000000000000000000000052ffffffffff7d00000000009cffffffffff35000000000000000000000000000000000000000000000000000000000000f3fffffffffffffffffffffffffffffffffffffffffffff85300000000000000000000000000000000003eddffffaa00000000000000000000000000000badffffffffffffffffffffffffffffffe95400000000fcffffff811ee1fffffffbdbd1e5feffffffffffff9f0000000000fcffffffffed350000000000000000000089ffffffffa800000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000004b9f4750000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000028edfffffffffffffff5d6e3ffffff410000000000000000000034f6ffcf080000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000b9ffffffffef0a00000000000000000000000000000000000000000000000000000000000000000002f1ffffffffbb00000000000000000000000000000000000000000000000000000000000000000000000000000000006dffffff55000000000000000000000000000000000011ffffffff1a00000000000000000000000000000027fffffffff30a0000000000000000000000000079ffffffffaf00000000000000000000000ff3ffffffec40ffffffff41000000000000000000000de1fffffff52400000000003dfeffffffcb03000000000000000000003078bad8effae7d2b37431010000000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff910000000000000000000000000000000034f4fffff31b000000000000000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff81000000fcffffff65001cbfffffffffffffffffffffffffa9030000000000fcfffffffffff77101000000000000003efaffffffff4e00000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000048ffffee0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000000022a3e9f8e1b97a370300007fffff66000000000000000000000067ffff840000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000066ffffffffff7600000000000000000000000000000000000000000000000000000000000000000000b5fffffffffb1e0000000000000000000000000000000000000000000000000000000000000000000000000000000003ceffffe30b000000000000000000000000000000003bfffffff60500000000000000000000000000000000bfffffffff780000000000000000000000000de5ffffffff47000000000000000000000074ffffffff9701ddffffffb0000000000000000000000026baf1c63b0000000000000053d3efab1800000000000000000047caffffffffffffffffffffffe37c0d000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a00000000000000000000000000000023e9ffffff730000000000000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000fcffffff4800000278f3ffffffffffffffffef6902000000000000fcfffffffdffffffca570c000000177bf6ffffffffdb0200000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000072ffffff1100000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000c5fff81b00000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000012f6ffffffffec0d00000000000000000000000000000000000000000000000000000000000000000062ffffffffff97000000000000000000000000000000000000000000000000000000000000000000000000000000000039feffff8900000000000000000000000000000000b3ffffffa7000000000000000000000000000000000046fffffffff62d000000000000000000000098ffffffffcf000000000000000000000003e1ffffffff2d0076fffffffd22000000000000000000000000000000000000000000000000000000000000000000000badffffffffffffffffffffffffffffffe9540000000000aeffffffff260000000000000000000000000000daffffff76000000000000000000000000000015dbffffffd3040000000000000000000000000090fffffffffa620000000000000000000043cefffb3f000000fcffffd10b00000000136cb5e2f7f4dab462110000000000000000fcffffffe867fcfffffffcddd0e2fefffffffffffd3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000008dffffff2c00000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffff8700000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000096ffffffffffa100000000000000000000000000000000000000000000000000000000000000000010f3fffffffff91d00000000000000000000000000000000000000000000000000000000000000000000000000000000009efffffa29000000000000000000000000001c99ffffffe81d000000000000000000000000000000000000b3ffffffffea370000000000000000048afffffffffd42000000000000000000000056ffffffffbf000013f7ffffff8e0000000000000000000000000000000000000000000000000000000000000000001bd0fffffffffffffce5d2d7ecffffffffffffff81000000006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000000000bcafffffffe3d0000000000000000000000000024fcfffffffe4e000000000000000000000000024e3800000000000000000000000000000000000000000000000000000000000000fcffffffe8004eecfffffffffffffffffffffffe6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000a8ffffff4700000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000d4ffffffd4000000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000000000003eaffe100000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000001df5ffffffffff7000000000000000000000000000000000000000000000000000000000000000000090ffffffffffc1040000000000000000000000000000000000000000000000000000000000000000000000000000000015eeffffbd000000000000000000000000c2ffffffffd5220000000000000000000000000000000000000011e0fffffffffd9c3d02000000115ad2ffffffffff80000000000000000000000000c7ffffffff52000000a1fffffff10c00000000000000001d78a6d1e5f5f9e5cfa25a12000000000000000000000005c8ffffffffffc55410000000001e69ccffffffffe90f0000002affffffffb8000000000000000000000000002effffffff2100000000000000000000000004b5ffffffffa000000000000000000000000000009cffffffff920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffe8000014a2feffffffffffffffffe14f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000c2ffffff6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc610300000000000000000000001dafefffffff22000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000007bfffffffffffc73000000000000000000000000000000000000032b05000000000000000000000019f3ffffffffff8e00000000000000000000000000000000000000000000000000000000000000000000000000000000006affffff580000000000000000000000ccffffff8b020000000000000000000000000000000000000000002ae0fffffffffffff6ded3e8fdffffffffffff9802000000000000000000000037ffffffffe00300000037ffffffff6c000000000000000046fffffffffffffffffffff6880f00000000000000000090fffffffffa620000000000000000000043cefffb3f0000000000c4fffffffe3500000000000000000000000090ffffffdb000000000000000000000000009dffffffffee16000000000000000000000000000ef9fffffff6140000000000000000000000000000000000000000d0ffffffff1c00000000000000000000000fb2f8ffffff8a000000fcffffffe8000000002783c3eafaf1dbab5e0800000000000000000024e2fffff7b8250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff6f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000004d1ffffffffff49000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000004c4ffffffffffffa60f0000000000000000000000000000003dd5ffb502000000000000000000000076ffffffffffff8f0300000000000000000000000000000000000b460d0000000000000000000000000000000000000002ccffffe50d00000000000000000000ccffffffffc01500000000000000000000000000000000000000000016c3fffffffffffffffffffffffffffffa7100000000000000000000000000a8ffffffff760000000000ccffffffda01000000000000002cffffffffffffffffffffffffe7330000000000000024fcfffffffe4e000000000000000000000000024e380000000000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000000000000082fffffffee14700000000000000000000000000004bffffffff9f000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000004beffffffffbb03000000fcffffffe800000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff700000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000033ffffffffffff4c000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000001be2ffffffffffffef7f0f000000000000000000000029a7ffffffff7f000000000000000000000003c1ffffffffffffb8190000000000000000000000000000004ee4ffc5040000000000000000000000000000000000000036feffff8c000000000000000000000530aeffffffda120000000000000000000000000000000000000000000155d8fffffffffffffffffffffda121000000000000000000000000001dfbfffffff612000000000062ffffffff4b000000000000000bf7fffffffffffffffffffffffff4430000000000009cffffffff920000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d0000000000000000000000000000000000000000000000000000000000000000008cffffffff59000000000000000000000000000000000000000000d0ffffffff1c0000000000000000000095ffffffffdf1300000000fcffffffe8000000000000000000000000000000000000000000000000001bd9ffffffff9f0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000000000000000038ffffffffff1c00000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000003bffffffffffff24000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000029e8fffffffffffffff5ac6b381808030c24497fc8fffffffffffffd25000000000000000000000019e0fffffffffffff68b14000000000000000000000033b4ffffffff8900000000000000000000000000000000000000009bfffffb2b000000000000000000000001c3ffffff93000000000000000000000000000000000000000000000001357ebed8eef9e5cfa85f170000000000000000000000000000008affffffff9b00000000000009eeffffffba000000000000000048703d1103102d6fd8ffffffffffea18000000000ef9fffffff614000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d00000000000000000000000000000000000000000000000000000000000000000000beffffffff1e000000000000000000000000000000000000000000d0ffffffff1c00000000000000000066fffffffff6310000000000fcffffffe8000000000000000000000000000000000000000000000000000017d3ffffffffd72e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff7000000000000000000000000db5ffffffe64800000067f4ffffff920300000000000000000038ffffffffff1c00000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000007d8ffffffffb000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000000000021d7fffffffffffffffffffffffffffffffffffffffffffffffd6c0000000000000000000000000027e6fffffffffffffff8b16d3a1808030c244a83cffffffffffffffe250000000000000000000000000000000000000013edffffc000000000000000000000000047ffffffed010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000befffffffff2e000000000000008dffffffff2a0000000000000000000000000000000383ffffffffffb1000000004bffffffff9f000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000d2fffffffd03000000000000000000000000000000000000000000d0ffffffff1c00000000000000003efaffffffff5c000000000000fcffffffe800000000000000000000000000000000000000000000000000000013cefffffffff76a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000000000028effffffff9724b4fffffffb69000000000000000000000038ffffffffff1c0000000018e8fffffffffff4780900000000000000000159e2fffffffffff9360000000000001eaaebef960a00000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000b9cffffffffffffffffffffffffffffffffffffffffffea440000000000000000000000000000001ed4fffffffffffffffffffffffffffffffffffffffffffffffc6800000000000000000000000000000000000000000066ffffff5b000000000000000000000019ffffffff160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006cffffffffc0000000000000000024feffffff98000000000000000000000000000000000089ffffffffff2c0000008cffffffff5900000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd7800000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000e5ffffffea00000000000000000000000000000000000000000000d0ffffffff1c000000000000001feaffffffff9000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff70000000000000000000000000000066fbffffffffffffffef4400000000000000000000000038ffffffffff1c0000000095ffffffffffe53100000000000000000000000017caffffffffffc100000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000000000000000000000000003cc9fffffffffffffffffffffffffffffffffffea01400000000000000000000000000000000000a98ffffffffffffffffffffffffffffffffffffffffffe8420000000000000000000000000000000000000000000002c9ffffe70e000000000000000000000effffffff16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dbffffffff53000000000000000000b9fffffff5120000000000000000000000000000000007ddffffffff98000000beffffffff1e000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a0000000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000f3fffffffffffffffffffffffffffffffffffffffffffff8530000d0ffffffff1c0000000000000bd1ffffffffc00400000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000065c7d808080805f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff7000000000000000000000000000000042eeffffffffffdb280000000000000000000000000038ffffffffff1c0000001cf8fffffffff42800000000000000000000000000000edcffffffffff40000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc0000000000000000000000000000003fa9f5fffffffffffffffffffffffff7a52d00000000000000000000000000000000000000000039c6fffffffffffffffffffffffffffffffffffd9e1200000000000000000000000000000000000000000000000033fdffff8f0000000000000000000024ffffffff0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffffffe2030000000000000000004effffffff76000000000000000000000000000000000079ffffffffe9000000d2fffffffd030000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f3300000000000000000038ffffffffffffffffffffffffffffffffffffffffffff2c000000000000e4ffffffffffffffffffffffffffffffffffffffffffffff910000d0ffffffff1c000000000001adffffffffe3160000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000d0ffffff700000000000000000000000000000000025808080807c13000000000000000000000000000038ffffffffff1c0000008bffffffffff620000000000000000000000000000000034fdffffffffb7000000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000a4984b2d3ecf7fcf1e1bf955510000000000000000000000000000000000000000000000000003ba6f3fffffffffffffffffffffffff7a42c00000000000000000000000000000000000000000000000000000098fffffb2d0000000000000000003afffffff1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000beffffffff780000000000000000000002e0ffffffe2030000000000000000000000000000000027ffffffffff230000e5ffffffea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000cfffffffffffffffffffffffffffffffffffffffffffffff8a0000d0ffffffff1c000000000081fffffffff835000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000e0ffffffffda020000000000000000000000000000000000aefffffffffb120000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094782b2d3ecf7fcf1e1bf955510000000000000000000000000000000000000000000000000000000000011ebffffc200000000000000000060ffffffcd00000000000000000000000000000000000000000077ffff9f00000000117cd6f9e7991800000000000000000000002ffffffffff713000000000000000000000079ffffffff540000000000000000000000000000000001f2ffffffff5a0000f3fffffffffffffffffffffffffffffffffffffffffffff85300000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000aeffffffff260000000000000000000000000000daffffff760000d0ffffffff1c0000000054feffffffff6200000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000023ffffffffff6d0000000000000000000000000000000000003effffffffff500000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063ffffff5e00000000000000008dffffffa40000000000000000000000000000000000000000005bffffed20000c7cf2ffffffffffe31e00000000000000000000a0ffffffff9d00000000000000000000000015f9ffffffc30000000000000000000000000000000000cfffffffff750000e4ffffffffffffffffffffffffffffffffffffffffffffff9100000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000000000000000006effffffff5f0000000000000000000000000001f1ffffff5e0000d0ffffffff1c00000030f5ffffffff970000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000000000000000000002872abd2eefafbf1d9b47e38000000000000000000000000000000000000000038ffffffffff1c000056ffffffffff2600000000000000000000000000000000000004f3ffffffff850000000000000000000000000038ffffffffff240000000000000000000000000000000000000000a0ffffffffbc000038ffffffff740000000000000000000000000000000000000000000063e3ffffbc0000acffffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c7ffffe80f00000000000000b9ffffff7a0000000000000000000000000000000000000000001efefffff9d6f4ffffffffffffffffb700000000000000000018f9ffffffff2f00000000000000000000000000a5ffffffff3300000000000000000000000000000000c1ffffffff860000cfffffffffffffffffffffffffffffffffffffffffffffff8a000000000000000000000000004ffffff59c06000000000000000000000038ffffffffff2000000000000000000000000000000000000000000000002affffffffb8000000000000000000000000002effffffff210000d0ffffffff1c000016e1ffffffffc5050000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc6103000000000000000000000000000000000038ffffffffff1c000079ffffffffe90000000000000000000000000000000000000000bdffffffffa700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000000047fdffffffbc0000acffffff200000097c7e5f1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031fcffff9200000000000000e6ffffff5000000000000000000000000000000000000000000000adfffffffffffffffff5d5f6ffffff25000000000000000082ffffffffc200000000000000000000000000003affffffffa100000000000000000000000000000000b5ffffffff970000aeffffffff260000000000000000000000000000daffffff760000000000000000000000000000b5ffffffa5010000000000000000000038ffffffffff20000000000000000000000000000000000000000000000000c4fffffffe3500000000000000000000000090ffffffdb000000d0ffffffff1c0224c8ffffffffe619000000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd7460000000000000000000000000000000038ffffffffff1c00008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffff7400000000000000000000000000000000000000001debffffffffbc0000acffffff200000007cffffed3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008cfffffc2f000000000011ffffffff270000000000000000000000000000000000000000000018dbfffffffffff4820f0017dfffff630000000000000008eaffffffff54000000000000000000000000000000cffffffff917000000000000000000000000000000b4ffffffff9c00006effffffff5f0000000000000000000000000001f1ffffff5e000000000000000000000000000023f8ffffff8a0000000000000000000038ffffffffff200000000000000000000000000000000000000000000000004bffffffffd10d000000000000000000002cf6ffffff7a000000d0fffffffffffffffffffffffa3b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd7500000000000000000000000000000038ffffffffff1c000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000000000000000000000000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000038ffffffff740000000000000000000000000000000000000006c8ffffffffffbc0000acffffff2000000001b9ffffee2100003384bae2f4fae7d2ae6a2200000000000000000000000000000000000000000000000000000000000000000000000000000000048cefffc5010000000036ffffffff060000000000000000000000000000000000000000000000128ee2f9db83130000000085ffff7e0000000000000064fffffffdad020000000000000000000000000000003becffffff7f000000000000000000000000000000b4ffffffff9c00002affffffffb8000000000000000000000000002effffffff2100000000000000000000000000000082ffffffff6d00000000000000000038ffffffffff2000000000000000000000000000000000000000000000000000b6ffffffffc218000000000000000029dfffffffed0d000000d0ffffffffffffffffffffff68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff96000000000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000000038ffffffff740000000000000000000000000000000000000093ffffffffffffbc0000acffffff200000000015e5ffffce50cfffffffffffffffffffffffb4310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cfffffff50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4ffffffff9c000000c4fffffffe3500000000000000000000000090ffffffdb0000000000000000000000000000000009dffffffffd53000000000000000038ffffffffff200000000000000000000000000000000000000000000000000014e3ffffffffec7f27000000002686f4ffffffff5d00000000d0ffffffffffffffffffffb701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff690000000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000038ffffffff7400000000000000000000000000000000000057ffffffffffffffbc0000acffffff2000000000003dfcfffffffffffffffffffffffffffffffffe8d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fffffffe50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4ffffffff9c0000004bffffffffd10d000000000000000000002cf6ffffff7a00000000000000000000000000000000004ffffffffff73c0000000000000038ffffffffff2000000000000000000000000000000000000000000000000000002de3ffffffffffffefd8d4ebffffffffffff8d0000000000d0ffffffffd1d3f9ffffffff9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000018e8fffffffffff4780900000000000000000159e2fffffffffff93600000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000038ffffffff74000000000000000000000000000000000028f3ffffffffffffffbc0000acffffff2000000000000081fffffffffffffff2d7d1e6fcffffffffffffb6090000000000000000000000000000000000b0ffdf1f00000000000000000000000000000000000000000000000065ffffffe20000000000000000001ac4fafff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff3400000040fffffffffffffffffffff4000000000000000000000000000000b4ffffffff9c00000000b6ffffffffc218000000000000000029dfffffffed0d000000000000000000000000000000000000b3ffffffffee2900000000000038ffffffffff200000000000000000000000000000000000000000000000000000001bcafffffffffffffffffffffffffffd78000000000000d0ffffffff1c0023dfffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000000095ffffffffffe53100000000000000000000000017caffffffffffc100000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff960000000000000038ffffffff74000000000000000000000000000000000bd5ffffffffffffffffbc0000acffffff20000000000006c8fffffffff3862b010000000f58caffffffffffa00000000000000000000000000000000000a1ffff7200000000000000000000000000000000000000000000000052fffffff907000000000000000089fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff3400000040fffffffffffffffffffff4000000000000000000000000000000b4ffffffff9c0000000014e3ffffffffec7f27000000002686f4ffffffff5d0000000000000000000000000000000000000017c2fbffffffe019000000000038ffffffffff2000000000000000000000000000000000000000000000000000000000025ee1ffffffffffffffffffffbe3a00000000000000d0ffffffff1c000024e8ffffffff7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000001cf8fffffffff42800000000000000000000000000000edcffffffffff40000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000038ffffffff7400000000000000000000000000000000a5fffffffff4ebffffffbc0000acffffff20000000000097ffffffffffcf0800000000000000016ffdffffffff610000000000000000000000000000000092ffff870000000000000000000000000000000000000000000000002affffffff4b0000000000000000a3fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000a28282853ffffff79282826000000000000000000000000000000b4ffffffff9c00000000002de3ffffffffffffefd8d4ebffffffffffff8d00000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000000000000000000000000000000000000044b94c9eaf9f5dfc27f33000000000000000000d0ffffffff1c0000002eefffffffff63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe4000000000000000000000000000000008bffffffffff620000000000000000000000000000000034fdffffffffb7000000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000016a6f3ee910b000000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000038ffffffff740000000000000000000000000000006affffffffff59e2ffffffbc0000acffffff200000000030ffffffffffffff9f00000000000000000065ffffffffe60700000000000000000000000000000083ffff9600000000000000000000000000000000000000000000000000e8ffffffd10800000000000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000001bcafffffffffffffffffffffffffffd780000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000003af5fffffffc520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000000e0ffffffffda020000000000000000000000000000000000aefffffffffb120000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000004ceffffffffb4000000000095ffffffffffe53100000000000000000000000017caffffffffffc1000000000038ffffffff74000000000000000000000000000035f9ffffffff9400edffffffbc0000acffffff2000000000aeffffffff86ffffff68000000000000000000afffffffff6800000000000000000000000000000074ffffa50000000000000000000000000000000000000000000000000081ffffffffc530000000000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000025ee1ffffffffffffffffffffbe3a00000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffffff1c000000000047f9fffffff84300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000023ffffffffff6d0000000000000000000000000000000000003effffffffff500000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000054ffffffffffff380000001cf8fffffffff42800000000000000000000000000000edcffffffffff400000000038ffffffff740000000000000000000000000012e1ffffffffc90600f0ffffffbc0000acffffff200000001bfeffffffb6008cfffff93800000000000000002dffffffffc700000000000000000000000000000065ffffb40000000000000000000000000000000000000000000000000011e1ffffffffffe5ce91000000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000000044b94c9eaf9f5dfc27f33000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000000000002a82c8e6faf5dbab600a000000005ef7ffff8800000000000000d0ffffffff1c00000000000056fdfffffff335000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000056ffffffffff2600000000000000000000000000000000000004f3ffffffff850000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000076ffffffffffff590000008bffffffffff620000000000000000000000000000000034fdffffffffb70000000038ffffffff7400000000000000000000000001b6ffffffffec1e0000f0ffffffbc0000acffffff200000005fffffffff5e0003bfffffe4160000000000000000cbfffffffb0d00000000000000000000000000005cffffc3000000000000000000000000000000000000000000000000000033edffffffffffffff0f0000a4fffffff8000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000000000000d9bfdffffffffffffffffec64000000bfffffff8800000000000000d0ffffffff1c0000000000000066ffffffffec290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa70000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000051ffffffffffff35000000e0ffffffffda020000000000000000000000000000000000aefffffffffb1200000038ffffffff740000000000000000000000007dfffffffffd48000000f0ffffffbc0000acffffff20000000a2ffffffff1b000016e4ffffbf03000000000000008dffffffff49000000000000000000003583bfecfffffffff0d9bd792b0000000000000000000000000000000000000000000024c4ffffffffffff140000a4fffffff6000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff8800000000000000d0ffffffff1c000000000000000078ffffffffe31f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe40000000000000000000000000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb0000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000003caffffffffaf00000023ffffffffff6d0000000000000000000000000000000000003effffffffff5000000038ffffffff74000000000000000000000044fdffffffff8100000000f0ffffffbc0000acffffff20000000cdffffffef0000000038f9ffff8b000000000000005bffffffff68000000000000000262d6ffffffffffffffffffffffffffc034000000000000000000000000000000000000000000004292d0e9fbff140000a4ffffffee000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff8800000000000000d0ffffffff1c00000000000000000089ffffffffd916000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc50000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000012a1f3ec8b0900000056ffffffffff2600000000000000000000000000000000000004f3ffffffff8500000038ffffffff74000000000000000000001beaffffffffba0200000000f0ffffffbc0000acffffff20000000e1ffffffd500000000006bffffff5500000000000045ffffffff7c0000000000003accfffffffffffffffffffffffffffffffffe8d030000000000000000000000000000000000000000000000000000000000a4ffffffe5000048a7ddf7f6d89c3f000000005ef7ffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff8800000000000000d0ffffffff1c000000000000000000009affffffffce0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000079ffffffffe90000000000000000000000000000000000000000bdffffffffa700000038ffffffff7400000000000000000005c5ffffffffe3140000000000f0ffffffbc0000acffffff20000000f5ffffffc9000000000000a1fffff32a000000000035ffffffff8e00000000007bfeffffffffffffffffffffffffffffffffffffffb60700000000000000000000000000000000000000000000000000000000a4ffffffcd13b1ffffffffffffffffba1d0000bfffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000090fffff791020000000000059bf9ffff640000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff8800000000000000d0ffffffff1c000000000000000000000288f5ffffffc10800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb00000038ffffffff7400000000000000000090fffffffffa39000000000000f0ffffffbc0000acffffff20000000f7ffffffcc00000000000009d0ffffd80e0000000039ffffffff84000000019fffffffffffffe68a3d10fdffff27337bdbffffffffff9d0000000000000000000000002bbff8e4740200000000000000000000a4ffffffbdccffffffffffffffffffffeb3800deffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000002adffffffaa0600000009b5ffffff83000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000023fffffffff81b0000000000000000000083ffffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffe400000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000026fddfadc700200000096ffffffffbb00000000000000000000000000000000000000008fffffffffc500000038ffffffff74000000000000000055ffffffffff6e00000000000000f0ffffffbc0000acffffff20000000e4ffffffdc0000000000000022eeffffaf0100000046ffffffff7000000000abfffffffff37408000000ecffff2f0000046ff9ffffffff5a0000000000000000000018eeffffffff8200000000000000000000a4fffffffffffffffff3d7d8f6fffffffff338f9ffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000000000034ffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000009c7ffffffb80a000dc0ffffffa200000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff20000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000009fffffffffffa500000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000000000026f2ffffffffa90000000000000000f0ffffffbc0000acffffff20000000d1fffffff402000000000000004afeffff7800000068ffffffff590000000016ebffffbe1e0000000000daffff410000000043faffffffdd040000000000000000007dfffffffffff80b000000000000000000a4ffffffffffffc843040000002b8ceffffff0ffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000001a9e7570034ffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000000014dbffffffc421caffffffbd0500000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000044ffffffffffffff48000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000000000ad3ffffffffd80c0000000000000000f0ffffffbc0000acffffff20000000aaffffffff2a000000000000000081fffffc44000097ffffffff21000000000038ad6f02000000000000c8ffff5300000000007bffffffff58000000000000000000a0ffffffffffff25000000000000000000a4ffffffffffb4060000000000000019b2ffffffffffff880000fcffffffe800000000000000000000000000b4ffffffff3400006bffffff8933ffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000024ebfffffffaffffffd30f0000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff200000000000000000000000000000000000000095ffffffff4d0000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800008bffffffffffffff92000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000000000000a2fffffffff42b000000000000000000f0ffffffbc0000acffffff2000000068ffffffff6c000000000000000002b6ffffeb1e00e0ffffffde00000000000000000000000000000000b6ffff6500000000000bf3ffffffa50000000000000000007cfffffffffff70a000000000000000000a4fffffffff3130000000000000000000083ffffffffff880000fcffffffe800000000000000000000000000b4ffffffff34000020d4ffffffccffffff60000000000000000000000000000000000000b4ffffffff9c000000000000000000000039f6ffffffffffe51d000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a2ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000089ffffffffffffff90000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000000000067ffffffffff5b00000000000000000000f0ffffffbc0000000000000000000025ffffffffcd00000000000000000011deffffcb4effffffff9000000000000000000000000000000000a3ffff77000000000000b3ffffffe800000000000000000015ebffffffff7d00000000000000000000a4ffffffff9d0000000000000000000000008dffffffff880000fcffffffe800000000000000000000000000b4ffffffff340000000db5ffffffffffff60000000000000000000000000000000000000b4ffffffff9c00000000000000000000000052fdfffffff23000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800003fffffffffffffff44000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740000000033f8ffffffff960000000000000000000000f0ffffffbc0000000000000000000000bfffffffff5200000000000000000030f6fffff8fffffffb1f0000000000000000000000000000000091ffff8900000000000090ffffffff0700000000000000000026bbf8e26e0100000000000000000000a4ffffffff610000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000b5ffffffff3200000000038fffffffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000098ffffffffff9e00000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff7400000011dfffffffffcb060000000000000000000000f0ffffffbc000000000000000000000045ffffffffe71f0000000000000000005fffffffffffff9d00000000000000000000000000000000007fffff9b00000000000088ffffffff1d00000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000c2ffffffff2300000000000066fbffffff60000000000000000000000000000000000000b4ffffffff9c0000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061fffed6390000000000000bc5ffff8600000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000066d9f9d8670100000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff74000001b3ffffffffed1f000000000000000000000000f0ffffffbc000000000000000000000000b3ffffffffe13000000000000000000edcffffffffdd0f00000000000000000000000000000000006dffffad000000000000acffffffff1800000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffe800000000000000000000000000e1ffffffff100000000000000042eeffff60000000000000000000000000000000000000b4ffffffff9c000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cffffffd10000000000004affffffba00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff7400007afffffffffe4a00000000000000000000000000f0ffffffbc00000000000000000000000011dffffffffffc9b3f030000001669e0ffffffffff440000000000000000000000000000000000005affffbf000000000016f5fffffffb0200000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcfffffff72e00000000000000000000001fffffffffe300000000000000000000000000000000000000000000000000000000000000b4ffffffff9c00000000000d9bfdffffffffffffffffec64000000bfffffff88000000fcffffffe800000000000000000000000000b4ffffffff340000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f4ffffff1500000000002bffffffee00000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff740042fcffffffff830000000000000000000000000000f0ffffffbc000000000000000000000000002ae0fffffffffffff7dfd2e4ffffffffffffffffa000000000000000000000000000000000000048ffffd10000000006b6ffffffffcc0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffffed350000000000000000000089ffffffffa8000000000000000000000000000000000000000000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff88000000fcffffffe800000000000000000000000000b5ffffffff320000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffff4a000000000002f2ffffff23000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000016a6f3ee910b0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff701ae8ffffffffbc020000000000000000000000000000f0ffffffbc000000000000000000000000000016c3fffffffffffffffffffffffffffffeffffff41000000000000000000000000000000000036ffffe300000022c3ffffffffff6b0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcfffffffffff77101000000000000003efaffffffff4e00000018ffffffffffffffffffff080000000000000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000000fcffffffe800000000000000000000000000c2ffffffff230000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000d0ffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008dffffff7f000000000000beffffff57000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000004ceffffffffb40000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffff6cc3ffffffffe415000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000155d8fffffffffffffffffffff79921daffffd9070000000000000000000000000000000023fffff5003a9dfaffffffffffd70a0000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffffe5ffffffca570c000000177bf6ffffffffdb0200000018ffffffffffffffffffff0800000000000000e4ffffffff080000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff88000000fcffffffe800000000000000000000000000e1ffffffff100000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffb400000000000088ffffff8c000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000002bbff3ca410000000000000059d7f1af1c00000000000000000054ffffffffffff3800000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffdafffffffffa3a00000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000002367fbed8eefaebd4a1620f000042ffffff810000000000000000000000000000000011ffffffdaffffffffffffffef2f000000000000000000000000030404020000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff8862fcfffffffcddd0e2fefffffffffffd3e0000000018fffffffffffffffffffa0200000000000000e4ffffffff08000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff88000000fcfffffff72e00000000000000000000001fffffffffe3000000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ffffffe900000000000051ffffffc0000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000000000000000000010e5fffffff729000000000044ffffffffd205000000000000000076ffffffffffff5900000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffffff700000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000000000000000000000000000000000000a0fffff92900000000000000000000000000064da3ffffffffffffffffffffe02b00000000000000000000000000daffff9c0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff69004de9fffffffffffffffffffffffe6a000000000018ffffffffcdccccccc9700000000000000000e4ffffffff08000000000000000000000023fffffffff81b0000000000000000000083ffffffffff88000000fcffffffffed350000000000000000000089ffffffffa8000000000038ffffffffff2000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ecffffff1e00000000001afffffff3020000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c0000000000000000000056ffffffffff820000000000a0ffffffffff3a000000000000000051ffffffffffff3500000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffffab000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000011dfffffc2010000000000000000000034a1f0fffffffffffffffffffff98e0c0000000000000000000000000000edffffbb0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffff4a000014a5feffffffffffffffffe14f00000000000018ffffffff0800000000000000000000000000e4ffffffff0800000000000000000000005affffffffa90000000000000000000000008dffffffff88000000fcfffffffffff77101000000000000003efaffffffff4e00000000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8ffffff53000000000000e4ffffff290000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c0000000000000000000052ffffffffff7d00000000009cffffffffff35000000000000000003caffffffffaf0000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffffffd90d000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000000197180801d000000000000000021b7ffffffffffffffffffffffde821800000000000000000000000000000002fdffffdb0000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000fcffffd30d000000002782c2e9faf1dbab5e080000000000000018ffffffff0800000000000000000000000000e4ffffffff08000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000fcffffffe5ffffffca570c000000177bf6ffffffffdb0200000000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083ffffff89000000000000adffffff5e0000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c000000000000000000000de1fffffff52400000000003dfeffffffcb0300000000000000000012a1f3ec8b090000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038fffffffffffff52c00000000000000000000000000000000000000f0ffffffbc0000acffffff20000000000000000000000000000000000000000000000000000000000000000000000000000052f4ffffffffffffffffffe0893400000000000000000000000000000000000014fffffff90100000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000e4ffffffff08000000000000000000000095ffffffff4d0000000000000000000000005cffffffff88000000fcffffff8862fcfffffffcddd0e2fefffffffffffd3e0000000000000000002a82c8e6faf5dbab600a000000005ef7ffff8800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004effffffbe00000000000077ffffff920000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c000000000000000000000026baf1c63b0000000000000053d3efab18000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffffff5d0000000000000000000000000000000000000000f0ffffffbc0000acffffff200000000000000000000000000000000000000000000000000000000000000000000000000051fbfffffffffffffffaffff62000000000000000000000000000000000000000020ffffffff3300000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a2ffffffff400000000000000000000000005cffffffff88000000fcffffff69004de9fffffffffffffffffffffffe6a00000000000000000d9bfdffffffffffffffffec64000000bfffffff8800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025bbccccccd5fffffff9ccccccccccccddfffffff0cccccccccccc3e00000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffff99000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000bedfffffa9e0000000000000000000000000000000000000000000018eefffffffffff59832a5ffff74000000000000000000000000000000000000000006f8ffffffc60a000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000fcffffff4a000014a5feffffffffffffffffe14f000000000000000015cdffffffffffffffffffffffffbc1800deffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffff6e00000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038ffffffffcc07000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000082ffffffff4f00000000000000000000000000000000000000000094ffffffffffb51c000094ffff860000000000000000000000000000000000000000008effffffffc71a0000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000d9bfdffffffffffffffffec64000000bfffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000fcffffd30d000000002782c2e9faf1dbab5e08000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006effffffffffffffffffffffffffffffffffffffffffffffffffff8500000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000038ffffffffff1c00000000000000000000000000000000002475b0d9f3fdf7e9c89b580d0000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000038fffffdce1d00000000000000000000000000000000000000000000f0ffffffbc0000acffffff2000000000000000000015f6ffffffbf000000000000000000000000000000000000000003eaffffffff9c0100000082ffff9800000000000000000000000000000000000000000005b7ffffffffe94a00000000000000a4ffffffff400000000000000000000000005cffffffff880000000015cdffffffffffffffffffffffffbc1800deffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff8800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004dffffffffffffffffffffffffffffffffffffffffffffffffffef40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000002cb3fffffffffffffffffffffff39114000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000095ffffffff2f000000000000000000000000000000000000002effffffffd9060000000071ffffaa000000000000000000000000000000000000000000000591ffffffffff90040000000000a4ffffffff400000000000000000000000005cffffffff8800000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087ffffff80000000000000b3ffffff58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000493fdffffffffffffffffffffffffffffef580000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000000000000000000000000000000000000000000000000000000000acffffff200000000000000000000021fcffffff9d0000000000000000000000000000000000000047ffffffff7500000000005fffffbc0000000000000000000000000000000000000000000000004fefffffffffbc0a00000000a4ffffffff400000000000000000000000005cffffffff880000005cffffffffffcb45040000002b8cefffffedffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000023fffffffff81b0000000000000000000083ffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffb200000000000082ffffff8a00000000000000000000000000000000000000034994c9ecfaf9e8c2883b000000000000000000000000000000000000000000000038ffffffffff1c00000000000000000000000011bdffffffffffffffefd7d2e4ffffffffffffff8800000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000000000000000000000002872abd2eefafbf1d9b47e380000000000000000000000000000acffffff200000000000000000000000a7fffffff71500000000000000000000000000000000000059ffffffff4800000000004dffffce0000000000000000000000000000000000000000000000000025d8ffffffffb702000000a4ffffffff400000000000000000000000005cffffffff88000000ccffffffffbc080000000000000019b2ffffffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024ffffffe400000000000050ffffffbb00000000000000000000000000000000000369e3ffffffffffffffffffffd45400000000000000000000000000000000000000000038ffffffffff1c000000000000000000000006c8ffffffffffe9762500000000125dcdffffffffff87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048c9ffffffffffffffffffffffffdc61030000000000000000000000acffffff20000000000000000000000030ffffffff7b00000000000000000000000000000000000048ffffffff4800000000003cffffe000000000000000000000000000000000000000000000000000000fc5ffffffff78000000a4ffffffff400000000000000000000000005cffffffff88000023fffffffff81b0000000000000000000083ffffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000000000000000000000004ffffff59c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f1ffffff1600000000001effffffec000000000000000000000000000000001fc7ffffffffffffffffffffffffffffb1110000000000000000000000000000000000000038ffffffffff1c000000000000000000000096ffffffffff9d0d00000000000000000273fafffffff21800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bc1ffffffffffffffffffffffffffffffffd74600000000000000000000acffffff20000000000000000000000000baffffffe505000000000000000000000000000000000026ffffffff7600000000002afffff100000000000000000000000000000000000000000000000000000012e2fffffff315000000000000000000000000000000000000000000000000000000005affffffffa90000000000000000000000008dffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000077ffff9f00000000117cd6f9e79918000000000000000095ffffffff4d0000000000000000000000005cffffffff880000000000000000000000000000b5ffffffa501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1ffffff48000000000000ebffffff1e00000000000000000000000000002de7fffffffffffff4d8dcf7ffffffffffffd61a00000000000000000000000000000000000038ffffffffff1c000000000000000000004affffffffff8200000000000000000000000047f5ffec3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ef2fffffffffffffffffffffffffffffffffffffd75000000000000000000acffffff2000000000000000000000000043ffffffff59000000000000000000000000000000000000ddffffffd8040000000019ffffff0400000000000000000000000000000000000000000000000000000055ffffffff6f0000000000000000000000000000000000000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000005bffffed20000c7cf2ffffffffffe31e00000000000000a2ffffffff400000000000000000000000005cffffffff88000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffff7a000000000000baffffff50000000000000000000000000001ee6fffffffff995370000000346a9feffffffffd20e000000000000000000000000000000000038ffffffffff1c00000000000000000001d1ffffffffad000000000000000000000000000037aa290000000000000000000000000000000000000000000000000000000035c7fbffffd21700000000000000000000000000000000000068feffffffffffffffffffffffffffffffffffffffffff960000000000000000acffffff2000000000000000000000000000ccffffffc900000000000000000000000000000000000082ffffffff8e0000000007ffffff150000000037a66d000000000000000000000000000000000000000004ecffffffb50000428080806803000000000000000000000000117580807e09000095ffffffff4d0000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000001efefffff9d6f4ffffffffffffffffb700000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000082ffffffff6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005effffffac00000000000088ffffff8100000000000000000000000003c4ffffffffe02e000000000000000047f1ffffffffa3000000000000000000000000000000000038ffffffffff1c00000000000000000059ffffffffef11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000172faffffffcd130000000000000000000000000000000000003ffbffffffffffffe7944a230d081e3d83d5ffffffffffffff6900000000000000acffffff200000000000000000000000000056ffffffff3800000000000000000000000000000000000fecffffffffa416000000f6ffff2700002fa9feffff5c0000000000000000000000000000000000000000c4ffffffd3000020f8ffffff83000000000000000000000000bbffffffa3000000a2ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000adfffffffffffffffff5d5f6ffffff25000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000009dffffffffd53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dffffffde00000000000056ffffffb30000000000000000000000006affffffffeb21000000000000000000003af9ffffffff460000000000000000000000000000000038ffffffffff1c000000000000000000c1ffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000018e8fffffffffff4780900000000000000000159e2fffffffffff936000000000000acffffff20000000000000000000000000005effffffffa700000000000000000000000000000000000053fefffffffff49f5529e6ffff656bbeffffffffffef1200000000000000000000000000000000000000b9ffffffe100000089fffffff8210000000000000000000054fffffff61c000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000018dbfffffffffff4820f0017dfffff63000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000004ffffffffff73c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f7ffffff11000000000024ffffffe400000000000000000000000aeaffffffff5100000000000000000000000075ffffffffd10000000000000000000000000000000038ffffffffff1c000000000000000018fdfffffffc14000000000000000000000000000000000000000000000016a6f3ee910b000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000095ffffffffffe53100000000000000000000000017caffffffffffc1000000000000acffffff2000000000000000000000000000cefffffffffb1b00000000000000000000000000000000000074fffffffffffffffffffffffffffffffffffff8640000000000000000000000000000000000000000e1ffffffcb0000000ee9ffffffab00000000000000000007deffffff8300000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000128ee2f9db83130000000085ffff7e000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000b3ffffffffee2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fccccccccccccf8ffffffd5cccccccccccdffffffffcccccccbb641000000000069ffffffffbf0000000000000000000000000004ddffffffff4600000000000000000000000000000038ffffffffff1c00000000000000006bffffffffbe000000000000000000000000000000000000000000000004ceffffffffb40000000000000000000000027ffcffffffffb809000000000000000000000000000000000000001cf8fffffffff42800000000000000000000000000000edcffffffffff400000000000acffffff2000000000000000000000000040ffffffffffff850000000000000000000000000000000000000054f3ffffffffffffffffffffffffffffffc83100000000000000153b00000000000000000000004dffffffffa10000000069ffffffff3c000000000000000079ffffffe70c00000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000017c2fbffffffe0190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005faffffffffffffffffffffffffffffffffffffffffffffffffffe90200000000ceffffffff4b00000000000000000000000000006dffffffffac00000000000000000000000000000038ffffffffff1c0000000000000000a9ffffffff70000000000000000000000000000000000000000000000054ffffffffffff380000000000000000001abfffffffffffaf0700000000000000000000000000000000000000008bffffffffff620000000000000000000000000000000034fdffffffffb70000000000acffffff20000000000000000000000000b0ffffffffffffeb08000000000000000000000000000000000000001c9afbffffffffffffffffffffffc85d01000000000000000bdaffac19000000000000000029e8ffffffff4b0000000003d4ffffffcb0100000000000018f2ffffff630000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ceffffffffffffffffffffffffffffffffffffffffffffffffffff2400000025ffffffffe803000000000000000000000000000013fbfffffff70d000000000000000000000000000038ffffffffff1c0000000000000000d9ffffffff3b000000000000000000000000000000000000000000000076ffffffffffff590000000000000000036a808080807c5302000000000000000000000000000000000000000000e0ffffffffda020000000000000000000000000000000000aefffffffffb12000000000000000000000000000000000000000023fdffffffffffffff630000000000000000000000000000000000000000001965afd4eafdffffe49f6c2a0000000000000000000090fffffff59437030000001b7df4ffffffffca02000000000048ffffffff5d0000000000009dffffffd0020000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffff080000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000000000000002a82c8e6faf5dbab600a000000005ef7ffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ae0feffffffffffffffffffffffffffffffffffffffffffffffff4e0000006effffffff9d00000000000000000000000000000000c2ffffffff4e000000000000000000000000000038ffffffffff1c000000000000000bfdfffffffe0c000000000000000000000000000000000000000000000051ffffffffffff350000000000000000000000000000000000000000000000000000000000000000000000000023ffffffffff6d0000000000000000000000000000000000003effffffffff50000000000000000000000000000000000000000092ffffffffc7ffffffd2000000000000000000000000000000000000000000000000000088ffff9200000000000000000000000001aefffffffffffff4dbd1e4fffffffffffff22e00000000000000b8ffffffe40a0000000031fdffffff43000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000004797b8d8fdffffffffcdccccccccccccbf00000000a4ffffffff400000000000000000000000005cffffffff8800000000000d9bfdffffffffffffffffec64000000bfffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035ffffffd200000000000061ffffffab000000000000000000acffffffff5c0000000000000000000000000000000081ffffffff8e000000000000000000000000000038ffffffffff1c0000000dd8d8d8ddfffffffffdd8d8d8d8d8d8d8d8d8d8d8bf20000000000000000000000003caffffffffaf000000000000000000000000000000000000000000000000000000000000000000000000000056ffffffffff2600000000000000000000000000000000000004f3ffffffff85000000ccffffffdc00000000000000000000000ff3ffffffec40ffffffff410000000000000000000000000000000000000000000000000078ffffa1000000000000000000000000000072f4ffffffffffffffffffffffffffec3b00000000000000002bfcffffff7f00000000c1ffffffb300000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000032fffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000015cdffffffffffffffffffffffffbc1800deffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f8fffffc0b00000000002cffffffe2000000000000000000dcffffffff28000000000000000000000000000000004dffffffffbf000000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffff7e00000000000000000000000012a1f3ec8b09000000acffffffffa4000000000000000000000000000000000000028ceeffffffff5f00000079ffffffffe90000000000000000000000000000000000000000bdffffffffa7000000ccffffffdc000000000000000000000074ffffffff9701ddffffffb00000000000000000000000000000000000000000000000000068ffffb10000000000000000000000000000001793f7fffffffffffffffffffba5170000000000000000000099fffffff51b000054fffffffb2700000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000048fffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000001b8fffffffffffff3d7d8f6ffffffffdd24f9ffffff88000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9ffffff3e000000000002f3ffffff1a0000000000000007fdfffffffd050000000000000000000000000000000028ffffffffea000000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffff84000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000000000093ffffffffff85000000008dffffffffce0000000000000000000000000000000000000000a3ffffffffbb000000ccffffffdc0000000000000000000003e1ffffffff2d0076fffffffd2200000000000000000000000000000000000000000000000058ffffc000000000000000000000000000000000000b53a1d2effbf2dfb3751c00000000000000000000000016f1ffffffa10007deffffff930000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff08000000000000000048fffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000005cffffffffffcb45040000002b8cefffffedffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093ffffff74000000000000c0ffffff510000000000000023ffffffffe3000000000000000000000000000000000008ffffffffff080000000000000000000000000038ffffffffff1c0000000000000064ffffffffab00000000000000000000000000000000000000000000000000000000000000000000acffffffffa4000000000000000000000000000000000073ffffffffffaa010000000096ffffffffbb00000000000000000000000000000000000000008fffffffffc5000000ccffffffdc0000000000000000000056ffffffffbf000013f7ffffff8e00000000000000000000000000000000000000000000000041ffffd0000000000000000000000000000000000000000000000000000000000000000000000000000000000079fffffffc206effffffef130000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffe000000000000000000000000000000000000000000000003eddffffaa0000000000000000000000ccffffffffbc080000000000000019b2ffffffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005dffffffaa0000000000008affffff88000000000000003affffffffcf000000000000000000000000000000000000f4ffffffff200000000000000000000000000038ffffffffff1c0000000000000068ffffffffa800000000000000000000000000000000000000000000000000024903000000000000acffffffffa40000000000000000000000000000000054feffffffffc809000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000000000c7ffffffff52000000a1fffffff10c000000000000000000000000000000000000000000000006c5ffdf000000000000000000000000000000000000000000000000000000000000000000000000000000000008e0ffffff8fe1ffffff73000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e4ffffffe00000000000000000000000000000000000000000000034f4fffff31b0000000000000000000023fffffffff81b0000000000000000000083ffffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ffffffdf00000000000054ffffffc0000000000000004affffffffbf000000000000000000000000000000000000e4ffffffff310000000000000000000000000038ffffffffff1c0000000000000065ffffffffaa000000000000000000000000000000000000000000000000005cffe4811500000000acffffffffa40000000000000000000000000000003af7ffffffffe01700000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000000037ffffffffe00300000037ffffffff6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022f5d717c7257290000000000000000000000000000000059fffffffcffffffdc06000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000e1ffffffe300000000000000000000000000000000000000000023e9ffffff7300000000000000000000005affffffffa90000000000000000000000008dffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001efffffff1500000000001ffffffff40300000000000051ffffffffb9000000000000000000000000000000000000deffffffff380000000000000000000000000038ffffffffff1c0000000000000060ffffffffaf00000000000000000000000000000000000000000000000000c9ffffffc600000000acffffffffa4000000000000000000000000000025ebfffffffff12c0000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000000000a8ffffffff760000000000ccffffffda010000000000000000000000000000000000000000000000000000000000000000000000000000000000002594efffffffffffffffdd8f290000000000000000000000000000c7ffffffffffff5300000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000d1fffffff3000000000000000000000000000000000000000015dbffffffd304000000000000000000000083ffffffff6b0000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbffffff4b000000000000e8ffffff2e00000000000056ffffffffb5000000000000000000000000000000000000d9ffffffff3e0000000000000000000000000038ffffffffff1c00000010fffffffffffffffffffffffffffffffffffffffffffffdae0000000000000000001affffffff9000000000acffffffffa40000000000000000000000000014dbfffffffffc48000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000001dfbfffffff612000000000062ffffffff4b00000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000000000000000017cf9fffffffffffffffffffffffc9d1a00000000000000000000000039ffffffffffc20000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff0800000000000000000000000000baffffffff1f0000000000000000000000000000000000000bcafffffffe3d00000000000000000000000095ffffffff4d0000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffff81000000000000b3ffffff6600000000000051ffffffffb9000000000000000000000000000000000000deffffffff380000000000000000000000000038ffffffffff1c00000010ffffffffffffffffffffffffffffffffffffffffffffffff1100000000000000004cfffffffa1700000000acffffffffa400000000000000000000000008c6ffffffffff6b00000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000000008affffffff9b00000000000009eeffffffba00000000000000000010aaffffffffffffffffffe05a00000072ffffff78000000000000000000019bffffffffffffffffffffffffffffffeb48000000000000000000000000a9fffffffe340000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000081ffffffff74000000000000000000000000000000000004b5ffffffffa000000000000000000000000000a2ffffffff400000000000000000000000005cffffffff88000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044ffffffb70000000000007dffffff8e0000000000004affffffffc0000000000000000000000000000000000000e4ffffffff300000000000000000000000000038ffffffffff1c0000000dd8d8d8d8ffffffffffd9d8d8d8d8d8d8d8d8d8d8d8d8d8d810000000000000000062ffffffc00000000000acffffffffa4000000000000000000000002acffffffffff920000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000000befffffffff2e000000000000008dffffffff2a0000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000000006bfffffffffff5a268515873b0f8ffffffffea08000000000000000000000020f8ffffa3000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000036ffffffffee24000000000000000000000000000000009dffffffffee1600000000000000000000000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018cf2ffec00000000000047ffffe43900000000000039ffffffffd0000000000000000000000000000000000000f5ffffffff1f0000000000000000000000000038ffffffffff1c0000000000000000dcffffffff2e00000000000000000000000000000000000000000000005dffffff9b0000000000acffffffffa400000000000000000000008dffffffffffb5030000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000006cffffffffc0000000000000000024feffffff980000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff78000000000000000010f1ffffffffb4160000000000001387f9ffff5e0000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff88000018ffffffff080000000000000000000000000000beffffffffec660e0000000000000000000000000082fffffffee1470000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ffffffffe3000000000000000000000000000000000008ffffffffff070000000000000000000000000038ffffffffff1c00000000000000009fffffffff6a00000000000000000000000000000000000000000000003cffffff950000000000acffffffffa4000000000000000000006dffffffffffd10d000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000000002dbffffffff53000000000000000000b9fffffff512000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000061ffffffffbe040000000000000000002ec499000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018ffffffff0800000000000000000000000000002cf3fffffffffffddecec9a3010000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fcfffffffd060000000000000000000000000000000028ffffffffe8000000000000000000000000000038ffffffffff1c000000000000000062ffffffffb000000000000000000000000000000000000000000000000af5ffffba0000000000acffffffffa40000000000000000004efdffffffffe71d00000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc0000000000004effffffffe2030000000000000000004effffffff76000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000000a2ffffffff2d0000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000000000000000000000000018ffffffff080000000000000000000000000000004cf5ffffffffffffffffff110000000000000000000000000000000000000000000000000000000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000daffffffff29000000000000000000000000000000004effffffffbd000000000000000000000000000038ffffffffff1c000000000000000015f9fffffffa140000000000000000000000000000000000000000000000a4fffff91200000000acffffffffa4000000000000000035f5fffffffff6350000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc000000000000beffffffff780000000000000000000002e0ffffffe2030000000065ffffffff71000000000000000000005bfaffffffff780000000000000000bdffffffe4000000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000000000002dcaffffffffffffffff1d0000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000090fffff791020000000000059bf9ffff6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000a9ffffffff5d0000000000000000000000000000000082ffffffff8b000000000000000000000000000038ffffffffff1c000000000000000000a9ffffffff7900000000000000000000000000000000000000000000002cfaffff8700000000acffffffffa40000000000000021e9fffffffffe53000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000ccffffffdc00000000002ffffffffff713000000000000000000000079ffffffff540000000070ffffffff4500000000000000000000006dffffffff780000000000000000c3ffffffd3000000000000000000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000070ffffffb8000018ffffffff080000000000000000000000000000000000004291cde8faefd59a110000000010aaffffffffffffffffffe05a00000072ffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000002adffffffaa0600000009b5ffffff830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000006bffffffff9e00000000000000000000000000000000c2ffffffff4a000000000000000000000000000038ffffffffff1c00000000000000000040fffffffff01400000000000000000000000000000000000000000000007efffff930000000acffffffffa400000000000011d7ffffffffff7800000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000caffffffd90000000000a0ffffffff9d00000000000000000000000015f9ffffffc30000000051ffffffff55000000000000000000000058ffffffff780000000000000000adffffffec000000000000000000000000000000000000b2cccccccccccccccccccccccccccccccccccccccccccc9900000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000009c7ffffffb80a000dc0ffffffa2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd400000000000000000022ffffffffe903000000000000000000000000000014fbfffffff50b000000000000000000000000000038ffffffffff1c00000000000000000000b3ffffffffaf010000000000000000000000000000000000000000000004c5ffffdb050000acffffffffa4000000000007c1ffffffffff9e0000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c7ffffffd40000000018f9ffffffff2f00000000000000000000000000a5ffffffff3300000012f6ffffffb1000000000000000000000058ffffffff7800000000000000007bffffffff39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000014dbffffffc421caffffffbd05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd400000000000000000000caffffffff4c00000000000000000000000000006effffffffa800000000000000000000000000000038ffffffffff1c0000000000000000000021f6ffffffff8b01000000000000000000000012bbe432000000000000000fcaffce070000acffffffffa40000000002a7ffffffffffbf050000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000c2ffffffce0000000082ffffffffc200000000000000000000000000003affffffffa10000000092ffffffff850200000000000000000058ffffffff78000000000000000029feffffffc2020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff080000000000000000000000000000001580c9eefbeaca8b36000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000024ebfffffffaffffffd30f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000065ffffffffc00000000000000000000000000005deffffffff4100000000000000000000000000000000000000000000000000000000000000000064ffffffffffaa120000000000000000003addffffec2b00000000000000106704000000acffffffffa40000082dadffffffffffd911000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000b6ffffffc100000008eaffffffff54000000000000000000000000000000cffffffff9170000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000a8ffffffff9b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000000047efffffffffffffffffc22a00000043ffffffffde0d000000000000000f95feffffffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000039f6ffffffffffe51d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000008e8ffffffff5300000000000000000000000077ffffffffcd000000000000000000000000000000000000000000000000000000000000000000000086fffffffffff08332010000000a47adfeffffffff9400000000000000000000000000acffffffffffffffffffffffffffffe72400000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000a7ffffffb300000064fffffffdad020000000000000000000000000000003becffffff7f0000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000000000000016e4ffffffffc01d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff08000000000000000000000000002cf6ffffffffffffffffffffed0a000065ffffffff71000000000000000000005bfaffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000052fdfffffff230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000000065ffffffffed22000000000000000000003cfaffffffff4100000000000000000000000000000000000000000000000000000000000000000000000183fefffffffffffff4ddd2e2faffffffffffff9a0200000000000000000000000000acffffffffffffffffffffffffffda270000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000094ffffffa0000000000000000000000000000000000000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000002be6ffffffffef600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffb8000018ffffffff0800000000000000000000000000b3fffffffffff7d6f0ffffff7900000070ffffffff4500000000000000000000006dffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd4000000000000000000000002bfffffffffe12f000000000000000048f1ffffffff9c00000000000000000000000000000000000035c7fbffffd217000000000000000000000000004dedfffffffffffffffffffffffffffff270000000000000111500000000000000acffffffffffffffffffffffffe219000000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000007effffff8b00000000000000000000000000000000000000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff7800000000000000000000001abdffffffffffb91a0000000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018ffffffffcdccccccc970000000000000000ffdffffffff9609000046d2cf0500000051ffffffff55000000000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffd40000000000000000000000001ae3fffffffff996380000000347aaffffffffffcd0b000000000000000000000000000000000172faffffffcd130000000000000000000000000000000e7ceefffffffffffffffffffffba41a00000000000007cedb1f000000000000acffffffffedccccdeffffffffffe5270000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000066ffffff75000000000000000000000000000000000000000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000000000000000167f1ffffffffe62500000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018fffffffffffffffffffa0200000000000044ffffffffd8030000000001050000000012f6ffffffb1000000000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa8cbcccccccccccccccccccccccccccccccce5fffffff7ccccccccca6b000000000000002ae5fffffffffffff4d8ddf8ffffffffffffd3180000000000000000000000000000000014b4ffffffffc60f00000000000000000000000000000000000009488fc6ddf3faefd2aa6a19000000000000000013f2ffda140000000000acffffffffa40000002ddcffffffffe62000000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc80000004cffffff5900000000000000000000000000004ffffff59c0600000000000000000000000000000000000000000000000000000000000058ffffffff7800000000000000000000000000001dc3ffffffffce01000000000000000000e0ffffffffffffffffffffffffffffffffffffffffffffc00000f0ffffffffffffffffffffffffffffffffffffffffffffb8000018ffffffffffffffffffff080000000000005affffffff9a00000000000000000000000092ffffffff850200000000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffffffffffffffffffffffffffffffffffffffffffffffffffffca00000000000000001ec5ffffffffffffffffffffffffffffaf10000000000000000000000000000000003fe4ffffffffbf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000047fcffb90200000000acffffffffa40000000020e7ffffffffd813000000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000032ffffff3d000000000000000000000000000000b5ffffffa501000000000000000000000000000000000000000000000000000000000058ffffffff7600000000000000000000000000000005b0ffffffff27000000000000000000b2cccccccccccccccccccccccccccccccccccccccccccc990000bfcccccccccccccccccccccccccccccccccccccccccccc92000018ffffffffffffffffffff0800000000000063ffffffff810000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc0000000000000000000367e3ffffffffffffffffffffd45300000000000000000000000000000000027ffcffffffffb8090000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffff6800000000acffffffffa4000000000031f3ffffffffc6090000000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc8000000000000000000000000000000000000000000000023f8ffffff8a00000000000000000000000000000000000000000000000000000000005fffffffff660000000000000000000000000000000017fdffffff3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffffff800000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000a4ffffffff400000000000000000000000005cffffffff8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc0000000000000000000000034892c8ebfaf8e6c1873900000000000000000000000000000000001abfffffffffffaf0700000000000000a4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd800000000000004d8ffec0b000000acffffffffa400000000000047fbffffffffb10300000000000000000000000000000098ffffffffb4000000000000000000000000000000000000000088ffffffffc800000000000000000000000000000000000000000000000082ffffffff6d0000000000000000000000000000000000000000000000000000000075ffffffff530000000000000000000000000000000000dfffffff2d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ffffffff800000000000000000000000000000005cdcffffffffffffffffffffffffffffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cffffffffc3030000000000000000000000007cffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a808080807c53020000000000000000a4ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8000000000000005cffff6c000000acffffffffa4000000000000005fffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffd53000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000c0ffffff1b00000000000000000000000000000000145fabd5edfcf3d9b076280000000000000000000000044c96cbedfbf6e3c68a4200000000000000000099cccccccccccccccccccccccccc3f00000000000064ffffffff80000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009affffffff850000000000000000000000007cffffffd40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092ffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8000000000000000ef9ffc6000000acffffffffa400000000000000007cffffffffff7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffff73c00000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000000000000000000000000a1ffffff0800000000000000000000000000000f88f7ffffffffffffffffffffc64a00000000000000025fe1ffffffffffffffffffffd24b00000000000000b5ffffffffffffffffffffffffff5000000000000064ffffffff800000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008cefffffffd4500000000000000000000007cffffffd40000000000000000acffffffffa40000000000000000000000000000000011b3f9fffffff123000000000000000000000000000000000000000000000033fdffffffffffe1ccccccccccccccccccccccccccccccccccccccccccac000000000029baf3fffffc0a0000acffffffffa400000000000000000098ffffffffff620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ffffffffee290000000000000000000059fffff67b070000000000000002a8ffffffff8800000000000000000000000000000000000082fffff6000000000000000000000000000032e6ffffffffffffffffffffffffffffaa0c000000001fcbffffffffffffffffffffffffffff9001000000000052ffffffffffffffffffffffffff4d00000000000064ffffffff800000000000000000000000000000000000000000000000000000000058ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023f0ffffffe818000000000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000000001b4ffffffffff5500000000000000000038ffffffffff1c00000000000000000086ffffffffffd007000000000000000000000000000000000000000000000000000ee3ffffffffff2d0000acffffffffa400000000000000000003b2fffffffffb4a000000000000000000000000000000000000000000000024e2fffff7b825000000000000000000000000000000000054d9f9cb3800000000000000000000000000000000000017c2fbffffffe019000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000000a1818160000000000000000000000000044f4fffffffffffff5dcd1e1feffffffffffce10000026ebfffffffffffff1d8d0e0feffffffffff8b00000000000067feffffd4d7f7ffffffffffe21900000000000064ffffffff800000000000000000000000000000000000000000000000000000000058ffffffff7600000000000000000041cbf3c237000000000057d4f2b828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052ffffffffbd020000000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000000072ffffffffff960000000000000000000038ffffffffff1c00000000000000000005cbffffffffff8d000000000000000000000000000000000000000000000000004fffffffffffff300000acffffffffa4000000000000000000000ac8fffffffff435000000000000000000000000000000000000000000000020ddfffffff35c00000000000000000000000000000053fffffffff92e0000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000001dedffffffffffa93f03000000105cd0ffffffff5d000006d8fffffff1892c010000001269e8ffffffff3c0000000000005ffdfff543000000000000000000000000000064ffffffff80000000000000000000000000000000000000000000000000000000005fffffffff6600000000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008fffffffff7d0000000000000000007cffffffd40000000000000000acffffffffa4000000000000000000000000000035faffffffffcf070000000000000000000038ffffffffff1c0000000000000000000026f4fffffffffe4400000000000000000000000000000000000000000000000057fffffffffffb0c0000acffffffffa4000000000000000000000014daffffffffea2400000000000000000000000000000000000000000000001bd9ffffffff9f0b00000000000000000000000000d0ffffffffffb300000000000000000000000000000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000c2fffffffff54b00000000000000000271f9ffa4000000003ff9ffa315000000000000000018dcffffffbf0000000000000058fbfff74a0000000000000000000000000064ffffffff800000000000000000000000000000000000000000000000000000000075ffffffff53000000000000000084ffffffffff7a000000a6ffffffffff56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c7fffffffc3e00000000000000007cffffffd40000000000000000acffffffffa4000000000000000000000000000eddfffffffff225000000000000000000000038ffffffffff1c000000000000000000000066ffffffffffe513000000000000000000000000000000000000000000000012e8ffffffff97000000acffffffffa400000000000000000000000022e9ffffffffdc16000000000000000000000000000000000000000000000017d3ffffffffd72e000000000000000000000000f4ffffffffffd90000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000000000004dc6ffffffffffffffffffffe25a0000000000000000000000000000000000000000000000000000000000000000000000004afffffffffe4400000000000000000000002d660700000000001b28000000000000000000000049fffffffd150000000000000051f9fff95100000000000000000000000064ffffffff8000000000000000000000000000000000000000000000000000000000a8ffffffff24000000000000000080ffffffffff75000000a2ffffffffff510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001decffffffe414000000000000007cffffffd40000000000000000acffffffffa400000000000000000000000000a8ffffffffff5900000000000000000000000038ffffffffff1c000000000000000000000000b0ffffffffffad0000000000000000000000000000000000000000000000002ab6efea8805000000acffffffffa40000000000000000000000000034f4ffffffffcb0b000000000000000000000000000000000000000000000013cefffffffff76a0000000000000000000000d1ffffffffffb50000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000000000000000000000000000000000000000000000000000000c3ffffffff9500000000000000000000000000000000000000000000000000000000000000000002f3ffffff4b00000000000000004af7fffb59000000000000000000000064ffffffff80000000000000000000000000000048741c0000000000000000000011f5ffffffe600000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048feffffffb6010000000000007cffffffd40000000000000000acffffffffa400000000000000000000000065ffffffffff9b0000000000000000000000000038ffffffffff1c00000000000000000000000014e6ffffffffff630000000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000004afbffffffffb704000000000000000000000000000000000000000000000010c5ffffffffffac1000000000000000000057fffffffffa3100000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021fffffffffc1b00000000000000000000000000000000000000000000000000000000000000000000e6ffffff6300000000000000000044f6fffd5e0000000000000000000064ffffffff800000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000003bc7f1be31000000000051d1f0b42300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ffffffff750000000000007cffffffd40000000000000000acffffffffa400000000000000000000002bf6ffffffffd2090000000000000000000000000038ffffffffff1c0000000000000000000000000047fefffffffff42500000000000000000000000000000000000000000000000000000000000000acffffffffa400000000000000000000000000000063ffffffffffa0000000000000000000000000000000000000000000000000065c7d808080805f0000000000000000000057dbf9cd3b0000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016ae1f9c23100000000000000000064ffffffffb50000000000000000000000000000000000000000000000000000000000000000000017feffffff60000000000000000000004afafffd5a00000000000000000064ffffffff8000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003befffffffb3800000000007cffffffd40000000000000000acffffffffa40000000000000000000009d4fffffffff429000000000000000000000000000038ffffffffff1c000000000000000000000000000091ffffffffffca04000000000000000000000000000000000000000020b4f6e9830600000000acffffffffa40000000000000000000000000000000080ffffffffff840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ffffffffff5210000000000000000a4ffffffff7500000000000000000000000000000000000000000000000000000000000000000000a4ffffffff3e00000000000000000000006bfffff83c000000000000000064ffffffff800000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018e7ffffffe011000000007cffffffd40000000000000000acffffffffa4000000000000000000009affffffffff5e00000000000000000000000000000038ffffffffff1c000000000000000000000000000008d3ffffffffff84000000000000000000000000000000000000000de1ffffffff9a00000000acffffffffa400000000000000000000000000000000009bffffffffff6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000000000000000000000000003eddffffaa0000000000000000000000000000000000000000000002edffffffffff980000000000000000c8ffffffff4000000000000000000000000000000000000000000000000000000000000000000ba1ffffffffe204000000000000000000000000b7ffffdc050000000000000064ffffffff8000000000000000000000000000001ebbffffffffffffffffffffffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040fcffffffaf000000007cffffffd40000000000000000acffffffffa400000000000000000056ffffffffff9f0000000000000000000000000000000038ffffffffff1c0000000000000000000000000000002ef8fffffffffd3c00000000000000000000000000000000000065fffffffffffe1d000000acffffffffa400000000000000000000000000000000000282e9fffffffd50000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000070ffffffff74000000000000000065ffffffff71000000000000000000005bfaffffffff78000000000000000000000000000000000034f4fffff31b0000000000000000000000000000000000000000000012ffffffffffffb90000000000000000dbffffffff270000000000000000000000000000000000000000000000000000000000000763e3ffffffffff5f0000000000000000000000000034ffffff670000000000000064ffffffff80000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007affffffff6e0000007cffffffd40000000000000000acffffffffa4000000000000000022f1ffffffffd50a0000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000071ffffffffffe00f000000000000000000000000000000000088ffffffffffff3d00000000000000000000000000000000000000000000000000000000000000000000000000000010aaffffffffffffffffffe05a00000072ffffff780000000000000070ffffffff74000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000000000000000023e9ffffff73000000000000000000000000000000000000000000000002ebffffffffff950000000000000000eeffffffff17000000000000000000000000000000000000000000000000000000002286e8ffffffffffff93000000000000000000000000000000deffffb80000000000000064ffffffff800000000000000000000000000000000000002877b0d8f1fbefd9a75b08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b6fffffff93300007cffffffd40000000000000000acffffffffa40000000000000005cafffffffff62b000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000001baffffffffffa5000000000000000000000000000000000064fffffffffffe1b000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff780000000000000070ffffffff74000000000000000051ffffffff55000000000000000000000058ffffffff7800000000000000000000000000000015dbffffffd30400000000000000000000000000000000000000000000000069fffffffff31e0000000000000000eeffffffff17000000000000000000000000000000000000000000000000000352bcfeffffffffffffffb90100000000004cc2e8bc0a0000000000d0ffffd10000008ffeffffffffffffffffffffffffffffff7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013e1ffffffdc0e007cffffffd40000000000000000acffffffffa4000000000000008cffffffffff6300000000000000000000000000000000000038ffffffffff1c00000000000000000000000000000000001aecffffffffff5a000000000000000000000000000000000bdeffffffff95000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff780000000000000070ffffffff74000000000000000012f6ffffffb1000000000000000000000058ffffffff7800000000000000000000000000000bcafffffffe3d000000000000000000000000000000000000000000000000000064dff8bf2c000000000000000000dcffffffff2600000000000000000000000000000000000000000000000b76e1ffffffffffffffffffffffc4210000000045ffffff7c0000000013f7ffffbf000000cbffffffffffffffffffffffffffffffff7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038faffffffa8007affffffd40000000000000000acffffffffa40000000000004afeffffffffa40000000000000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000051fffffffffff01f000000000000000000000000000000001caff6e77d04000000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff780000000000000070ffffffff7400000000000000000092ffffffff850200000000000000000058ffffffff780000000000000000000000000004b5ffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000000000c8ffffffff400000000000000000000000000000000000000000000054e6fffffffffffffffeb54fa3ffffffe82600000003e0fffffb6b05001ebdffffff7c000000ccffffffffffffffffffffffffffffffff7c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff6673ffffffd40000000000000000acffffffffa4000000000039eeffffffffd30c0000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000009cffffffffffc3020000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000000000000000000043ffffffffde0d000000000000000f95feffffffffff780000000000000070ffffffff740000000000000000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000000000009dffffffffee1600000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffff720000000000000000000000000000000000000000008cfffffffffffffff394260000007affffffcd010000004afdfffffffaebffffffffe71000000036607f9fc9ffffffffe6cccccccccccccc620000000000000000000000003fafeafae29e2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acfffffff788ffffffd40000000000000000acffffffffedccccccccdfffffffffffcf1d000000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000bdbffffffffff7b0000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000000000000065ffffffff71000000000000000000005bfaffffffff780000000000000070ffffffff740000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000000000000000000000082fffffffee1470000000000000000000000000014ffffffffffffffffffffffffffffffffffffffffe8000000000000005fffffffffb300000000000000000000000000000000000000007cffffffffffffe16e0e000000000001d3ffffff4d0000000056f0ffffffffffffffe02f00000000000000001fffffffff80000000000000000000000000000000000000008afffffffffffffa64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000edbfffffff8ffffffd40000000000000000acffffffffffffffffffffffffffffffdc8e390000000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000036fbfffffffffb36000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff7800000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000070ffffffff740000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000000014ffffffffffffffffffffffffffffffffffffffffe8000000000000001ffefffffffb1800000000000000000000000000000000000029fbffffffffef6d0500000000000000008bffffff9d0000000000167bc5eefbedc0700c00000000000000000002f9ffffff800000000000000000000000000000000000005fffffd8563262e8fffe3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f7ffffffffffffd40000000000000000acffffffffffffffffffffffffffffffffffffc541000000000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000007cffffffffffdb0b0000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff7800000000000000000000000051ffffffff55000000000000000000000058ffffffff780000000000000070ffffffff74000000000000000000000000000249a2edffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000000000004f7ffffffffffffffffffffffffffffffffffffffe80000000000000000b5ffffffff960000000000000000000000000000000000008dffffffffd01e000000000000000000007fffffffc6000000000000000000000000000000000000000000000000daffffff80000000000000000000000000000000000000d4fff51c00000038ffffb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffffffffd40000000000000000acfffffffffffffffffffffffffffffffffffffffe970700000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000003c3ffffffffff9c0000000000000000000000000000000000000000000065ffffffff71000000000000000000005bfaffffffff7800000000000000000000000012f6ffffffb1000000000000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000b4ffffffffffffffffffffffffffffffffffffffffff4c000000000000000091fffffffff4ccccccccccccccccccccccccccccb8000000000000000042fffffffffe470000000000000000000000000000000000c2ffffffee1a0000000000000000000000bcffffffcb000000000000000000000000000000000000000000000000b7ffffff80000000000000000000000000000000000008ffffbf0000000000e4ffe3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2ffffffffffd40000000000000000acffffffffa4000000000005152c63a9faffffffffffbc0b000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000020f1ffffffffff5100000000000000000000000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000000000092ffffffff850200000000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000058ffffffff780000b4ffffffffffffffffffffffffffffffffffffffffff4c00000000000000000bd8fffffffc3d0000000000000000000000000000000000000000000000acfffffffff7500000000000000000003fc6b309000000d6ffffff9e000000000000000000000056ffffffffb000000000001d83c2e3ebdbae5f070000000000000000000095ffffff80000000000000000000000000000000000006ffffc00000000000e6ffe10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ad4ffffffffd40000000000000000acffffffffa40000000000000000000019a5ffffffffffae000000000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000005cffffffffffec1a000000000000000000000000000000000000000051ffffffff55000000000000000000000058ffffffff78000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000058ffffffff760000b4ffffffffffffffffffffffffffffffffffffffffff4c0000000000000000002ef7ffffffe4140000000000000000000000000000000000000000000012e3ffffffffffb14a07000000094bb6ffffff9f000000c3ffffff880000000000000000000273f9ffffffff670000000061f5ffffffffffffffdb3500000000000000000072ffffff80000000000000000000000000000000000000cffff61e0000003bffffaa0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029f4ffffffd40000000000000000acffffffffa400000000000000000000000071ffffffffff600000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000a7ffffffffffbb010000000000000000000000000000000000000012f6ffffffb1000000000000000000000058ffffffff78000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff780000000000000070ffffffff74000000000000000000000000000000000000000000000000005fffffffff6600008fcccccccccccccccccccccccccccccccccccccccccc3c0000000000000000000068ffffffffb601000000000000000000000000000000000000000000002ae2fffffffffffff9e2d0dcfbffffffffffed1a000087ffffffbd000000000000000044c8ffffffffffe00c00000051fffffffffffffffffffff12a00000000000000004fffffff8000000000000000000000000000000000000056ffffda573364e9fffc34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000098ffffffffdf0400000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000010e1ffffffffff72000000000000000000000000000000000000000092ffffffff850200000000000000000058ffffffff78000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff780000000000000070ffffffff740000000000000000000000000000000000000000000000000075ffffffff53000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffff7500000000000000000000000000000000000000000000001cccffffffffffffffffffffffffffffd42300000021f8ffffff4800000000065ac9fffffffffffff63c0000000be8fffff26f140632b9ffffffbe00000000000000002dffffff800000000000000000000000000000000000000081fefffffffffff85c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000acffffffffa40000000000000000000000000013f2ffffffff4d00000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000003ffdfffffffff92f000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000070ffffffff7400000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000000000000000000000000000000000000000000edcfffffffb3900000000000000000000000000000000000000000000000260e4ffffffffffffffffffffe96e06000000000070fffffff76b031680e8ffffffffffffffed420000000068ffffff460000000002bfffffff1e0000000000000004c7ffff8000000000000000000000000000000000000000003cabe9f9e09a2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8fffffffffffffffffffffffffffffffffffffffffffffffffffbbb140000acffffffffa40000000000000000000000000000a9ffffffff9200000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000087ffffffffffd5080000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff78000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000070ffffffff74000000000000000000000048741c0000000000000000000011f5ffffffe60000001d807e5b0800000000000000000000000000000000000000000000000000000000000033f9ffffffe112000000000000000000000000000000000000000000000000054c93c7e9f8f7e2cc964c0900000000000000006bf7ffffffe1f7ffffffffffffffffb31e000000000040bbf8970000000000005bffffff4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8ffffffffffffffffffffffffffffffffffffffffffffffffffffff8b0000acffffffffa400000000000000000000000000006bffffffffc400000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000005ccffffffffff930000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000058ffffffff780000000000000070ffffffff740000000000000000000059fffff67b070000000000000002a8ffffffff8800000005e7ffffcd090000000000000000000000000000000000000000000000000000000000006effffffffb10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002097ffffffffffffffffffffbb4100000000000000000001000000000000005dffffff3f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffa80000acffffffffa4000000000000000000000000000052ffffffffd900000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000027f5ffffffffff4a0000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff78000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000070ffffffff7400000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000085ffffff7500000000000000000000000000000000000000000000000000000000000000aeffffffff70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a6fffffffffffffffaa83600000000000000000000000000000000000000a3fffff511000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000961eafffffffea0aec1cbcccccccccccccccccccccccccccccccccc850000acffffffffa4000000000000000000000000000055ffffffffdf00000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000067ffffffffffe816000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff7800000000000000000000000000000000000000000000000000000000005fffffffff660000000000000070ffffffff740000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000001ffdffffde0100000000000000000000000000000000000000000000000000000000000010dffffffffa350000000000000000000000000000000000000000000000000000000000000030310000000000000000000093ffffffffffffe9811a0000000000000000000000000000000000041441a6ffffff70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bccffffffcf0e00000000000000000000000000000000000000000000acffffffffa400000000000000000000000000006effffffffc800000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000b1ffffffffffb3000000000000000000000000000000000000000000000000000000000000000058ffffffff78000000000000000000000000000000000000000000000000000000000075ffffffff530000000000000070ffffffff7400000000000000000000001ebbffffffffffffffffffffffffffff8800000000000000b5ffffff470000000000000000000000000000000000000000000000000000000000000037faffffffde0f000000000000000000000000000000000000000000000000000000002aacfe5c0000000000000000003dffffffffffea6d0800000000000000000000000000000000000000e4ffffffffd95700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019f1ffffff9b00000000000000000000000000000000000000000000acffffffffa40000000000000000000000000000b0ffffffffaa00000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000015e7ffffffffff690000000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000070ffffffff74000000000000000000000000004dc6ffffffffffffffffffffe25a00000000000000004dffffffaf000000000000000000000000000000000000000000000000000000000000000074ffffffffac000000000000000000000000000000000000000000000000000025a5fdffff5c000000000000000000a7ffffffffba14000000000000000000000000000000000000000000e4ffffffef5701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008bffffffff29000000000000000000000000000000000000000000acffffffffa40000000000000000000000000021f7ffffffff6400000000000000000000000038ffffffffff1c00000000000000000000000000000000000000000000000000000000000048fefffffffff6290000000000000000000000000000000000000000000000000000000000005fffffffff6600000000000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000070ffffffff740000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000002e1fffffb1a0000000000000000000000000000000000000000000000000000000000000001b4ffffffff6b0000000000000000000000000000000000000000000000209efcffffffff5b000000000000000000e5ffffffce060000000000000000000000000000000000000000000028417decffff96010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004affffffff86000000000000000000000000000000000000000000acffffffffa400000000000000000000000007bdfffffffffa1700000000000000000000000038ffffffffff1c00000000000000000079ccccccccccccccccccccccccccccccccccccccccccf8ffffffffffc600000000000000000000000000000000000000000000000000000000000075ffffffff53000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000007dffffff7e000000000000000000000000000000000000000000000000000000000000000013e3fffffff83200000000000000000000000000000000000000001b97fafffffffffffb28000000000000000003fdffffff6400000000000000000000000000000000000000000000000000002df6ffff4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036ffffffffb4000000000000000000000000000000000000000000acffffffffa400000000000000000000001fbdffffffffff8c0000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff260000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000019fbffffe20300000000000000000000000000000000000000000000000000000000000000003cfcffffffdb0d00000000000000000000000000000000001790f7ffffffffffffb22f00000000000000000001faffffff5a00000000000000000000000000000000000000191c000000000000b1ffffb100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffce000000000000000000000000000000000000000000acffffffffa4000000000000000013479ef5ffffffffffdd0f0000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3b00000000000000000000000000000048741c0000000000000000000011f5ffffffe600000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000adffffff4d0000000000000000000000000000000000000000000000000000000000000000007affffffffa70000000000000000000000000000001389f5ffffffffffffb232000000000000000000000000d8ffffffa5000000000000000000000000000000000007e9fffd37000000000099ffffd600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acffffffffedcccccccccccedbeaffffffffffffffffde1e000000000000000000000000000038ffffffffff1c00000000000000000098ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000070ffffffff7400000000000000000000000000000000004ffffff59c06000000000000000000000000000045ffffffb400000000000000000000000000000000000000000000000000000000000000000001b9ffffffff660000000000000000000000000f82f2ffffffffffffb33300000000000000000000000000008bfffffffe5600000000000000000667a62b0000000000ceffffba0000000002d1ffffd300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acffffffffffffffffffffffffffffffffffffffffa71700000000000000000000000000000038ffffffffff1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d0000000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000070ffffffff74000000000000000000000000000000000000b5ffffffa5010000000000000000000000000001dbfffffd1e00000000000000000000000000000000000000000000000000000000000000000016e6fffffff72e0000000000000000000c7beeffffffffffffb434000000000000000000000000000000001ef6fffffffe9c2f010000002477e1ffffd4050000000066ffffff9d1b00199cffffff9600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acfffffffffffffffffffffffffffffffffff8ab42000000000000000000000000000000000038ffffffffff1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b0000000000000000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000070ffffffff7400000000000000000000000000000000000023f8ffffff8a000000000000000000000000000075ffffff830000000000000000000000000000000000000000000000000000000000000000000041fdffffffd80b0000000000000974ebffffffffffffb434000000000000000000000000000000000000006effffffffffffeed4d4ecffffffffffff5a0000000002c1fffffffff9fffffffff32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000acfffffffffffffffffffffef8eed9ba9159110000000000000000000000000000000000000038ffffffffff1c0000000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff7800000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082ffffffff6d0000000000000000000000000014f8ffffe6040000000000000000000000000000000000000000000000000000000000000000000081ffffffffa200000000076de7ffffffffffffb535000000000000000000000000000000000000000000007cfdfffffffffffffffffffffffffe7f0100000000000fbbffffffffffffffea3f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff1c0000000000000000000010aaffffffffffffffffffe05a00000072ffffff7800000885c61000000000004bd54200000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009dffffffffd5300000000000000000000000000a5ffffff520000000000000000000000000000000000000000000000000000000000000000000002beffffffff61000000d7fffffffffffaaa360000000000000000000000000000000000000000000000000041cfffffffffffffffffffffbb3600000000000000000151aee4faf1cb7e14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff78000077ffffca0e0000001bfffff53f0000000000000000000000002877b0d8f1fbefd9a75b08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ffffffffff73c0000000000000000000000003dffffffb900000000000000000000000000000000000000002cccccccccccccccccccccccccccccdcfffffffff2170000f0fffffffff17d1700000000000000000000000000000000000000000000000000000000408bc9e5f8f1dbbd792f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072ccccccccd6fffffffff7ccccccccccccccccccccc550000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff78000018e8ffffa700000000a5ffffec17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3ffffffffee29000000000000000000000000d4fffffe230000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff60000087f6fffffffffff99a1f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090ffffffffffffffffffffffffffffffffffffffffffe5000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff780000004bffffff550000000ce2ffffb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000090fffff791020000000000059bf9ffff640000000090fffff791020000000000059bf9ffff6400000000000000000000000000000017c2fbffffffe01900000000000000000000006dffffff880000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff740000001993f9fffffffffff9991e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cfffffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000001fd3fffff3a013000000000023b6f8ffffb80f000043ffffffffde0d000000000000000f95feffffffffff7800000000b8ffffe5070000005cffffff4900000000000000000000000000000000000000000000000000000000000000000000000000000000000002adffffffaa0600000009b5ffffff83000000000002adffffffaa0600000009b5ffffff8300000000000000000000000000000000000000000000000000000000000000000000000ff5ffffea0600000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffff7400000000001d99fafffffffffff9971d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bd3fffffffffffffffffffffffffffffffffffffffff4000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000db5ffffffe64800000067f4ffffff920300000065ffffffff71000000000000000000005bfaffffffff780000000051ffffff5b00000007eeffffb70000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c7ffffffb80a000dc0ffffffa20000000000000009c7ffffffb80a000dc0ffffffa2000000000000000000000000000000000000000000000000000000000000000000000000009dffffff570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000219ffcfffffffffff9961c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000028effffffff9724b4fffffffb69000000000070ffffffff4500000000000000000000006dffffffff780000000013ffffffaa00000000b7fffffb0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000014dbffffffc421caffffffbd05000000000000000014dbffffffc421caffffffbd050000000000000000000000000000000000000000000040798047000000000000000000000035ffffffbf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026a5fdfffffffffff8951b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff4800000000000000000000000000000000000066fbffffffffffffffef4400000000000051ffffffff55000000000000000000000058ffffffff780000000000f6ffffdc000000009affffff3800000000000077ffff9f00000000117cd6f9e79918000000000000000000000000000000000000000000000024ebfffffffaffffffd30f0000000000000000000024ebfffffffaffffffd30f000000000000000000000000000000000000000000008affffff40000000000000000000000000ccffffff27000000000000000000003b2600000000000000000000000000000000000000000000000000000000000000000000000000002babfefffffffffff8931a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000000000042eeffffffffffdb280000000000000012f6ffffffb1000000000000000000000058ffffffff78000000000afefffff100000000acffffff4d0000000000005bffffed20000c7cf2ffffffffffe31e000000000000000000000000000000000000000000000039f6ffffffffffe51d00000000000000000000000039f6ffffffffffe51d0000000000000000000000000000000000000000000028fdffffd70000000000000000000000000065ffffff8e0000000000000000000074fc9f20000000000000000000000000000000000000000000000000000000000000000000000000000030b2fffffffffffff78a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000025808080807c1300000000000000000092ffffffff850200000000000000000058ffffffff780000000046ffffffeb00000003e7ffffff470000000000001efefffff9d6f4ffffffffffffffffb700000000000000000000000000000000000000000000000052fdfffffff230000000000000000000000000000052fdfffffff230000000000000000000000000000000000000000000000091ffffff70000000000000000000000000000bf1ffffed0800000000000000000074fffffa981b000000000000000000000000000000000000000000000000000000000000000000000000000036b8ffffffffffff4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000d4d8d8d8d8d8d8d8d8f1ffffffffe3d8d8d8d8d8d8d8d88a0000000000000000000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff7800000000adffffffcc00000051ffffffff2800000000000000adfffffffffffffffff5d5f6ffffff250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009effffff611000000000000000000000000000095ffffff5d00000000000000000073fffffffff7901600000000000000000000000000000000000000000000000000000000000000000000000000003bbeffffffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000fcffffffffffffffffffffffffffffffffffffffffffffa40000000000000000000000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff7800000026ffffffff91000000c9ffffffeb010000000000000018dbfffffffffff4820f0017dfffff630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060ffffffa00000000000000000000000000000002dffffffc40000000000000000003dfefffffffffff48812000000000000000000000000000000000000000000000000000000000000000000000000000041c4ffff5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034ffffffffd4000000000000000000000000000000000000000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000000000000038190000000000002b2600000000000000005cdcffffffffffffffffffffffffffffffff7800000014d3ffffff370000008efdffff93000000000000000000128ee2f9db83130000000085ffff7e00000000ffffffffffffffffffffffffffffffffffffffffffac000000000000001a73b2d1dfd0b1701700000000000000000000000000000000000000000000000000000000000000c8ffffff3800000000000000000000000000000000c5ffffff2c0000000000000000003cc0fffffffffffff1810e000000000000000000000000000000000000000000000000000000000000000000000000000047ca5c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002affffffffd9000000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000000014ebf8790000000006d5fd9800000000000000000249a2edffffffffffffffffffffffffff78000000000143a9b700000000002084e01f00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffac00000000000589f8fffffffffffffff68002000000000000000000000000000000000000000000000000000000002fffffffcf00000000000000000000000000000000005dffffff93000000000000000000000040c0ffffffffffffed790b00000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016ffffffffe9000000000000000000000000000000000000000000000000000000000000000000a4ffffffff480000000000000000000000000000000000000000a5fffff20000000081ffffff160000000000000000000002306593b4d1e3f2f9feffffffff78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffac0000000006beffffffffffffffffffffffaf0200000000000000000000000000000000000000000000000000000097ffffff68000000000000000000000000000000000008ecfffff00a00000000000000000000000041c1ffffffffffffe972080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f6ffffffff110000000000000000000000000000000000000000000000000000000000000000a4ffffffff48000000000000000000000000000000000000004affffff9b0000002cfaffffbf000000000000000000000000000000000000000058ffffffff78000000000000000000000000000000000000000000000000024592c8ebfaf7e6cd955204000000000000000000cccccccccccccccccccccccccccccccccccccccccc890000000095ffffffdc5b17041861e3ffffff8000000000000000000000000000000000000000000000000000000cf2fffff30d0000000000000000000000000000000000008dffffff62000000000000000000000000000041c2ffffffffffffe56a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfffffffff4d0000000000000000000000000000000000000000000000c4c8c8c8c8c8c8c8c8ebffffffffd7c8c8c8c8c8c8c8c8800000000000000000000de2ffffec13000002c9fffffa2a000000000000000000000000000000000000000058ffffffff76000000000000000000000000000000000000000000000157daffffffffffffffffffffe46901000000000000000000000000000000000000000000000000000000000000000026fcffffe01400000000001debfffff6180000000000000000000000000000000000000000000000000066ffffff980000000000000000000000000000000000000025feffffca0000000000000000000000000000000042c2ffffffffffffe06304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007dffffffffae000000000000000000000009a8e6991400000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000000096ffffff6300000072ffffff870000000000000000000000000000000000000000005fffffffff660000000249030000000000003b14000000000000001ac3ffffffffffffffffffffffffffffb80b0000000000000000000000000000000000000000000000000000000000000089ffffff5e0000000000000073ffffff7600000000000000000000000000000000000000000000000000cdffffff300000000000000000000000000000000000000000bdffffff31000000000000000000000000000000000043c3ffffffffffffda5b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001af9fffffffe4000000000000000000001acffffffed34000000000000fcffffffffffffffffffffffffffffffffffffffffffffa400000000000000003dfeffffc401000021f5ffffdf0900000000000000000000000000000000000000000075ffffffff530000005cffe4811500000010eff9a739000000001ae7ffffffffffffefd6d0e4ffffffffffffbb04000000000000000070ffffffff7400000000000000000000000000000000ccfffffe0f0000000000000022ffffffba00000000000000000000000000000000000000000000000035ffffffc800000000000000000000000000000000000000000055ffffff990000000000000000000000000000000000000043b7fdffffffffffb30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009cffffffffea310000000000000005a2ffffffffe40a0000000000000000000000000001d0ffffffffffff7100000000000000000000000000000008d8fffffb2c000000bcffffff4b00000000000000000000000000000000000000000000a8ffffffff24000000c9ffffffc60000006dfffffffe2400000000bdfffffff18829000000001a7bf4ffffffff6d000000000000000070ffffffff7400000000000000000000000000000000eeffffe4000000000000000000f8ffffdc0000000000000000000000000000000000000000000000009dffffff6000000000000000000000000000000000000000000005e7fffff30d00000000000000000000000000000000000000218ff9ffffffffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010dffffffffff88a290000000453cffffffffffe45000000000000000000000000000054ffffffffffffffe90a000000000000000000000000000087ffffff8a00000063ffffffae00000000000000000048741c0000000000000000000011f5ffffffe60000001affffffff90000000bdffffffe5070000000023ebfe9f1600000000000000002cefffffffe9030000000000000070ffffffff7400000000000000000000000000000000fdffffd7000000000000000000ecffffee00000000000000000000000000000000000000000000000ff5ffffee090000000000000000000000000000000000000000000085ffffff68000000000000000000000000000000000029a7fdffffffffffee6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034eeffffffffffffebd4d6f5ffffffffffff70000000000000000000000000000002d4ffffffc5f7ffffff760000000000000000000000000030fbffffe10b000019effffff31c000000000000000059fffff67b070000000000000002a8ffffffff880000004cfffffffa17000000f0ffffff6e0000000000000818000000000000000000000072ffffffff3d0000000000000070ffffffff7400000000000000000000000000000000f2ffffe0000000000000000000f6ffffe000000000000000000000000000000000000000000000006cffffff9000000000000000000000000000000000000000000000001ffdffffcf00000000000000000000000000000029a7fdfffffffffff1810f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ddfffffffffffffffffffffffffff8650000000000000000000000000000005affffffff6cb8ffffffec0d000000000000000000000004cdfffffe49000000adffffff6c000000000000000005e6ffffffffe378230000000033b8fffffffff71d00000062ffffffc000000006ffffffff1c0000000000000000000000000000000000000025ffffffff6b0000000000000070ffffffff7400000000000000000000000000000000d5fffffc09000000000000001affffffc30000000000000000000000000000000000000000000000d3ffffff28000000000000000000000000000000000000000000000000b5ffffff3700000000000000000000000027a5fdfffffffffff488120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7bf1ffffffffffffffffffffbb2c00000000000000000000000000000003d9fffffffa1461ffffffff7c00000000000000000000002dffffffce0100000bfdffffea0900000000000000000047efffffffffffffecd7d3edffffffffffff6b000000005dffffff9b00000002fefffff501000000000000000000000000000000000000001dffffffff800000000000000070ffffffff740000000000000000000000000000000095ffffff4f0000000000000065ffffff81000000000000000000000000000000000000000000003bffffffc0000000000000000000000000000000000000000000000000004effffff9e0000000000000000000026a4fdfffffffffff78f16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d529dcde2f7f5e5bd842c00000000000000000000000000000000005fffffffffa9000df0ffffffef100000000000000000000000b5ffffff6900000092ffffff8d000000000000000000001ebbffffffffffffffffffffffffffff8800000000003cffffff9500000000e0fffff2000000000000000000000000000000000000000064ffffffff710000000000000070ffffffff740000000000000000000000000000000036ffffffd10900000000000fe0fffffc2600000000000000000000000000000000000000000000a3ffffff580000000000000000000000000000000000000000000000000003e2fffff5100000000000000025a3fcfffffffffff9951a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ddfffffffe2f000083ffffffff8200000000000000000000001df2fffff01800000bdffffffc3000000000000000000000004dc6ffffffffffffffffffffe25a0000000000000af5ffffba00000000a4ffffff1600000000000000000000000000000000000042f1ffffffff3d0000000000000070ffffffff740000000000000000000000000000000000acffffffc73c02000342d1ffffff970000000000000000000000000000000000000000000012f7ffffe90600000000000000000000000000000000000000000000000000007effffff6d000000000024a1fcfffffffffffb9c1f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffffb000000012f2fffffff21300000000000000000000006affffffa500000046ffffffc8010000000000000000000000002877b0d8f1fbefd9a75b080000000000000000a4fffff91200000048ffffff680000000000000000000000000000000037a5feffffffffd2010000000000000070ffffffff7400000000000000000000000000000000000ed2fffffffff6e5f6ffffffffc5080000000000000000000000000000000000000000000072ffffff8800000000000000000000000000000000000000000000000000000019fbffffd4000000099bfcfffffffffffda3230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffff3e3d1a76e31000000000000000000000000000000000006e1ffffffff320000000088ffffffff88000000000000000000000001c2ffffff43000000a1ffffff67000000000000000000000000000000000000000000000000000000000000002cfaffff8700000000caffffdc070000000000000000000000054492dffffffffffffff231000000000000000070ffffffff740000000000000000000000000000000000000da4fefffffffffffffffd9a080000000000000000000000000000000000000000000000d8fffffe2200000000000000000000000000000000000000000000000000000000a0ffffff3c00005ffffffffffffeaa2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffd0660600000000000000000000000000006affffffffb4000000000014f4fffffff416000000000000000000000026f7ffffd907000012e8ffffee16000000000000000000000000000000000000000000000000000000000000007efffff9300000002af7ffff860000000000000000003c98edffffffffffffffffdb3400000000000000000070ffffffff7400000000000000000000000000000000000000002d8bccebfaebcc892900000000000000000000000000000000000000000000000041ffffffb800000000000000000000000000000000000000000000000000000000000da8f5ffa3000074ffffffffb02f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffffffd33300000000000000000000000008e4ffffffff360000000000008cffffffff8e00000000000000000000000079ffffff7e00000055ffffffa20000000000000000000000000000000000000000000000000000000000000004c5ffffdb050000006dfffffe3e00000000000040cdffffffffffffffffffde71090000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffff5000000000000000000000000000000000000000000000000000000000000000000000000074ffffb7350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2ccccccccccccccccd9eafffffffffffffffb54000000000000000000000070ffffffffb80000000000000017f6fffffff71a000000000000000000000004cffffff724000000afffffff40000000000000000000000000000000000000000000000000000000000000000fcaffce07000000007ffff33e00000000007cfeffffffffffffffe9993c0100000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016f9ffffe40300000000000000000000000000000000000000000000000000000000000000000000000074be3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000001755bdfffffffffffa480000000000000000000ae8ffffffff3a000000000000000091ffffffff9300000000000000000000000031fbffffb400000019f0ffffd6020000000000000041cbf3c237000000000057d4f2b828000000000000000000106704000000000000601c000000000064ffffffffffffe88c390200000000000000000000000000000070ffffffff740000000000000000000040b3ecfbecc57a120032bcc84e000040ffffffffffffffffffffffffff5400000000000000000000000078ffffff800000000000000000000000000000000000000c60afddf6f1d8a151040000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000050efffffffffe60d000000000000000075ffffffffbc0000000000000000001af8fffffff91d00000000000000000000000089ffffef0000000065ffffff140000000000002cf8fffffff32300000046ffffffffe31000000000000000000000000000000000000000000000000af0ffffffffdb530400000000000000000000000000000000000070ffffffff7400000000000000000064fefffffffffffff16aa4ffff64000040ffffffffffffffffffffffffff54000000000000000000000001ddfffffc1b00000000000000000000000000000000016ae9ffffffffffffffffda52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000003bf8ffffffff87000000000000000cebffffffff3e0000000000000000000096ffffffff9900000000000000000000000008d9e0510000000000bdec6a0000000000000084ffffffffff7a000000a6ffffffffff56000000000000000000000000000000000000000000000053ffffffffc80d000000000000000000000000000000000000000070ffffffff74000000000000000014f4ffffd7552f4697faffffffff64000040ffffffffffffffffffffffffff54000000000000000000000047ffffffb0000000000000000000000000000000000db0ffffffffffffffffffffffff930400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000008affffffffe6010000000000007affffffffc000000000000000000000001df9fffffffa210000000000000000000000001c05000000000000160b000000000000000080ffffffffff75000000a2ffffffffff5100000000001445000000000000015205000000000000007affffffff3f00000000000000000000000000000000000000000070ffffffff74000000000000000059ffffff310000000036e9ffffff64000033cccccccccccccccccccccccccc420000000000000000000000aeffffff4800000000000000000000000000000004bdffffffffffffffffffffffffffff9e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000001cffffffffff3800000000000feeffffffff430000000000000000000000009affffffff9f00000000000000000000000000000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c0000000040edfd5a000000000cc5ffae0400000000000083ffffffff2100000000000000000000000000000000000000000070ffffffff74000000000000000071fffffe03000000000034ffffff640000000000000000000000000000000000000000000000000000001afbffffde010000000000000000000000000000008dffffffffffffffffffffffffffffffff6b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000dbffffffff64000000000080ffffffffc40000000000000000000000000021fbfffffffc260000000000000000000000000000000000000000000000000000000000003bc7f1be31000000000051d1f0b423000000000057fffffc4a0000000febffffa300000000000066ffffffff5900000000000000000000000000000000000000000070ffffffff74000000000000000053ffffff2e000000000014ffffff640000000000000000000000000000000000000000000000000000007effffff7800000000000000000000000000000027fbffffffffffffffffffffffffffffffffee130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000beffffffff7d0000000011f1ffffffff4700000000000000000000000000009fffffffffa50000000000000000000253a7def6f1d6953b000000000000000000000000000000000000000000000000000000000000000000a4ffffe8130000004affffff5700000000001fffffffffe01a000000000000000027917500000000000000000070ffffffff74000000000000000008e4ffffd72d0000000014ffffff64000040ffffffffffffffffffffffffff5400000000000000000002e2fffff91600000000000000000000000000000099ffffffffffffffffffffffffffffffffffff790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000b8ffffffff890000000085ffffffffc800000000000000000000000000000024fcfffffffd2b0000000000000036d1ffffffffffffffffb41a0000000000000000000000000000000000000000000000000000000000000013edffffa400000000a5ffffec140000000000b0ffffffffe6660f0000000746a8fcffff58000000000000000070ffffffff7400000000000000000036eafffffec07c52373dffffff64000040ffffffffffffffffffffffffff540000000000000000004dffffffa800000000000000000000000000000003eaffffffffffffffffffffffffffffffffffffcc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000000d2ffffffff7500000014f3ffffffff4900000000000000000000000000000000a1ffffffffab00000000000055f8ffffffffffffffffffffe52d0000000000114100000000000009490000000000000000000000000000000082fffffe2800000026ffffff8200000000001febfffffffffffdddd0dbfbffffffffffd8010000000000000070ffffffff74000000000000000000001b99f9ffffffffffffffffff64000040ffffffffffffffffffffffffff54000000000000000000b4ffffff4000000000000000000000000000000022fffffffffffffffffffffffffffffffffffffffd0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000016fdffffffff490000008bfffffff783000000000000000000000000000000000010c4fdfffffe2f0000000039f9fffffffff4d4d9faffffffffe11600000060f2f7270000000045e8ff430000000000000000000000000000002bffffff8500000000cfffffe000000000000030e7ffffffffffffffffffffffffffd524000000000000000070ffffffff740000000000000000000000000e5895c0e2effaffffff64000033cccccccccccccccccccccccccc4200000000000000001efdffffd7000000000000000000000000000000003bffffffffffffffffffffffffffffffffffffffff1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000000087fffffffff50c00000000000000000000000000000000000000000000000000000000000000000000000003d8ffffffd9500500000e6df0ffffffa2000000d2ffffc301000000aeffffde0b000000000000000000000000000005fcffffc500000000a7ffffff21000000000000129ffaffffffffffffffffffec750900000000000000000070ffffffff7400000000000000000000000000000000000014ffffff630000000000000000000000000000000000000000000000000083ffffff70000000000000000000000000000000003bffffffffffffffffffffffffffffffffffffffff1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000044f9ffffffff8b000000000000000000000000000000000000000000000000000000000000000000000000005dffffffc60d00000000000028ebfffffd26000079ffffff6b00000055ffffff8f000000000000000000000000000000f8ffffe9000000009cffffff4500000000000000001a71b0ddf0f9e6cf9c520b000000000000000000000070ffffffff7400000000000000000000000000000000000028ffffff5300000000000000000000000000000000000000000000000004e6fffff6110000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffc0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000016cf5ffffffffd60d00000000000000000000035aacd9f4f1d6b05b030000000000000000000000000000000000b3fffff61d000000000000000053ffffff7a000006d7fffff21e000000b9fffffd380000000000000000000000000021fffffff200000000c5ffffff4e00000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000203300000000000065ffffff29000004b9f47500000000000097f59900000000000000000053ffffffa0000000000000000000000000000000000002e7ffffffffffffffffffffffffffffffffffffc90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000010d1d4881deffffffffffd620000000000000000000000000e2ffffffffffffffc60f00000000000000000000000000000000eeffffa700000000000000000001e6ffffb600000041ffffffb700000024f8ffffd40600000000000000000000000073ffffffe00000001afcffffff3c00000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000001ef2ffc8570900044eecffffd700000048ffffee000000000020ffffff170000000000000000baffffff3900000000000000000000000000000000000096ffffffffffffffffffffffffffffffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffffc930e0000000000000000000000000070ac593a4fc2ffffff9700000000000000000000000000000008ffffff7700000000000000000000b8ffffcf00000000a4ffffff5d00000080ffffff81000000000000000000000008e4ffffffb200000090fffffffe100000fcffffffe8000000000000000000000000000000000000000000000070ffffffff7400000000000000000055fdfffffffbeafaffffffff5000000072ffffff11000000004affffff390000000000000023feffffd00000000000000000000000000000000000000024faffffffffffffffffffffffffffffffffec100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffffffffffffffffffffffffffffffffde8723000000000000000000000000000000000000000014ffffffd600000000000000000000000000000008ffffff7800000000000000000000b9ffffcf0000000017efffffec16000007dbfffffa2d0000000000000000000032ffffffff68000000d6ffffffc4000000fcffffffe800000000000000000000000000000000000000000000000000000000000000000000000000000045dbfffffffffffffffd71000000008dffffff2c0000000065ffffff540000000000000089ffffff69000000000000000000000000000000000000000089ffffffffffffffffffffffffffffffff67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffe971a0000000000000000000000000000000000000000000049ffffffbe00000000000000000000000000000000eeffffaa00000000000000000002e9ffffb600000000006affffffa900000046ffffffca030000000000000000000058c7fff0100000002aa2f7ff5c000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000358a4dbf1f8de9d2d0000000000a8ffffff470000000080ffffff6f00000000000006eaffffe70c000000000000000000000000000000000000000004baffffffffffffffffffffffffffff9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2ccccccccccccd1dff5fffffffffff99211000000000000000000000000000000000f426db0fcfffffb4300000000000000000000000000000000b2fffff820000000000000000057ffffff79000000000002caffffff4f000000a9ffffff730000000000000000000000002e4b000000000000116502000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2ffffff61000000009affffff8900000000000059fffccd35000000000000000000000000000000000000000000000badffffffffffffffffffffffff900300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000022a73d9ffffffffe0340000000000000000000000000000003bffffffffffc63b00000000000000000000000000000000005effffffc90e0000000000002aedfffffe2700000000000032fcffffe50f000019f0fffff62300000000000000000000000000000000000000000000000000fcffffffe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0ffffff6f00000000a8ffffff97000000000000000000000000000000000000000000000000000000000000000000000169e9ffffffffffffffffd950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000479fdfffffff032000000000000000000000000000001e6ffff8b250000000000000000000000000000000000000004daffffffdb540700001070f2ffffffa50000000000000000b6ffffff5100000092ffffff7500000000000000000000000000000000000000000000000000fcffffffe80000000000000000000000000000000000000041cbf3c237000000000057d4f2b82800000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff980000000000000000000000000000000000000000000000000000000000000000000000000c5faedcf5f0d7a0510400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000067ffffffffdd0b000000000000000000000000000097ffff7a0000000000000000000000000000000000000000003cfafffffffff5d5dafbffffffffe318000000000000004affffffd20500002bfaffffe91200000041cbf3c237000000000057d4f2b82800000000000000fcffffffe80000000000000000000000000000000000002cf8fffffff32300000046ffffffffe310000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff740000001471bde1f9f4d599350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000000c2ffffffff7600000000000000000000001470aeeafffff7cda46d1b00000000000000000000000000000000000059f8ffffffffffffffffffffe62f0000000000000009defffffc35000001c3ffffff560000002cf8fffffff32300000046ffffffffe310000000000000fcffffffe800000000000000000000000000000000000084ffffffffff7a000000a6ffffffffff56000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000030ffffffffffffffff8600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000060ffffffffd90000000000000000001199f7fffffffffffffffffffec03b000000000000000000000000000000000038d2ffffffffffffffffb51b000000000000000085ffffff8c00000061ffffffb00000000084ffffffffff7a000000a6ffffffffff56000000000000fcffffffe800000000000000000000000000000000000080ffffffffff75000000a2ffffffffff51000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000d0ac533b63e5ffffff49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000028ffffffffff170000000000000041e5ffffffffffffffffffffffffffffa50b000000000000000000000000000000000253a6ddf6f0d5943b00000000000000000028f9ffffdc09000012ebfffff01a0000000080ffffffffff75000000a2ffffffffff51000000000000fcffffffe800000000000000000000000000000000000026f6fffffff01e0000003ffeffffffdf0c000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff740000000000000000005cffffff90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000016ffffffffff3200000000000043f7ffffffffffffecd0c5d5f9ffffffffffc60f000000000000000000000000000000000000000000000000000000000000000000befffffe410000009bffffff64000000000026f6fffffff01e0000003ffeffffffdf0c000000000000fcffffffe8000000000000000000000000000000000000003bc7f1be31000000000051d1f0b42300000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000000000000079ffffff83000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff20000000000000000000000000000025ffffffffff2e000000000027f5fffffffffe9d33000000000850c6ffffffff5800000000000000000000000000000000000000000000000000000000000000005cffffff9a00000039feffffbd000000000000003bc7f1be31000000000051d1f0b42300000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000d0ffffff7000000000a8ffffff9800000000000070ffffffff7400000000000017499ffdfffff626000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000004dffffffffff170000000001c2fffffffff24100000000000000000065f6ff9a0000000000000000000044ffff2800000000000000000000000000000000000010e8ffffe40f000004d1fffff5220000000000000000000000000000000000000000000000000000000000fcffffffe80000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000088ffffffffffdb3d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff2000000000000000000000000000009effffffffea010000000056fffffffffd3e00000000000000000000002459040000000000000000000044ffff2800000000000000000000000000000000000091ffffff4e0000006dffffff72000000000000000000000000000000000000000000000000000000000000fcffffffe800000000000000000000000000004ffffff59c06000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000045fffffb984b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000000031fcffffffff9e0000000000c3ffffffff900000000000000000000000000000000000000000000000000044ffff28000000000000000000000000000000000000d0ffffa800000000acffffc9020000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe8000000000000000000000000000000b5ffffffa5010000000000000000000000000000000070ffffffff7400000000000000000000000000003eddffffaa00000000000000000000000070ffffffff74000000000006f1ffff2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000000000003ae9fffffffffe360000000027fffffffffb180000000000000000000000000000000000000031470000000044ffff28000000005b290000000000000000000000003fd5ec15000000002bc5f92c000000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe800000000000000000000000000000023f8ffffff8a0000000000000000000000000000000070ffffffff740000000000000000000000000034f4fffff31b00000000000000000000000070ffffffff74000000000000abffff6a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffff200000000000000000001751acfeffffffffff9c000000000068ffffffffb20000000000000000000000000000000000000001c8ffb425000044ffff28000033c5ffb9000000000000000000000000000120000000000000002100000000000000000074ffffffffffffffffffffffffffffff54000000000000fcffffffe80000000000000000000000000000000082ffffffff6d00000000000000000000000000000070ffffffff7400000000000000000000000023e9ffffff730000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038ffffffffffd2cccccccccccccedbecffffffffffffffffb7080000000000a3ffffffff73000000000000000000000000000000000000001ee2fffffa8c0e41ffff24179dfeffffd412000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffff60f00000000000000000000000000000009dffffffffd53000000000000000000000000000070ffffffff74000000000000000000000015dbffffffd3040000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffffffffb8f07000000000000ccffffffff3f00000000000000000000000000000000000000000a82f7ffffe669fffa63f0fffff06f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffff7c000000000000000000000000000000004ffffffffff73c0000000000000000000000000070ffffffff74000000000000000000000bcafffffffe3d000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffffffffffffffff2a12c0000000000000000deffffffff270000000000000000000000000000000000000000000020aefffff6fef3fdfffe9c15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffffff31c00000000000000000000000000000000b3ffffffffee2900000000000000000000000070ffffffff7400000000000000000004b5ffffffffa000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038fffffffffffffffffffffffffdf0e3d4ae7f4d0900000000000000000000efffffffff170000000000000000000000000000000000000000000000003eacf7fffff7a6320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffffffffc40700000000000000000000000000000017c2fbffffffe019000000000000000000000070ffffffff740000000000000000009dffffffffee1600000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeffffffff170000000000000000000000000000000000000000000000097cebffffffffe56e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcfffffff4ffffb91200000000000000000000000000000000000000000000000000000000000000000070ffffffff74000000000000000082fffffffee1470000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbffffffff260000000000000000000000000000000000000000000055e1ffffddf9f0eaffffd645000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff9cdaffffe7782d0b061c5373080000000000000000000000000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003898d3f1fcf1d29d4f03000000001dd9feff780000000000000000c8ffffffff4000000000000000000000000000000000000000002cbeffffffb547ffff35c5ffffffb12200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff8746ffffffffffffffffffff59000088ffffffffffffffffff9800000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010aaffffffffffffffffffe05a00000072ffffff7800000000000000009cffffffff720000000000000000000000000000000000000026fcffffda4c0042ffff26015ce4fffff10e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff75008fffffffffffffffffff83000088ffffffffffffffffff9800000000000000000000000070ffffffff740000000000000000000000000000003819000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c6ffffffffffffffffffffffffac0c00a2ffffff7800000000000000005fffffffffb40000000000000000000000000000000000000000b1f27506000044ffff2800000b83f78700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff640003a9ffffffffffffffffaa00007bffffffffffffffffff9800000000000000000000000070ffffffff74000000000000000000000000000014ebf8790000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fffffffffffff3d5dff9ffffffffcb16cfffffff7800000000000000001ffefffffffc19000000000000000000000000000000000000001c170000000044ffff2800000000200c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffff4e00000284fcffffffffffffd0000018b4cccccccce7ffffff9800000000000000000000000070ffffffff740000000000000000000000000000a5fffff20000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f2ffffffffca35000000012d85e8ffffdcf8ffffff78000000000000000000b5ffffffff970000000000000000000000000000000000000000000000000044ffff2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcffffd91000000000268fd3f3f8e5c47c000000000000000088ffffff9800000000000000000000000070ffffffff74000000000000000000000000004affffff9b0000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043ffffffffde0d000000000000000f95feffffffffff7800000000000000000042fffffffffe4800000000000000000000000000000000000000000000000044ffff28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000000000de2ffffec130000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ffffffff71000000000000000000005bfaffffffff7800000000000000000000acfffffffff7540000000000000000003fc6b3090000000000000000000044ffff28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff7400000000000000000000000096ffffff63000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070ffffffff4500000000000000000000006dffffffff780000000000000000000012e3ffffffffffb44c07000000094bb6ffffff9f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff7400000000000000000000003dfeffffc401000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051ffffffff55000000000000000000000058ffffffff7800000000000000000000002ae2fffffffffffffae3d0dcfbffffffffffed1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000008d8fffffb2c00000000000000000000000000000070ffffffff740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012f6ffffffb1000000000000000000000058ffffffff780000000000000000000000001cccffffffffffffffffffffffffffffd4230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000070ffffffff740000000000000000000087ffffff8a0000000000000000000000000000000070ffffffff74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092ffffffff850200000000000000000058ffffffff78000000000000000000000000000260e4ffffffffffffffffffffe96e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000000000000000000000000030fbffffe10b0000000000000000000000000000000070ffffffff7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dcfffffffffd0580a0000000000000058ffffffff78000000000000000000000000000000054c93c7e9f8f7e2cc964c090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000004cdfffffe49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b7fffffffffff4bc835a3b1e130a59ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000000000000000000000002dffffffce01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cdcffffffffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000004ffffff59c06000000000000000000b5ffffff6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249a2edffffffffffffffffffffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000b5ffffffa50100000000000000001df2fffff0180000000000000000000000000000000000003eddffffaa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002306593b4d1e3f2f9feffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000023f8ffffff8a0000000000000000006affffffa5000000000000000000000000000000000034f4fffff31b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffff780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000082ffffffff6d000000000000000001c2ffffff4300000000000000000000000000000023e9ffffff7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058ffffffff760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000009dffffffffd53000000000000000026f7ffffd9070000000000000000000000000015dbffffffd3040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fffffffff660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000000004ffffffffff73c000000000000000079ffffff7e0000000000000000000000000bcafffffffe3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075ffffffff530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000000000000000000000b3ffffffffee290000000000000004cffffff7240000000000000000000004b5ffffffffa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8ffffffff240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000000000000000000000000017c2fbffffffe0190000000000000031fbffffb4000000000000000000009dffffffffee1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048741c0000000000000000000011f5ffffffe6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000000000000000089ffffef00000000000000000082fffffffee14700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059fffff67b070000000000000002a8ffffffff88000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000000000000000000000000000000000000000000000000000000000008d9e05100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e6ffffffffe378230000000033b8fffffffff71d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000001141000000000000000000000000000000000000000000000000000000001c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047efffffffffffffecd7d3edffffffffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000060f2f72700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ebbffffffffffffffffffffffffffff880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000d2ffffc3010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004dc6ffffffffffffffffffffe25a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000079ffffff6b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002877b0d8f1fbefd9a75b0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000006d7fffff21e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000041ffffffb700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000a4ffffff5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000017efffffec160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000006affffffa90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000002caffffff4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000032fcffffe50f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000000000b6ffffff51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000000004affffffd205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000009defffffc3500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000000000085ffffff8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000000028f9ffffdc090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000000befffffe41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000005cffffff9a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000010e8ffffe40f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff98000091ffffff4e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff980000d0ffffa8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800003fd5ec15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffff9800000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ab5cccccccce7ffffff9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007cffffffffffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffffffffff98000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088ffffffffffffffffff9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + offset: 0 + size: 0 + path: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: Lato-Regular + m_EditorClassIdentifier: + hashCode: 0 + material: {fileID: 7453642021753212536} + materialHashCode: 0 + m_Version: 1.1.0 + m_SourceFontFileGUID: 49342641ea2b7e6429da3245744bb92b + m_SourceFontFile_EditorRef: {fileID: 0} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FamilyName: Lato + m_StyleName: Regular + m_PointSize: 55 + m_Scale: 1 + m_LineHeight: 66 + m_AscentLine: 54.285 + m_CapLine: 39 + m_MeanLine: 28 + m_Baseline: 0 + m_DescentLine: -11.715 + m_SuperscriptOffset: 54.285 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -11.715 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -5.5 + m_UnderlineThickness: 3.3 + m_StrikethroughOffset: 11.2 + m_StrikethroughThickness: 3.3 + m_TabWidth: 11 + m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 11 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 4 + m_Metrics: + m_Width: 7 + m_Height: 39 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 77 + m_Y: 174 + m_Width: 7 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 5 + m_Metrics: + m_Width: 14 + m_Height: 14 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 188 + m_Y: 388 + m_Width: 14 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 6 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 1 + m_Y: 249 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 7 + m_Metrics: + m_Width: 28 + m_Height: 52 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 239 + m_Y: 230 + m_Width: 28 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 8 + m_Metrics: + m_Width: 41 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 1 + m_Y: 118 + m_Width: 41 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 9 + m_Metrics: + m_Width: 37 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 39 + m_GlyphRect: + m_X: 466 + m_Y: 1 + m_Width: 37 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 10 + m_Metrics: + m_Width: 5 + m_Height: 14 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 13 + m_GlyphRect: + m_X: 35 + m_Y: 208 + m_Width: 5 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 11 + m_Metrics: + m_Width: 12 + m_Height: 51 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 43 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 550 + m_Y: 118 + m_Width: 12 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 12 + m_Metrics: + m_Width: 11 + m_Height: 51 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 43 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 367 + m_Y: 109 + m_Width: 11 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 13 + m_Metrics: + m_Width: 18 + m_Height: 18 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 57 + m_Y: 402 + m_Width: 18 + m_Height: 18 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 14 + m_Metrics: + m_Width: 28 + m_Height: 27 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 32 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 625 + m_Y: 1 + m_Width: 28 + m_Height: 27 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 15 + m_Metrics: + m_Width: 8 + m_Height: 14 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 6 + m_HorizontalAdvance: 12 + m_GlyphRect: + m_X: 120 + m_Y: 298 + m_Width: 8 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 16 + m_Metrics: + m_Width: 15 + m_Height: 4 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 18 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 188 + m_Y: 376 + m_Width: 15 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 17 + m_Metrics: + m_Width: 8 + m_Height: 7 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 7 + m_HorizontalAdvance: 12 + m_GlyphRect: + m_X: 119 + m_Y: 314 + m_Width: 8 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 18 + m_Metrics: + m_Width: 22 + m_Height: 43 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 21 + m_GlyphRect: + m_X: 233 + m_Y: 331 + m_Width: 22 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 19 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 33 + m_Y: 265 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 20 + m_Metrics: + m_Width: 25 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 465 + m_Y: 164 + m_Width: 25 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 21 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 465 + m_Y: 42 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 22 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 420 + m_Y: 72 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 23 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 1 + m_Y: 290 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 24 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 655 + m_Y: 29 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 25 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 380 + m_Y: 99 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 26 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 625 + m_Y: 30 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 27 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 419 + m_Y: 113 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 28 + m_Metrics: + m_Width: 26 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 592 + m_Y: 114 + m_Width: 26 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 29 + m_Metrics: + m_Width: 8 + m_Height: 27 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 27 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 120 + m_Y: 252 + m_Width: 8 + m_Height: 27 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 30 + m_Metrics: + m_Width: 8 + m_Height: 35 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 27 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 121 + m_Y: 205 + m_Width: 8 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 31 + m_Metrics: + m_Width: 22 + m_Height: 25 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 288 + m_Y: 334 + m_Width: 22 + m_Height: 25 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 32 + m_Metrics: + m_Width: 24 + m_Height: 13 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 25 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 292 + m_Y: 289 + m_Width: 24 + m_Height: 13 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 33 + m_Metrics: + m_Width: 22 + m_Height: 25 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 257 + m_Y: 352 + m_Width: 22 + m_Height: 25 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 34 + m_Metrics: + m_Width: 21 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 269 + m_Y: 241 + m_Width: 21 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 35 + m_Metrics: + m_Width: 42 + m_Height: 44 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 37 + m_HorizontalAdvance: 45 + m_GlyphRect: + m_X: 1 + m_Y: 42 + m_Width: 42 + m_Height: 44 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 36 + m_Metrics: + m_Width: 38 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 215 + m_Y: 52 + m_Width: 38 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 29 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 36 + m_GlyphRect: + m_X: 1 + m_Y: 372 + m_Width: 29 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 38 + m_Metrics: + m_Width: 34 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 38 + m_GlyphRect: + m_X: 168 + m_Y: 183 + m_Width: 34 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 39 + m_Metrics: + m_Width: 35 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 41 + m_GlyphRect: + m_X: 212 + m_Y: 134 + m_Width: 35 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 40 + m_Metrics: + m_Width: 26 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 494 + m_Y: 91 + m_Width: 26 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 41 + m_Metrics: + m_Width: 26 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 465 + m_Y: 123 + m_Width: 26 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 35 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 172 + m_Y: 142 + m_Width: 35 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 43 + m_Metrics: + m_Width: 33 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 42 + m_GlyphRect: + m_X: 131 + m_Y: 186 + m_Width: 33 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 44 + m_Metrics: + m_Width: 7 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 77 + m_Y: 215 + m_Width: 7 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 19 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 359 + m_Y: 212 + m_Width: 19 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 46 + m_Metrics: + m_Width: 32 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 130 + m_Y: 278 + m_Width: 32 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 47 + m_Metrics: + m_Width: 24 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 435 + m_Y: 217 + m_Width: 24 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 48 + m_Metrics: + m_Width: 42 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 51 + m_GlyphRect: + m_X: 45 + m_Y: 42 + m_Width: 42 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 49 + m_Metrics: + m_Width: 33 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 42 + m_GlyphRect: + m_X: 166 + m_Y: 224 + m_Width: 33 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 50 + m_Metrics: + m_Width: 40 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 302 + m_Y: 1 + m_Width: 40 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 51 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 34 + m_GlyphRect: + m_X: 565 + m_Y: 31 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 52 + m_Metrics: + m_Width: 42 + m_Height: 47 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 174 + m_Y: 1 + m_Width: 42 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 53 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 35 + m_GlyphRect: + m_X: 33 + m_Y: 306 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 54 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 535 + m_Y: 34 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 55 + m_Metrics: + m_Width: 32 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 1 + m_Y: 208 + m_Width: 32 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 56 + m_Metrics: + m_Width: 32 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 35 + m_Y: 224 + m_Width: 32 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 57 + m_Metrics: + m_Width: 38 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 215 + m_Y: 93 + m_Width: 38 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 58 + m_Metrics: + m_Width: 56 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 56 + m_GlyphRect: + m_X: 64 + m_Y: 1 + m_Width: 56 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 59 + m_Metrics: + m_Width: 35 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 35 + m_GlyphRect: + m_X: 131 + m_Y: 145 + m_Width: 35 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 60 + m_Metrics: + m_Width: 35 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 35 + m_GlyphRect: + m_X: 249 + m_Y: 148 + m_Width: 35 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 61 + m_Metrics: + m_Width: 31 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 34 + m_GlyphRect: + m_X: 86 + m_Y: 303 + m_Width: 31 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 62 + m_Metrics: + m_Width: 12 + m_Height: 50 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 344 + m_Y: 252 + m_Width: 12 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 63 + m_Metrics: + m_Width: 22 + m_Height: 43 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 21 + m_GlyphRect: + m_X: 208 + m_Y: 351 + m_Width: 22 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 64 + m_Metrics: + m_Width: 11 + m_Height: 50 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 148 + m_Y: 413 + m_Width: 11 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 65 + m_Metrics: + m_Width: 24 + m_Height: 18 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 292 + m_Y: 269 + m_Width: 24 + m_Height: 18 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 66 + m_Metrics: + m_Width: 22 + m_Height: 4 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: -4 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 154 + m_Y: 357 + m_Width: 22 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 67 + m_Metrics: + m_Width: 11 + m_Height: 8 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 185 + m_Y: 404 + m_Width: 11 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 68 + m_Metrics: + m_Width: 23 + m_Height: 28 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 1 + m_Y: 413 + m_Width: 23 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 69 + m_Metrics: + m_Width: 25 + m_Height: 40 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 493 + m_Y: 132 + m_Width: 25 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 70 + m_Metrics: + m_Width: 23 + m_Height: 28 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 26 + m_GlyphRect: + m_X: 292 + m_Y: 304 + m_Width: 23 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 71 + m_Metrics: + m_Width: 26 + m_Height: 40 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 592 + m_Y: 72 + m_Width: 26 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 72 + m_Metrics: + m_Width: 25 + m_Height: 28 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 465 + m_Y: 205 + m_Width: 25 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 73 + m_Metrics: + m_Width: 19 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 358 + m_Y: 253 + m_Width: 19 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 74 + m_Metrics: + m_Width: 27 + m_Height: 38 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 465 + m_Y: 83 + m_Width: 27 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 75 + m_Metrics: + m_Width: 24 + m_Height: 40 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 519 + m_Y: 186 + m_Width: 24 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 76 + m_Metrics: + m_Width: 8 + m_Height: 40 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 121 + m_Y: 163 + m_Width: 8 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 77 + m_Metrics: + m_Width: 13 + m_Height: 50 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 450 + m_Y: 72 + m_Width: 13 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 78 + m_Metrics: + m_Width: 24 + m_Height: 40 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 492 + m_Y: 213 + m_Width: 24 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 79 + m_Metrics: + m_Width: 6 + m_Height: 40 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 292 + m_Y: 97 + m_Width: 6 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 80 + m_Metrics: + m_Width: 38 + m_Height: 28 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 45 + m_GlyphRect: + m_X: 426 + m_Y: 1 + m_Width: 38 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 81 + m_Metrics: + m_Width: 24 + m_Height: 28 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 318 + m_Y: 230 + m_Width: 24 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 82 + m_Metrics: + m_Width: 28 + m_Height: 28 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 565 + m_Y: 1 + m_Width: 28 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 83 + m_Metrics: + m_Width: 25 + m_Height: 37 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 492 + m_Y: 174 + m_Width: 25 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 84 + m_Metrics: + m_Width: 26 + m_Height: 37 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 410 + m_Y: 154 + m_Width: 26 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 85 + m_Metrics: + m_Width: 17 + m_Height: 28 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 129 + m_Y: 390 + m_Width: 17 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 86 + m_Metrics: + m_Width: 21 + m_Height: 28 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 129 + m_Y: 360 + m_Width: 21 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 87 + m_Metrics: + m_Width: 19 + m_Height: 37 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 37 + m_HorizontalAdvance: 21 + m_GlyphRect: + m_X: 358 + m_Y: 294 + m_Width: 19 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 88 + m_Metrics: + m_Width: 24 + m_Height: 28 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 318 + m_Y: 260 + m_Width: 24 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 89 + m_Metrics: + m_Width: 28 + m_Height: 28 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 595 + m_Y: 1 + m_Width: 28 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 90 + m_Metrics: + m_Width: 42 + m_Height: 28 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 42 + m_GlyphRect: + m_X: 1 + m_Y: 88 + m_Width: 42 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 91 + m_Metrics: + m_Width: 27 + m_Height: 28 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 714 + m_Y: 1 + m_Width: 27 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 92 + m_Metrics: + m_Width: 28 + m_Height: 37 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 329 + m_Y: 191 + m_Width: 28 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 93 + m_Metrics: + m_Width: 23 + m_Height: 28 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 25 + m_GlyphRect: + m_X: 263 + m_Y: 322 + m_Width: 23 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 94 + m_Metrics: + m_Width: 14 + m_Height: 50 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 276 + m_Y: 189 + m_Width: 14 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 95 + m_Metrics: + m_Width: 5 + m_Height: 51 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 292 + m_Y: 139 + m_Width: 5 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 96 + m_Metrics: + m_Width: 14 + m_Height: 50 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 449 + m_Y: 124 + m_Width: 14 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 97 + m_Metrics: + m_Width: 26 + m_Height: 11 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 22 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 564 + m_Y: 122 + m_Width: 26 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 98 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 11 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 99 + m_Metrics: + m_Width: 7 + m_Height: 37 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 199 + m_Y: 277 + m_Width: 7 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 100 + m_Metrics: + m_Width: 26 + m_Height: 41 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 35 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 533 + m_Y: 75 + m_Width: 26 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 101 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 1 + m_Y: 331 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 102 + m_Metrics: + m_Width: 26 + m_Height: 26 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 380 + m_Y: 180 + m_Width: 26 + m_Height: 26 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 103 + m_Metrics: + m_Width: 30 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 33 + m_Y: 347 + m_Width: 30 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 104 + m_Metrics: + m_Width: 5 + m_Height: 51 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 201 + m_Y: 224 + m_Width: 5 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 105 + m_Metrics: + m_Width: 22 + m_Height: 43 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 317 + m_Y: 304 + m_Width: 22 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 106 + m_Metrics: + m_Width: 17 + m_Height: 6 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 106 + m_Y: 396 + m_Width: 17 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 107 + m_Metrics: + m_Width: 42 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 89 + m_Y: 42 + m_Width: 42 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 108 + m_Metrics: + m_Width: 15 + m_Height: 17 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 171 + m_Y: 376 + m_Width: 15 + m_Height: 17 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 109 + m_Metrics: + m_Width: 19 + m_Height: 23 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 25 + m_GlyphRect: + m_X: 65 + m_Y: 357 + m_Width: 19 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 110 + m_Metrics: + m_Width: 24 + m_Height: 12 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 20 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 318 + m_Y: 290 + m_Width: 24 + m_Height: 12 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 111 + m_Metrics: + m_Width: 15 + m_Height: 4 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 18 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 188 + m_Y: 382 + m_Width: 15 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 112 + m_Metrics: + m_Width: 42 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 45 + m_Y: 83 + m_Width: 42 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 113 + m_Metrics: + m_Width: 17 + m_Height: 3 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 37 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 106 + m_Y: 404 + m_Width: 17 + m_Height: 3 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 114 + m_Metrics: + m_Width: 19 + m_Height: 18 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 65 + m_Y: 382 + m_Width: 19 + m_Height: 18 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 115 + m_Metrics: + m_Width: 28 + m_Height: 31 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 33 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 535 + m_Y: 1 + m_Width: 28 + m_Height: 31 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 116 + m_Metrics: + m_Width: 15 + m_Height: 20 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 44 + m_HorizontalAdvance: 18 + m_GlyphRect: + m_X: 341 + m_Y: 304 + m_Width: 15 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 117 + m_Metrics: + m_Width: 15 + m_Height: 20 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 18 + m_GlyphRect: + m_X: 341 + m_Y: 326 + m_Width: 15 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 118 + m_Metrics: + m_Width: 12 + m_Height: 8 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 148 + m_Y: 403 + m_Width: 12 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 119 + m_Metrics: + m_Width: 24 + m_Height: 37 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 292 + m_Y: 230 + m_Width: 24 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 120 + m_Metrics: + m_Width: 35 + m_Height: 45 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 300 + m_Y: 101 + m_Width: 35 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 121 + m_Metrics: + m_Width: 9 + m_Height: 8 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 20 + m_HorizontalAdvance: 15 + m_GlyphRect: + m_X: 120 + m_Y: 242 + m_Width: 9 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 122 + m_Metrics: + m_Width: 11 + m_Height: 10 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 1 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 217 + m_Y: 396 + m_Width: 11 + m_Height: 10 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 123 + m_Metrics: + m_Width: 13 + m_Height: 20 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 18 + m_GlyphRect: + m_X: 344 + m_Y: 230 + m_Width: 13 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 124 + m_Metrics: + m_Width: 18 + m_Height: 17 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 21 + m_GlyphRect: + m_X: 178 + m_Y: 357 + m_Width: 18 + m_Height: 17 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 125 + m_Metrics: + m_Width: 18 + m_Height: 23 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 25 + m_GlyphRect: + m_X: 86 + m_Y: 384 + m_Width: 18 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 126 + m_Metrics: + m_Width: 37 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 39 + m_GlyphRect: + m_X: 426 + m_Y: 31 + m_Width: 37 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 127 + m_Metrics: + m_Width: 36 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 39 + m_GlyphRect: + m_X: 382 + m_Y: 58 + m_Width: 36 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 128 + m_Metrics: + m_Width: 38 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 39 + m_GlyphRect: + m_X: 172 + m_Y: 101 + m_Width: 38 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 129 + m_Metrics: + m_Width: 21 + m_Height: 38 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 269 + m_Y: 282 + m_Width: 21 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 130 + m_Metrics: + m_Width: 38 + m_Height: 49 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 132 + m_Y: 94 + m_Width: 38 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 131 + m_Metrics: + m_Width: 38 + m_Height: 49 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 386 + m_Y: 1 + m_Width: 38 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 132 + m_Metrics: + m_Width: 38 + m_Height: 48 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 302 + m_Y: 42 + m_Width: 38 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 133 + m_Metrics: + m_Width: 38 + m_Height: 47 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 47 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 342 + m_Y: 42 + m_Width: 38 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 134 + m_Metrics: + m_Width: 38 + m_Height: 48 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 260 + m_Y: 47 + m_Width: 38 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 135 + m_Metrics: + m_Width: 38 + m_Height: 50 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 50 + m_HorizontalAdvance: 37 + m_GlyphRect: + m_X: 133 + m_Y: 42 + m_Width: 38 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 136 + m_Metrics: + m_Width: 50 + m_Height: 39 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 51 + m_GlyphRect: + m_X: 122 + m_Y: 1 + m_Width: 50 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 137 + m_Metrics: + m_Width: 34 + m_Height: 48 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 38 + m_GlyphRect: + m_X: 209 + m_Y: 175 + m_Width: 34 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 138 + m_Metrics: + m_Width: 26 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 684 + m_Y: 43 + m_Width: 26 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 139 + m_Metrics: + m_Width: 26 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 654 + m_Y: 70 + m_Width: 26 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 140 + m_Metrics: + m_Width: 26 + m_Height: 48 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 623 + m_Y: 71 + m_Width: 26 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 141 + m_Metrics: + m_Width: 26 + m_Height: 48 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 564 + m_Y: 72 + m_Width: 26 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 142 + m_Metrics: + m_Width: 15 + m_Height: 49 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 69 + m_Y: 256 + m_Width: 15 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 143 + m_Metrics: + m_Width: 15 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 547 + m_Y: 171 + m_Width: 15 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 144 + m_Metrics: + m_Width: 19 + m_Height: 48 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 65 + m_Y: 307 + m_Width: 19 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 145 + m_Metrics: + m_Width: 19 + m_Height: 48 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 359 + m_Y: 162 + m_Width: 19 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 146 + m_Metrics: + m_Width: 40 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 344 + m_Y: 1 + m_Width: 40 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 147 + m_Metrics: + m_Width: 33 + m_Height: 47 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 47 + m_HorizontalAdvance: 42 + m_GlyphRect: + m_X: 86 + m_Y: 163 + m_Width: 33 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 148 + m_Metrics: + m_Width: 40 + m_Height: 49 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 218 + m_Y: 1 + m_Width: 40 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 149 + m_Metrics: + m_Width: 40 + m_Height: 49 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 173 + m_Y: 50 + m_Width: 40 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 150 + m_Metrics: + m_Width: 40 + m_Height: 48 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 89 + m_Y: 113 + m_Width: 40 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 151 + m_Metrics: + m_Width: 40 + m_Height: 47 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 47 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 1 + m_Y: 159 + m_Width: 40 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 152 + m_Metrics: + m_Width: 40 + m_Height: 48 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 44 + m_Y: 124 + m_Width: 40 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 153 + m_Metrics: + m_Width: 26 + m_Height: 26 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 522 + m_Y: 118 + m_Width: 26 + m_Height: 26 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 154 + m_Metrics: + m_Width: 40 + m_Height: 44 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 41 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 260 + m_Y: 1 + m_Width: 40 + m_Height: 44 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 155 + m_Metrics: + m_Width: 32 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 131 + m_Y: 227 + m_Width: 32 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 156 + m_Metrics: + m_Width: 32 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 165 + m_Y: 265 + m_Width: 32 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 157 + m_Metrics: + m_Width: 32 + m_Height: 48 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 43 + m_Y: 174 + m_Width: 32 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 158 + m_Metrics: + m_Width: 32 + m_Height: 48 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 86 + m_Y: 212 + m_Width: 32 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 159 + m_Metrics: + m_Width: 35 + m_Height: 49 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 49 + m_HorizontalAdvance: 35 + m_GlyphRect: + m_X: 255 + m_Y: 97 + m_Width: 35 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 160 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 34 + m_GlyphRect: + m_X: 504 + m_Y: 50 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 161 + m_Metrics: + m_Width: 27 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 34 + m_GlyphRect: + m_X: 594 + m_Y: 31 + m_Width: 27 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 162 + m_Metrics: + m_Width: 23 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 238 + m_Y: 284 + m_Width: 23 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 163 + m_Metrics: + m_Width: 23 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 208 + m_Y: 310 + m_Width: 23 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 164 + m_Metrics: + m_Width: 23 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 164 + m_Y: 316 + m_Width: 23 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 165 + m_Metrics: + m_Width: 23 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 129 + m_Y: 319 + m_Width: 23 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 166 + m_Metrics: + m_Width: 23 + m_Height: 38 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 86 + m_Y: 344 + m_Width: 23 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 167 + m_Metrics: + m_Width: 23 + m_Height: 41 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 41 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 379 + m_Y: 290 + m_Width: 23 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 168 + m_Metrics: + m_Width: 41 + m_Height: 28 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 45 + m_GlyphRect: + m_X: 89 + m_Y: 83 + m_Width: 41 + m_Height: 28 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 169 + m_Metrics: + m_Width: 23 + m_Height: 37 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 26 + m_GlyphRect: + m_X: 32 + m_Y: 388 + m_Width: 23 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 170 + m_Metrics: + m_Width: 25 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 438 + m_Y: 176 + m_Width: 25 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 171 + m_Metrics: + m_Width: 25 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 408 + m_Y: 193 + m_Width: 25 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 172 + m_Metrics: + m_Width: 25 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 380 + m_Y: 208 + m_Width: 25 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 173 + m_Metrics: + m_Width: 25 + m_Height: 38 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 520 + m_Y: 146 + m_Width: 25 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 174 + m_Metrics: + m_Width: 11 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 204 + m_Y: 396 + m_Width: 11 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 175 + m_Metrics: + m_Width: 12 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 171 + m_Y: 395 + m_Width: 12 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 176 + m_Metrics: + m_Width: 17 + m_Height: 39 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 189 + m_Y: 316 + m_Width: 17 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 177 + m_Metrics: + m_Width: 17 + m_Height: 38 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 152 + m_Y: 363 + m_Width: 17 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 178 + m_Metrics: + m_Width: 27 + m_Height: 40 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 685 + m_Y: 1 + m_Width: 27 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 179 + m_Metrics: + m_Width: 24 + m_Height: 39 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 407 + m_Y: 234 + m_Width: 24 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 180 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 337 + m_Y: 109 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 181 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 299 + m_Y: 148 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 182 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 329 + m_Y: 150 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 183 + m_Metrics: + m_Width: 28 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 299 + m_Y: 189 + m_Width: 28 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 184 + m_Metrics: + m_Width: 28 + m_Height: 38 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 380 + m_Y: 140 + m_Width: 28 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 185 + m_Metrics: + m_Width: 28 + m_Height: 26 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 655 + m_Y: 1 + m_Width: 28 + m_Height: 26 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 186 + m_Metrics: + m_Width: 29 + m_Height: 33 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 31 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 208 + m_Y: 225 + m_Width: 29 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 187 + m_Metrics: + m_Width: 24 + m_Height: 39 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 380 + m_Y: 249 + m_Width: 24 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 188 + m_Metrics: + m_Width: 24 + m_Height: 39 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 461 + m_Y: 235 + m_Width: 24 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 189 + m_Metrics: + m_Width: 24 + m_Height: 39 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 433 + m_Y: 258 + m_Width: 24 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 190 + m_Metrics: + m_Width: 24 + m_Height: 38 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 406 + m_Y: 275 + m_Width: 24 + m_Height: 38 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 191 + m_Metrics: + m_Width: 28 + m_Height: 48 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 208 + m_Y: 260 + m_Width: 28 + m_Height: 48 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 192 + m_Metrics: + m_Width: 25 + m_Height: 49 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 564 + m_Y: 135 + m_Width: 25 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 193 + m_Metrics: + m_Width: 28 + m_Height: 47 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 38 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 505 + m_Y: 1 + m_Width: 28 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 229 + m_Metrics: + m_Width: 23 + m_Height: 4 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 18 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 233 + m_Y: 325 + m_Width: 23 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 230 + m_Metrics: + m_Width: 37 + m_Height: 4 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 18 + m_HorizontalAdvance: 45 + m_GlyphRect: + m_X: 382 + m_Y: 52 + m_Width: 37 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 231 + m_Metrics: + m_Width: 8 + m_Height: 15 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 12 + m_GlyphRect: + m_X: 120 + m_Y: 281 + m_Width: 8 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 232 + m_Metrics: + m_Width: 7 + m_Height: 16 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 12 + m_GlyphRect: + m_X: 495 + m_Y: 42 + m_Width: 7 + m_Height: 16 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 233 + m_Metrics: + m_Width: 7 + m_Height: 15 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 7 + m_HorizontalAdvance: 12 + m_GlyphRect: + m_X: 410 + m_Y: 99 + m_Width: 7 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 234 + m_Metrics: + m_Width: 16 + m_Height: 15 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 20 + m_GlyphRect: + m_X: 111 + m_Y: 362 + m_Width: 16 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 235 + m_Metrics: + m_Width: 16 + m_Height: 16 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 20 + m_GlyphRect: + m_X: 111 + m_Y: 344 + m_Width: 16 + m_Height: 16 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 236 + m_Metrics: + m_Width: 16 + m_Height: 15 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 7 + m_HorizontalAdvance: 20 + m_GlyphRect: + m_X: 111 + m_Y: 379 + m_Width: 16 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 237 + m_Metrics: + m_Width: 26 + m_Height: 50 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 743 + m_Y: 1 + m_Width: 26 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 238 + m_Metrics: + m_Width: 26 + m_Height: 50 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 714 + m_Y: 31 + m_Width: 26 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 239 + m_Metrics: + m_Width: 22 + m_Height: 20 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 232 + m_Y: 376 + m_Width: 22 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 240 + m_Metrics: + m_Width: 36 + m_Height: 7 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 7 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 300 + m_Y: 92 + m_Width: 36 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 241 + m_Metrics: + m_Width: 61 + m_Height: 39 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 63 + m_GlyphRect: + m_X: 1 + m_Y: 1 + m_Width: 61 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 242 + m_Metrics: + m_Width: 10 + m_Height: 23 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 185 + m_Y: 414 + m_Width: 10 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 243 + m_Metrics: + m_Width: 10 + m_Height: 23 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 161 + m_Y: 436 + m_Width: 10 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 244 + m_Metrics: + m_Width: 29 + m_Height: 39 + m_HorizontalBearingX: -6 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 245 + m_Y: 189 + m_Width: 29 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 245 + m_Metrics: + m_Width: 32 + m_Height: 39 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 86 + m_Y: 262 + m_Width: 32 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 246 + m_Metrics: + m_Width: 36 + m_Height: 16 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 40 + m_GlyphRect: + m_X: 342 + m_Y: 91 + m_Width: 36 + m_Height: 16 + m_Scale: 1 + m_AtlasIndex: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 7 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 8 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 11 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 12 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 18 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 19 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 27 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 53 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 54 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 55 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 56 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 58 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 60 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 62 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 63 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 65 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 67 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 71 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 76 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 77 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 79 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 80 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 81 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 82 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 83 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 86 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 87 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 88 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 89 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 90 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 91 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 92 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 94 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 95 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 97 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 98 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 161 + m_GlyphIndex: 99 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 162 + m_GlyphIndex: 100 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 163 + m_GlyphIndex: 101 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 164 + m_GlyphIndex: 102 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 165 + m_GlyphIndex: 103 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 166 + m_GlyphIndex: 104 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 167 + m_GlyphIndex: 105 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 168 + m_GlyphIndex: 106 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 169 + m_GlyphIndex: 107 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 170 + m_GlyphIndex: 108 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 171 + m_GlyphIndex: 109 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 172 + m_GlyphIndex: 110 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 173 + m_GlyphIndex: 111 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 174 + m_GlyphIndex: 112 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 175 + m_GlyphIndex: 113 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 176 + m_GlyphIndex: 114 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 177 + m_GlyphIndex: 115 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 178 + m_GlyphIndex: 116 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 179 + m_GlyphIndex: 117 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 180 + m_GlyphIndex: 118 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 181 + m_GlyphIndex: 119 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 182 + m_GlyphIndex: 120 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 183 + m_GlyphIndex: 121 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 184 + m_GlyphIndex: 122 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 185 + m_GlyphIndex: 123 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 186 + m_GlyphIndex: 124 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 187 + m_GlyphIndex: 125 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 188 + m_GlyphIndex: 126 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 189 + m_GlyphIndex: 127 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 190 + m_GlyphIndex: 128 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 191 + m_GlyphIndex: 129 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 192 + m_GlyphIndex: 130 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 193 + m_GlyphIndex: 131 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 194 + m_GlyphIndex: 132 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 195 + m_GlyphIndex: 133 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 196 + m_GlyphIndex: 134 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 197 + m_GlyphIndex: 135 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 198 + m_GlyphIndex: 136 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 199 + m_GlyphIndex: 137 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 200 + m_GlyphIndex: 138 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 201 + m_GlyphIndex: 139 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 202 + m_GlyphIndex: 140 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 203 + m_GlyphIndex: 141 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 204 + m_GlyphIndex: 142 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 205 + m_GlyphIndex: 143 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 206 + m_GlyphIndex: 144 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 207 + m_GlyphIndex: 145 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 208 + m_GlyphIndex: 146 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 209 + m_GlyphIndex: 147 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 210 + m_GlyphIndex: 148 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 211 + m_GlyphIndex: 149 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 212 + m_GlyphIndex: 150 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 213 + m_GlyphIndex: 151 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 214 + m_GlyphIndex: 152 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 215 + m_GlyphIndex: 153 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 216 + m_GlyphIndex: 154 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 217 + m_GlyphIndex: 155 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 218 + m_GlyphIndex: 156 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 219 + m_GlyphIndex: 157 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 220 + m_GlyphIndex: 158 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 221 + m_GlyphIndex: 159 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 222 + m_GlyphIndex: 160 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 223 + m_GlyphIndex: 161 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 224 + m_GlyphIndex: 162 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 225 + m_GlyphIndex: 163 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 226 + m_GlyphIndex: 164 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 227 + m_GlyphIndex: 165 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 228 + m_GlyphIndex: 166 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 229 + m_GlyphIndex: 167 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 230 + m_GlyphIndex: 168 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 231 + m_GlyphIndex: 169 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 232 + m_GlyphIndex: 170 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 233 + m_GlyphIndex: 171 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 234 + m_GlyphIndex: 172 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 235 + m_GlyphIndex: 173 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 236 + m_GlyphIndex: 174 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 237 + m_GlyphIndex: 175 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 238 + m_GlyphIndex: 176 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 239 + m_GlyphIndex: 177 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 240 + m_GlyphIndex: 178 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 241 + m_GlyphIndex: 179 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 242 + m_GlyphIndex: 180 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 243 + m_GlyphIndex: 181 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 244 + m_GlyphIndex: 182 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 245 + m_GlyphIndex: 183 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 246 + m_GlyphIndex: 184 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 247 + m_GlyphIndex: 185 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 248 + m_GlyphIndex: 186 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 249 + m_GlyphIndex: 187 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 250 + m_GlyphIndex: 188 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 251 + m_GlyphIndex: 189 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 252 + m_GlyphIndex: 190 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 253 + m_GlyphIndex: 191 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 254 + m_GlyphIndex: 192 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 255 + m_GlyphIndex: 193 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8211 + m_GlyphIndex: 229 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8212 + m_GlyphIndex: 230 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8216 + m_GlyphIndex: 231 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8217 + m_GlyphIndex: 232 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8218 + m_GlyphIndex: 233 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8220 + m_GlyphIndex: 234 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8221 + m_GlyphIndex: 235 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8222 + m_GlyphIndex: 236 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8224 + m_GlyphIndex: 237 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8225 + m_GlyphIndex: 238 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8226 + m_GlyphIndex: 239 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 240 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8240 + m_GlyphIndex: 241 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8249 + m_GlyphIndex: 242 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8250 + m_GlyphIndex: 243 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8260 + m_GlyphIndex: 244 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8364 + m_GlyphIndex: 245 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8482 + m_GlyphIndex: 246 + m_Scale: 1 + m_AtlasTextures: + - {fileID: -2340667833886341526} + m_AtlasTextureIndex: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 63 + m_Height: 41 + - m_X: 63 + m_Y: 0 + m_Width: 58 + m_Height: 41 + - m_X: 121 + m_Y: 0 + m_Width: 52 + m_Height: 41 + - m_X: 173 + m_Y: 0 + m_Width: 44 + m_Height: 49 + - m_X: 0 + m_Y: 41 + m_Width: 44 + m_Height: 46 + - m_X: 44 + m_Y: 41 + m_Width: 44 + m_Height: 41 + - m_X: 88 + m_Y: 41 + m_Width: 44 + m_Height: 41 + - m_X: 132 + m_Y: 41 + m_Width: 40 + m_Height: 52 + - m_X: 44 + m_Y: 82 + m_Width: 44 + m_Height: 41 + - m_X: 0 + m_Y: 87 + m_Width: 44 + m_Height: 30 + - m_X: 0 + m_Y: 117 + m_Width: 43 + m_Height: 41 + - m_X: 88 + m_Y: 82 + m_Width: 43 + m_Height: 30 + - m_X: 217 + m_Y: 0 + m_Width: 42 + m_Height: 51 + - m_X: 172 + m_Y: 49 + m_Width: 42 + m_Height: 51 + - m_X: 131 + m_Y: 93 + m_Width: 40 + m_Height: 51 + - m_X: 88 + m_Y: 112 + m_Width: 42 + m_Height: 50 + - m_X: 43 + m_Y: 123 + m_Width: 42 + m_Height: 50 + - m_X: 0 + m_Y: 158 + m_Width: 42 + m_Height: 49 + - m_X: 259 + m_Y: 0 + m_Width: 42 + m_Height: 46 + - m_X: 301 + m_Y: 0 + m_Width: 42 + m_Height: 41 + - m_X: 343 + m_Y: 0 + m_Width: 42 + m_Height: 41 + - m_X: 385 + m_Y: 0 + m_Width: 40 + m_Height: 51 + - m_X: 301 + m_Y: 41 + m_Width: 40 + m_Height: 50 + - m_X: 259 + m_Y: 46 + m_Width: 40 + m_Height: 50 + - m_X: 341 + m_Y: 41 + m_Width: 40 + m_Height: 49 + - m_X: 214 + m_Y: 51 + m_Width: 40 + m_Height: 41 + - m_X: 214 + m_Y: 92 + m_Width: 40 + m_Height: 41 + - m_X: 171 + m_Y: 100 + m_Width: 40 + m_Height: 41 + - m_X: 425 + m_Y: 0 + m_Width: 40 + m_Height: 30 + - m_X: 465 + m_Y: 0 + m_Width: 39 + m_Height: 41 + - m_X: 425 + m_Y: 30 + m_Width: 39 + m_Height: 41 + - m_X: 381 + m_Y: 51 + m_Width: 39 + m_Height: 6 + - m_X: 381 + m_Y: 57 + m_Width: 38 + m_Height: 41 + - m_X: 341 + m_Y: 90 + m_Width: 38 + m_Height: 18 + - m_X: 299 + m_Y: 91 + m_Width: 38 + m_Height: 9 + - m_X: 254 + m_Y: 96 + m_Width: 37 + m_Height: 51 + - m_X: 291 + m_Y: 96 + m_Width: 8 + m_Height: 42 + - m_X: 299 + m_Y: 100 + m_Width: 37 + m_Height: 47 + - m_X: 291 + m_Y: 138 + m_Width: 7 + m_Height: 53 + - m_X: 211 + m_Y: 133 + m_Width: 37 + m_Height: 41 + - m_X: 171 + m_Y: 141 + m_Width: 37 + m_Height: 41 + - m_X: 130 + m_Y: 144 + m_Width: 37 + m_Height: 41 + - m_X: 248 + m_Y: 147 + m_Width: 37 + m_Height: 41 + - m_X: 208 + m_Y: 174 + m_Width: 36 + m_Height: 50 + - m_X: 167 + m_Y: 182 + m_Width: 36 + m_Height: 41 + - m_X: 85 + m_Y: 162 + m_Width: 35 + m_Height: 49 + - m_X: 120 + m_Y: 162 + m_Width: 10 + m_Height: 42 + - m_X: 130 + m_Y: 185 + m_Width: 35 + m_Height: 41 + - m_X: 120 + m_Y: 204 + m_Width: 10 + m_Height: 37 + - m_X: 165 + m_Y: 223 + m_Width: 35 + m_Height: 41 + - m_X: 130 + m_Y: 226 + m_Width: 34 + m_Height: 51 + - m_X: 200 + m_Y: 223 + m_Width: 7 + m_Height: 53 + - m_X: 164 + m_Y: 264 + m_Width: 34 + m_Height: 51 + - m_X: 42 + m_Y: 173 + m_Width: 34 + m_Height: 50 + - m_X: 76 + m_Y: 173 + m_Width: 9 + m_Height: 41 + - m_X: 85 + m_Y: 211 + m_Width: 34 + m_Height: 50 + - m_X: 76 + m_Y: 214 + m_Width: 9 + m_Height: 41 + - m_X: 119 + m_Y: 241 + m_Width: 11 + m_Height: 10 + - m_X: 119 + m_Y: 251 + m_Width: 10 + m_Height: 29 + - m_X: 129 + m_Y: 277 + m_Width: 34 + m_Height: 41 + - m_X: 0 + m_Y: 207 + m_Width: 34 + m_Height: 41 + - m_X: 34 + m_Y: 207 + m_Width: 7 + m_Height: 16 + - m_X: 34 + m_Y: 223 + m_Width: 34 + m_Height: 41 + - m_X: 68 + m_Y: 255 + m_Width: 17 + m_Height: 51 + - m_X: 85 + m_Y: 261 + m_Width: 34 + m_Height: 41 + - m_X: 119 + m_Y: 280 + m_Width: 10 + m_Height: 17 + - m_X: 119 + m_Y: 297 + m_Width: 10 + m_Height: 16 + - m_X: 85 + m_Y: 302 + m_Width: 33 + m_Height: 41 + - m_X: 118 + m_Y: 313 + m_Width: 10 + m_Height: 9 + - m_X: 0 + m_Y: 248 + m_Width: 32 + m_Height: 41 + - m_X: 32 + m_Y: 264 + m_Width: 32 + m_Height: 41 + - m_X: 0 + m_Y: 289 + m_Width: 32 + m_Height: 41 + - m_X: 32 + m_Y: 305 + m_Width: 32 + m_Height: 41 + - m_X: 0 + m_Y: 330 + m_Width: 32 + m_Height: 41 + - m_X: 64 + m_Y: 306 + m_Width: 21 + m_Height: 50 + - m_X: 32 + m_Y: 346 + m_Width: 32 + m_Height: 41 + - m_X: 0 + m_Y: 371 + m_Width: 31 + m_Height: 41 + - m_X: 244 + m_Y: 188 + m_Width: 31 + m_Height: 41 + - m_X: 275 + m_Y: 188 + m_Width: 16 + m_Height: 52 + - m_X: 207 + m_Y: 224 + m_Width: 31 + m_Height: 35 + - m_X: 238 + m_Y: 229 + m_Width: 30 + m_Height: 54 + - m_X: 207 + m_Y: 259 + m_Width: 30 + m_Height: 50 + - m_X: 198 + m_Y: 276 + m_Width: 9 + m_Height: 39 + - m_X: 504 + m_Y: 0 + m_Width: 30 + m_Height: 49 + - m_X: 464 + m_Y: 41 + m_Width: 30 + m_Height: 41 + - m_X: 494 + m_Y: 41 + m_Width: 9 + m_Height: 18 + - m_X: 419 + m_Y: 71 + m_Width: 30 + m_Height: 41 + - m_X: 449 + m_Y: 71 + m_Width: 15 + m_Height: 52 + - m_X: 379 + m_Y: 98 + m_Width: 30 + m_Height: 41 + - m_X: 409 + m_Y: 98 + m_Width: 9 + m_Height: 17 + - m_X: 418 + m_Y: 112 + m_Width: 30 + m_Height: 41 + - m_X: 336 + m_Y: 108 + m_Width: 30 + m_Height: 41 + - m_X: 366 + m_Y: 108 + m_Width: 13 + m_Height: 53 + - m_X: 298 + m_Y: 147 + m_Width: 30 + m_Height: 41 + - m_X: 328 + m_Y: 149 + m_Width: 30 + m_Height: 41 + - m_X: 298 + m_Y: 188 + m_Width: 30 + m_Height: 41 + - m_X: 379 + m_Y: 139 + m_Width: 30 + m_Height: 40 + - m_X: 358 + m_Y: 161 + m_Width: 21 + m_Height: 50 + - m_X: 328 + m_Y: 190 + m_Width: 30 + m_Height: 39 + - m_X: 534 + m_Y: 0 + m_Width: 30 + m_Height: 33 + - m_X: 564 + m_Y: 0 + m_Width: 30 + m_Height: 30 + - m_X: 594 + m_Y: 0 + m_Width: 30 + m_Height: 30 + - m_X: 624 + m_Y: 0 + m_Width: 30 + m_Height: 29 + - m_X: 654 + m_Y: 0 + m_Width: 30 + m_Height: 28 + - m_X: 684 + m_Y: 0 + m_Width: 29 + m_Height: 42 + - m_X: 654 + m_Y: 28 + m_Width: 29 + m_Height: 41 + - m_X: 624 + m_Y: 29 + m_Width: 29 + m_Height: 41 + - m_X: 564 + m_Y: 30 + m_Width: 29 + m_Height: 41 + - m_X: 534 + m_Y: 33 + m_Width: 29 + m_Height: 41 + - m_X: 503 + m_Y: 49 + m_Width: 29 + m_Height: 41 + - m_X: 593 + m_Y: 30 + m_Width: 29 + m_Height: 41 + - m_X: 464 + m_Y: 82 + m_Width: 29 + m_Height: 40 + - m_X: 713 + m_Y: 0 + m_Width: 29 + m_Height: 30 + - m_X: 742 + m_Y: 0 + m_Width: 28 + m_Height: 52 + - m_X: 713 + m_Y: 30 + m_Width: 28 + m_Height: 52 + - m_X: 683 + m_Y: 42 + m_Width: 28 + m_Height: 51 + - m_X: 653 + m_Y: 69 + m_Width: 28 + m_Height: 51 + - m_X: 622 + m_Y: 70 + m_Width: 28 + m_Height: 50 + - m_X: 563 + m_Y: 71 + m_Width: 28 + m_Height: 50 + - m_X: 532 + m_Y: 74 + m_Width: 28 + m_Height: 43 + - m_X: 591 + m_Y: 71 + m_Width: 28 + m_Height: 42 + - m_X: 591 + m_Y: 113 + m_Width: 28 + m_Height: 41 + - m_X: 493 + m_Y: 90 + m_Width: 28 + m_Height: 41 + - m_X: 464 + m_Y: 122 + m_Width: 28 + m_Height: 41 + - m_X: 448 + m_Y: 123 + m_Width: 16 + m_Height: 52 + - m_X: 409 + m_Y: 153 + m_Width: 28 + m_Height: 39 + - m_X: 379 + m_Y: 179 + m_Width: 28 + m_Height: 28 + - m_X: 521 + m_Y: 117 + m_Width: 28 + m_Height: 28 + - m_X: 549 + m_Y: 117 + m_Width: 14 + m_Height: 53 + - m_X: 563 + m_Y: 121 + m_Width: 28 + m_Height: 13 + - m_X: 563 + m_Y: 134 + m_Width: 27 + m_Height: 51 + - m_X: 492 + m_Y: 131 + m_Width: 27 + m_Height: 42 + - m_X: 464 + m_Y: 163 + m_Width: 27 + m_Height: 41 + - m_X: 437 + m_Y: 175 + m_Width: 27 + m_Height: 41 + - m_X: 407 + m_Y: 192 + m_Width: 27 + m_Height: 41 + - m_X: 379 + m_Y: 207 + m_Width: 27 + m_Height: 41 + - m_X: 358 + m_Y: 211 + m_Width: 21 + m_Height: 41 + - m_X: 519 + m_Y: 145 + m_Width: 27 + m_Height: 40 + - m_X: 546 + m_Y: 170 + m_Width: 17 + m_Height: 51 + - m_X: 491 + m_Y: 173 + m_Width: 27 + m_Height: 39 + - m_X: 464 + m_Y: 204 + m_Width: 27 + m_Height: 30 + - m_X: 518 + m_Y: 185 + m_Width: 26 + m_Height: 42 + - m_X: 491 + m_Y: 212 + m_Width: 26 + m_Height: 42 + - m_X: 434 + m_Y: 216 + m_Width: 26 + m_Height: 41 + - m_X: 406 + m_Y: 233 + m_Width: 26 + m_Height: 41 + - m_X: 379 + m_Y: 248 + m_Width: 26 + m_Height: 41 + - m_X: 460 + m_Y: 234 + m_Width: 26 + m_Height: 41 + - m_X: 432 + m_Y: 257 + m_Width: 26 + m_Height: 41 + - m_X: 405 + m_Y: 274 + m_Width: 26 + m_Height: 40 + - m_X: 291 + m_Y: 229 + m_Width: 26 + m_Height: 39 + - m_X: 268 + m_Y: 240 + m_Width: 23 + m_Height: 41 + - m_X: 317 + m_Y: 229 + m_Width: 26 + m_Height: 30 + - m_X: 343 + m_Y: 229 + m_Width: 15 + m_Height: 22 + - m_X: 343 + m_Y: 251 + m_Width: 14 + m_Height: 52 + - m_X: 317 + m_Y: 259 + m_Width: 26 + m_Height: 30 + - m_X: 291 + m_Y: 268 + m_Width: 26 + m_Height: 20 + - m_X: 268 + m_Y: 281 + m_Width: 23 + m_Height: 40 + - m_X: 291 + m_Y: 288 + m_Width: 26 + m_Height: 15 + - m_X: 317 + m_Y: 289 + m_Width: 26 + m_Height: 14 + - m_X: 357 + m_Y: 252 + m_Width: 21 + m_Height: 41 + - m_X: 378 + m_Y: 289 + m_Width: 25 + m_Height: 43 + - m_X: 357 + m_Y: 293 + m_Width: 21 + m_Height: 39 + - m_X: 237 + m_Y: 283 + m_Width: 25 + m_Height: 41 + - m_X: 207 + m_Y: 309 + m_Width: 25 + m_Height: 41 + - m_X: 163 + m_Y: 315 + m_Width: 25 + m_Height: 41 + - m_X: 188 + m_Y: 315 + m_Width: 19 + m_Height: 41 + - m_X: 128 + m_Y: 318 + m_Width: 25 + m_Height: 41 + - m_X: 85 + m_Y: 343 + m_Width: 25 + m_Height: 40 + - m_X: 64 + m_Y: 356 + m_Width: 21 + m_Height: 25 + - m_X: 64 + m_Y: 381 + m_Width: 21 + m_Height: 20 + - m_X: 110 + m_Y: 343 + m_Width: 18 + m_Height: 18 + - m_X: 31 + m_Y: 387 + m_Width: 25 + m_Height: 39 + - m_X: 0 + m_Y: 412 + m_Width: 25 + m_Height: 30 + - m_X: 291 + m_Y: 303 + m_Width: 25 + m_Height: 30 + - m_X: 262 + m_Y: 321 + m_Width: 25 + m_Height: 30 + - m_X: 232 + m_Y: 324 + m_Width: 25 + m_Height: 6 + - m_X: 232 + m_Y: 330 + m_Width: 24 + m_Height: 45 + - m_X: 207 + m_Y: 350 + m_Width: 24 + m_Height: 45 + - m_X: 316 + m_Y: 303 + m_Width: 24 + m_Height: 45 + - m_X: 340 + m_Y: 303 + m_Width: 17 + m_Height: 22 + - m_X: 340 + m_Y: 325 + m_Width: 17 + m_Height: 22 + - m_X: 287 + m_Y: 333 + m_Width: 24 + m_Height: 27 + - m_X: 256 + m_Y: 351 + m_Width: 24 + m_Height: 27 + - m_X: 231 + m_Y: 375 + m_Width: 24 + m_Height: 22 + - m_X: 153 + m_Y: 356 + m_Width: 24 + m_Height: 6 + - m_X: 128 + m_Y: 359 + m_Width: 23 + m_Height: 30 + - m_X: 110 + m_Y: 361 + m_Width: 18 + m_Height: 17 + - m_X: 110 + m_Y: 378 + m_Width: 18 + m_Height: 17 + - m_X: 85 + m_Y: 383 + m_Width: 20 + m_Height: 25 + - m_X: 56 + m_Y: 401 + m_Width: 20 + m_Height: 20 + - m_X: 177 + m_Y: 356 + m_Width: 20 + m_Height: 19 + - m_X: 151 + m_Y: 362 + m_Width: 19 + m_Height: 40 + - m_X: 128 + m_Y: 389 + m_Width: 19 + m_Height: 30 + - m_X: 105 + m_Y: 395 + m_Width: 19 + m_Height: 8 + - m_X: 105 + m_Y: 403 + m_Width: 19 + m_Height: 5 + - m_X: 170 + m_Y: 375 + m_Width: 17 + m_Height: 19 + - m_X: 187 + m_Y: 375 + m_Width: 17 + m_Height: 6 + - m_X: 187 + m_Y: 381 + m_Width: 17 + m_Height: 6 + - m_X: 187 + m_Y: 387 + m_Width: 16 + m_Height: 16 + - m_X: 170 + m_Y: 394 + m_Width: 14 + m_Height: 41 + - m_X: 147 + m_Y: 402 + m_Width: 14 + m_Height: 10 + - m_X: 147 + m_Y: 412 + m_Width: 13 + m_Height: 52 + - m_X: 203 + m_Y: 395 + m_Width: 13 + m_Height: 41 + - m_X: 216 + m_Y: 395 + m_Width: 13 + m_Height: 12 + - m_X: 184 + m_Y: 403 + m_Width: 13 + m_Height: 10 + - m_X: 184 + m_Y: 413 + m_Width: 12 + m_Height: 25 + - m_X: 160 + m_Y: 435 + m_Width: 12 + m_Height: 25 + m_FreeGlyphRects: + - m_X: 172 + m_Y: 41 + m_Width: 1 + m_Height: 8 + - m_X: 131 + m_Y: 82 + m_Width: 1 + m_Height: 11 + - m_X: 43 + m_Y: 117 + m_Width: 1 + m_Height: 6 + - m_X: 214 + m_Y: 49 + m_Width: 3 + m_Height: 2 + - m_X: 171 + m_Y: 93 + m_Width: 1 + m_Height: 7 + - m_X: 381 + m_Y: 41 + m_Width: 4 + m_Height: 10 + - m_X: 299 + m_Y: 46 + m_Width: 2 + m_Height: 45 + - m_X: 254 + m_Y: 51 + m_Width: 5 + m_Height: 45 + - m_X: 211 + m_Y: 100 + m_Width: 3 + m_Height: 33 + - m_X: 130 + m_Y: 112 + m_Width: 1 + m_Height: 32 + - m_X: 248 + m_Y: 133 + m_Width: 6 + m_Height: 14 + - m_X: 208 + m_Y: 141 + m_Width: 3 + m_Height: 33 + - m_X: 167 + m_Y: 144 + m_Width: 4 + m_Height: 38 + - m_X: 85 + m_Y: 123 + m_Width: 3 + m_Height: 39 + - m_X: 165 + m_Y: 185 + m_Width: 2 + m_Height: 38 + - m_X: 203 + m_Y: 182 + m_Width: 5 + m_Height: 41 + - m_X: 164 + m_Y: 226 + m_Width: 1 + m_Height: 38 + - m_X: 42 + m_Y: 158 + m_Width: 1 + m_Height: 15 + - m_X: 119 + m_Y: 211 + m_Width: 1 + m_Height: 30 + - m_X: 129 + m_Y: 251 + m_Width: 1 + m_Height: 26 + - m_X: 41 + m_Y: 207 + m_Width: 1 + m_Height: 16 + - m_X: 68 + m_Y: 223 + m_Width: 8 + m_Height: 32 + - m_X: 118 + m_Y: 302 + m_Width: 1 + m_Height: 11 + - m_X: 32 + m_Y: 248 + m_Width: 2 + m_Height: 16 + - m_X: 64 + m_Y: 264 + m_Width: 4 + m_Height: 42 + - m_X: 244 + m_Y: 174 + m_Width: 4 + m_Height: 14 + - m_X: 285 + m_Y: 147 + m_Width: 6 + m_Height: 41 + - m_X: 207 + m_Y: 182 + m_Width: 1 + m_Height: 42 + - m_X: 238 + m_Y: 224 + m_Width: 6 + m_Height: 5 + - m_X: 198 + m_Y: 264 + m_Width: 2 + m_Height: 12 + - m_X: 464 + m_Y: 30 + m_Width: 1 + m_Height: 11 + - m_X: 420 + m_Y: 51 + m_Width: 5 + m_Height: 20 + - m_X: 419 + m_Y: 57 + m_Width: 6 + m_Height: 14 + - m_X: 379 + m_Y: 90 + m_Width: 2 + m_Height: 8 + - m_X: 418 + m_Y: 98 + m_Width: 1 + m_Height: 14 + - m_X: 337 + m_Y: 91 + m_Width: 4 + m_Height: 17 + - m_X: 336 + m_Y: 100 + m_Width: 5 + m_Height: 8 + - m_X: 298 + m_Y: 138 + m_Width: 1 + m_Height: 9 + - m_X: 328 + m_Y: 147 + m_Width: 8 + m_Height: 2 + - m_X: 358 + m_Y: 149 + m_Width: 8 + m_Height: 12 + - m_X: 503 + m_Y: 41 + m_Width: 1 + m_Height: 8 + - m_X: 770 + m_Y: 0 + m_Width: 254 + m_Height: 1024 + - m_X: 741 + m_Y: 52 + m_Width: 283 + m_Height: 972 + - m_X: 741 + m_Y: 30 + m_Width: 1 + m_Height: 994 + - m_X: 683 + m_Y: 28 + m_Width: 1 + m_Height: 14 + - m_X: 711 + m_Y: 82 + m_Width: 313 + m_Height: 942 + - m_X: 711 + m_Y: 42 + m_Width: 2 + m_Height: 982 + - m_X: 653 + m_Y: 29 + m_Width: 1 + m_Height: 40 + - m_X: 681 + m_Y: 93 + m_Width: 343 + m_Height: 931 + - m_X: 681 + m_Y: 69 + m_Width: 2 + m_Height: 955 + - m_X: 622 + m_Y: 30 + m_Width: 2 + m_Height: 40 + - m_X: 650 + m_Y: 70 + m_Width: 3 + m_Height: 954 + - m_X: 563 + m_Y: 33 + m_Width: 1 + m_Height: 38 + - m_X: 532 + m_Y: 49 + m_Width: 2 + m_Height: 25 + - m_X: 619 + m_Y: 71 + m_Width: 3 + m_Height: 953 + - m_X: 619 + m_Y: 120 + m_Width: 405 + m_Height: 904 + - m_X: 494 + m_Y: 59 + m_Width: 9 + m_Height: 31 + - m_X: 493 + m_Y: 82 + m_Width: 10 + m_Height: 8 + - m_X: 448 + m_Y: 112 + m_Width: 1 + m_Height: 11 + - m_X: 409 + m_Y: 115 + m_Width: 9 + m_Height: 38 + - m_X: 521 + m_Y: 90 + m_Width: 11 + m_Height: 27 + - m_X: 560 + m_Y: 74 + m_Width: 3 + m_Height: 43 + - m_X: 590 + m_Y: 154 + m_Width: 434 + m_Height: 870 + - m_X: 590 + m_Y: 134 + m_Width: 1 + m_Height: 890 + - m_X: 492 + m_Y: 122 + m_Width: 1 + m_Height: 9 + - m_X: 437 + m_Y: 153 + m_Width: 11 + m_Height: 22 + - m_X: 407 + m_Y: 179 + m_Width: 2 + m_Height: 13 + - m_X: 519 + m_Y: 131 + m_Width: 2 + m_Height: 14 + - m_X: 563 + m_Y: 185 + m_Width: 461 + m_Height: 839 + - m_X: 546 + m_Y: 145 + m_Width: 3 + m_Height: 25 + - m_X: 491 + m_Y: 163 + m_Width: 1 + m_Height: 10 + - m_X: 518 + m_Y: 173 + m_Width: 1 + m_Height: 12 + - m_X: 544 + m_Y: 185 + m_Width: 2 + m_Height: 839 + - m_X: 544 + m_Y: 221 + m_Width: 480 + m_Height: 803 + - m_X: 517 + m_Y: 227 + m_Width: 507 + m_Height: 797 + - m_X: 517 + m_Y: 212 + m_Width: 1 + m_Height: 812 + - m_X: 434 + m_Y: 192 + m_Width: 3 + m_Height: 24 + - m_X: 406 + m_Y: 207 + m_Width: 1 + m_Height: 26 + - m_X: 460 + m_Y: 216 + m_Width: 4 + m_Height: 18 + - m_X: 486 + m_Y: 254 + m_Width: 538 + m_Height: 770 + - m_X: 486 + m_Y: 234 + m_Width: 5 + m_Height: 790 + - m_X: 432 + m_Y: 233 + m_Width: 2 + m_Height: 24 + - m_X: 458 + m_Y: 257 + m_Width: 2 + m_Height: 767 + - m_X: 458 + m_Y: 275 + m_Width: 566 + m_Height: 749 + - m_X: 405 + m_Y: 248 + m_Width: 1 + m_Height: 26 + - m_X: 431 + m_Y: 298 + m_Width: 593 + m_Height: 726 + - m_X: 431 + m_Y: 274 + m_Width: 1 + m_Height: 750 + - m_X: 291 + m_Y: 191 + m_Width: 7 + m_Height: 38 + - m_X: 268 + m_Y: 229 + m_Width: 7 + m_Height: 11 + - m_X: 357 + m_Y: 251 + m_Width: 1 + m_Height: 1 + - m_X: 403 + m_Y: 314 + m_Width: 621 + m_Height: 710 + - m_X: 403 + m_Y: 289 + m_Width: 2 + m_Height: 735 + - m_X: 378 + m_Y: 252 + m_Width: 1 + m_Height: 37 + - m_X: 237 + m_Y: 259 + m_Width: 1 + m_Height: 24 + - m_X: 163 + m_Y: 277 + m_Width: 1 + m_Height: 38 + - m_X: 128 + m_Y: 313 + m_Width: 1 + m_Height: 5 + - m_X: 118 + m_Y: 322 + m_Width: 10 + m_Height: 21 + - m_X: 31 + m_Y: 371 + m_Width: 1 + m_Height: 16 + - m_X: 25 + m_Y: 412 + m_Width: 6 + m_Height: 612 + - m_X: 262 + m_Y: 283 + m_Width: 6 + m_Height: 38 + - m_X: 232 + m_Y: 309 + m_Width: 5 + m_Height: 15 + - m_X: 340 + m_Y: 347 + m_Width: 684 + m_Height: 677 + - m_X: 357 + m_Y: 332 + m_Width: 667 + m_Height: 692 + - m_X: 287 + m_Y: 321 + m_Width: 4 + m_Height: 12 + - m_X: 311 + m_Y: 348 + m_Width: 713 + m_Height: 676 + - m_X: 311 + m_Y: 333 + m_Width: 5 + m_Height: 691 + - m_X: 257 + m_Y: 324 + m_Width: 5 + m_Height: 27 + - m_X: 256 + m_Y: 330 + m_Width: 6 + m_Height: 21 + - m_X: 280 + m_Y: 360 + m_Width: 744 + m_Height: 664 + - m_X: 280 + m_Y: 351 + m_Width: 7 + m_Height: 673 + - m_X: 231 + m_Y: 350 + m_Width: 1 + m_Height: 25 + - m_X: 255 + m_Y: 378 + m_Width: 769 + m_Height: 646 + - m_X: 255 + m_Y: 375 + m_Width: 1 + m_Height: 649 + - m_X: 153 + m_Y: 318 + m_Width: 10 + m_Height: 38 + - m_X: 56 + m_Y: 387 + m_Width: 8 + m_Height: 14 + - m_X: 76 + m_Y: 401 + m_Width: 9 + m_Height: 623 + - m_X: 151 + m_Y: 359 + m_Width: 2 + m_Height: 3 + - m_X: 76 + m_Y: 408 + m_Width: 52 + m_Height: 616 + - m_X: 105 + m_Y: 383 + m_Width: 5 + m_Height: 12 + - m_X: 124 + m_Y: 395 + m_Width: 4 + m_Height: 629 + - m_X: 170 + m_Y: 362 + m_Width: 7 + m_Height: 13 + - m_X: 197 + m_Y: 356 + m_Width: 10 + m_Height: 19 + - m_X: 147 + m_Y: 389 + m_Width: 4 + m_Height: 13 + - m_X: 0 + m_Y: 464 + m_Width: 1024 + m_Height: 560 + - m_X: 0 + m_Y: 442 + m_Width: 147 + m_Height: 582 + - m_X: 25 + m_Y: 426 + m_Width: 122 + m_Height: 598 + - m_X: 56 + m_Y: 421 + m_Width: 91 + m_Height: 603 + - m_X: 76 + m_Y: 419 + m_Width: 71 + m_Height: 605 + - m_X: 204 + m_Y: 356 + m_Width: 3 + m_Height: 39 + - m_X: 203 + m_Y: 387 + m_Width: 4 + m_Height: 8 + - m_X: 216 + m_Y: 407 + m_Width: 808 + m_Height: 617 + - m_X: 229 + m_Y: 397 + m_Width: 795 + m_Height: 627 + - m_X: 229 + m_Y: 395 + m_Width: 2 + m_Height: 629 + - m_X: 184 + m_Y: 394 + m_Width: 3 + m_Height: 9 + - m_X: 197 + m_Y: 403 + m_Width: 6 + m_Height: 621 + - m_X: 196 + m_Y: 436 + m_Width: 828 + m_Height: 588 + - m_X: 196 + m_Y: 413 + m_Width: 7 + m_Height: 611 + - m_X: 161 + m_Y: 402 + m_Width: 9 + m_Height: 33 + - m_X: 160 + m_Y: 412 + m_Width: 10 + m_Height: 23 + - m_X: 160 + m_Y: 460 + m_Width: 864 + m_Height: 564 + - m_X: 172 + m_Y: 438 + m_Width: 852 + m_Height: 586 + - m_X: 172 + m_Y: 435 + m_Width: 12 + m_Height: 589 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 1 + m_AtlasRenderMode: 4121 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 49342641ea2b7e6429da3245744bb92b + pointSizeSamplingMode: 1 + pointSize: 55 + padding: 1 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 6 + characterSequence: 20-7E,A0-FF,2013-2015,2018-201A,201C-201E,2020-2022,2026,2030,2039-203A,2044,20AC,2122 + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4121 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!21 &7453642021753212536 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Lato-Regular Material + m_Shader: {fileID: 4800000, guid: 128e987d567d4e2c824d754223b3f3b0, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -2340667833886341526} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _ColorMask: 15 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta new file mode 100644 index 0000000..4612655 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ffb8c3515fb6dc4688eff5a7e48200f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf new file mode 100644 index 0000000..33eba8b Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf differ diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta new file mode 100644 index 0000000..d27c6d5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/Lato-Regular.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 49342641ea2b7e6429da3245744bb92b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Lato + fontNames: + - Lato + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt new file mode 100644 index 0000000..98383e3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta new file mode 100644 index 0000000..0ec333e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Font/OFL.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 00c3ff69a8133b34c9df87ba6dd26bf2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta new file mode 100644 index 0000000..e438911 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3319478745348604ea0630be39d375db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta new file mode 100644 index 0000000..373a7fc --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dba2e994350d1f14cb2e667e48dee952 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs new file mode 100644 index 0000000..644b601 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs @@ -0,0 +1,53 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Examples +{ + [AddComponentMenu("")] + public class DefaultEffectsExample : MonoBehaviour + { + public TypewriterCore typewriter; + TextAnimatorSettings settings; + + private void Awake() + { + UnityEngine.Assertions.Assert.IsNotNull(typewriter, $"Text Animator Player component is null in {gameObject.name}"); + settings = TextAnimatorSettings.Instance; + UnityEngine.Assertions.Assert.IsNotNull(settings, $"Text Animator Settings is null."); + } + + string AddEffect(TextAnimatorSettings.Category category, string tag) where T: ScriptableObject + { + return $"{category.openingSymbol}{tag}{category.closingSymbol}{tag}{category.openingSymbol}/{category.closingSymbol}, "; + } + + private void Start() + { + const char quote = '"'; + //builds the text with all the default tags + string builtText = "You can add effects by using rich text tags." + + $"\nExample: writing {quote}I'm cold{quote} will result in {quote}I'm cold{quote}." + + $"\n\n Effects that animate through time are called {quote}Behaviors{quote}, and the default tags are: "; + + foreach (var effect in typewriter.TextAnimator.DatabaseBehaviors.Data) + { + if(!effect) continue; + builtText += AddEffect(settings.behaviors, effect.TagID); + } + + builtText += $"\n\nEffects that animate letters while they appear on screen are called {quote}Appearances{quote} and the default tags are: "; + + foreach (var effect in typewriter.TextAnimator.DatabaseAppearances.Data) + { + if(!effect) continue; + builtText += AddEffect(settings.appearances, effect.TagID); + } + + //shows the text dynamically (typewriter like) + typewriter.ShowText(builtText); + + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta new file mode 100644 index 0000000..9df1e3f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/DefaultEffectsExample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b97a825c489d94194a088dd18fedd2f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs new file mode 100644 index 0000000..4c421ef --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Example/Scripts/Runtime/ExampleEvents.cs @@ -0,0 +1,168 @@ +using System.Collections; +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; +using UnityEngine; + +namespace Febucci.UI.Examples +{ + [AddComponentMenu(""), DisallowMultipleComponent] + class ExampleEvents : MonoBehaviour + { + // ---- PART OF THE SCRIPT THAT YOU'RE PROBABLY INTERESTED IT ---- + + void Start() + { + //Subscribe to the event + typewriter.onMessage.AddListener(OnMessage); + + + dialogueIndex = 0; + CurrentLineShown = false; + typewriter.ShowText(dialoguesLines[dialogueIndex]); + } + + void OnDestroy() + { + if(typewriter) typewriter.onMessage.RemoveListener(OnMessage); + } + + bool TryGetInt(string parameter, out int result) + { + + if (FormatUtils.TryGetFloat(parameter, 0, out float resultFloat)) + { + result = (int)resultFloat; + return true; + } + + result = -1; + return false; + } + void OnMessage(EventMarker eventData) + { + switch (eventData.name) + { + case "face": + if (eventData.parameters.Length <= 0) + { + Debug.LogWarning($"You need to specify a sprite index! Dialogue: {dialogueIndex}"); + return; + } + + if (TryGetInt(eventData.parameters[0], out int spriteIndex)) + { + if (spriteIndex >= 0 && spriteIndex < faces.Length) + { + faceRenderer.sprite = faces[spriteIndex]; + } + else + { + Debug.Log($"Sprite index was out of range. Dialogue: {dialogueIndex}"); + } + } + break; + + case "crate": + if (eventData.parameters.Length <= 0) + { + Debug.LogWarning($"You need to specify a crate index! Dialogue: {dialogueIndex}"); + return; + } + + if (TryGetInt(eventData.parameters[0], out int crateIndex)) + { + if (crateIndex >= 0 && crateIndex < crates.Length) + { + StartCoroutine(AnimateCrate(crateIndex)); + } + else + { + Debug.Log($"Sprite index was out of range. Dialogue: {dialogueIndex}"); + } + } + break; + } + } + + // ---- OTHER PART OF THE SCRIPT ---- + // This makes the script run faking a dialogue system + [SerializeField] TypewriterCore typewriter; + [SerializeField, TextArea(1, 5)] string[] dialoguesLines; + [SerializeField] Sprite[] faces; + [SerializeField] SpriteRenderer faceRenderer; + [SerializeField] GameObject continueText; + [SerializeField] Transform[] crates; + Vector3[] cratesInitialScale; + + int dialogueIndex = 0; + int dialogueLength; + bool currentLineShown; + + bool CurrentLineShown + { + get => currentLineShown; + set + { + currentLineShown = value; + continueText.SetActive(value); + } + } + + void Awake() + { + cratesInitialScale = new Vector3[crates.Length]; + for (int i = 0; i < crates.Length; i++) + { + cratesInitialScale[i] = crates[i].localScale; + } + + dialogueLength = dialoguesLines.Length; + typewriter.onTextShowed.AddListener(() => CurrentLineShown = true); + } + + void ContinueSequence() + { + CurrentLineShown = false; + dialogueIndex++; + if(dialogueIndexfreezing ”. + + Try writing a text by experimenting with the following + tags: , like “ I'm joking hehe now + I'm scared ”, then enter Unity’s Play mode. + +✅ Your text is animating letters based on the effects you’ve written. + +2. Showing letters dynamically + +To show letters dynamically (like a typewriter): + Add a TypewriterByCharacter component on the same GameObject. (In Unity’s Edit + Mode) + Tell TextAnimator that you want to use the typewriter. For now, let’s do it the super + simple way: On the TextAnimator_TMP component, set “Typewriter Starts + Automatically” value to true. Then enter Play mode. + +✅ Your text is now shown dynamically, like a typewriter. + +Example scenes + +In addition to the quick and simple Online documentation, Text Animator contains +multiple example scenes you can visit and learn from, each one showing specific +features. +[I suggest starting from the scene named “00-Welcome”] +P.S. You can delete (or avoid importing) the Example Scenes folder if you don’t need +them in your project. + +Text Animator for Unity 2.X 2 + That’s it for the quick start! For every feature in detail, please visit the following: +https://www.febucci.com/text-animator-unity/docs/ + +In case you need any help, please do not hesitate to contact us through: +https://www.febucci.com/text-animator-unity/support/ + +❤ Thank you so much! Have fun bringing your texts to life! + +Text Animator for Unity 2.X 3 + \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta b/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta new file mode 100644 index 0000000..15f65ef --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Quick Start [Offline].pdf.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f2803ca31271d4631b7dcb81cccea0ee +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts.meta b/Assets/Plugins/Febucci/Text Animator/Scripts.meta new file mode 100644 index 0000000..93299ad --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a47363b2fbe9e2d45b00c72c79679fc3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta new file mode 100644 index 0000000..4c76f29 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 834807df07adbb843a9e2270df867e8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta new file mode 100644 index 0000000..3ffd24c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4092478b3f6ba408384c2224ec1edc58 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta new file mode 100644 index 0000000..2f651bf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71fee1318e1eb47f7854704b0697d75d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs new file mode 100644 index 0000000..64be9e3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs @@ -0,0 +1,641 @@ +using System.Text; +using UnityEngine; +using UnityEditor; + +namespace Febucci.UI.Core +{ + [CustomEditor(typeof(Core.TAnimCore), true)] + class TAnimCoreDrawer : Editor + { + SerializedProperty m_Script; + + SerializedProperty typewriterStartsAutomatically; + + SerializedProperty referenceFontSize; + SerializedProperty useDynamicScaling; + + SerializedProperty timeScale; + SerializedProperty animationLoop; + SerializedProperty isResettingTimeOnNewText; + + + SerializedProperty defaultTagsMode; + SerializedProperty defaultAppearancesTags; + SerializedProperty defaultBehaviorsTags; + SerializedProperty defaultDisappearancesTags; + + SerializedProperty useDefaultDatabases; + + SerializedProperty databaseBehaviorsField; + DatabaseSharedDrawer databaseBehaviorsDrawer; + SerializedProperty databaseAppearancesField; + DatabaseSharedDrawer databaseAppearancesDrawer; + SerializedProperty databaseActionsField; + DatabaseSharedDrawer databaseActionsDrawer; + + Core.TAnimCore script; + static string[] excludedProperties = new string[] + { + "m_Script", + "_text", + "databaseBehaviors", + "databaseAppearances", + "defaultAppearancesTags", + "defaultBehaviorsTags", + "defaultDisappearancesTags", + "typewriterStartsAutomatically", + nameof(TAnimCore.referenceFontSize), + nameof(TAnimCore.useDynamicScaling), + nameof(TAnimCore.defaultTagsMode), + nameof(TAnimCore.timeScale), + nameof(TAnimCore.animationLoop), + nameof(TAnimCore.isResettingTimeOnNewText), + "databaseActions", + "useDefaultDatabases", + }; + + void OnEnable() + { + script = (Core.TAnimCore)target; + + m_Script = serializedObject.FindProperty("m_Script"); + + typewriterStartsAutomatically = serializedObject.FindProperty("typewriterStartsAutomatically"); + + useDefaultDatabases = serializedObject.FindProperty("useDefaultDatabases"); + databaseBehaviorsField = serializedObject.FindProperty("databaseBehaviors"); + databaseAppearancesField = serializedObject.FindProperty("databaseAppearances"); + databaseActionsField = serializedObject.FindProperty("databaseActions"); + + databaseBehaviorsDrawer = new DatabaseSharedDrawer(); + databaseAppearancesDrawer = new DatabaseSharedDrawer(); + databaseActionsDrawer = new DatabaseSharedDrawer(); + + defaultTagsMode = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.defaultTagsMode)); + defaultAppearancesTags = serializedObject.FindProperty("defaultAppearancesTags"); + defaultBehaviorsTags = serializedObject.FindProperty("defaultBehaviorsTags"); + defaultDisappearancesTags = serializedObject.FindProperty("defaultDisappearancesTags"); + + referenceFontSize = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.referenceFontSize)); + useDynamicScaling = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.useDynamicScaling)); + timeScale = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.timeScale)); + animationLoop = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.animationLoop)); + isResettingTimeOnNewText = serializedObject.FindProperty(nameof(Febucci.UI.Core.TAnimCore.isResettingTimeOnNewText)); + + gui_visibleCharacters = new GUIContent("Visible Characters", null, + $"Range of visible characters in the text.\nTo modify this via script, set \"{nameof(TAnimCore.firstVisibleCharacter)}\" and \"{nameof(TAnimCore.maxVisibleCharacters)}\""); + + EditorApplication.playModeStateChanged += OnPlayModeChanged; + RegisterUndoRedraw(); + UnregisterPlayback(); + } + + void OnPlayModeChanged(PlayModeStateChange stateChange) + { + if(stateChange == PlayModeStateChange.ExitingEditMode) + UnregisterPlayback(); + } + + private void OnDisable() + { + EditorApplication.playModeStateChanged -= OnPlayModeChanged; + UnregisterPlayback(); + UnregisterUndoRedraw(); + } + + private void OnDestroy() + { + UnregisterPlayback(); + UnregisterUndoRedraw(); + } + + #region Undo Redo + + private bool undoRedoRegistered; + + void RegisterUndoRedraw() + { + if (undoRedoRegistered) + return; + + undoRedoRegistered = true; + Undo.undoRedoPerformed += UndoRedraw; + } + + void UndoRedraw() + { + OnDisable(); + OnEnable(); + Repaint(); + runInEditMode = false; + } + + void UnregisterUndoRedraw() + { + if (!undoRedoRegistered) + return; + + undoRedoRegistered = false; + Undo.undoRedoPerformed -= UndoRedraw; + + } + + + #endregion + + #region Playback + + string textBeforePreview; + string textDuringPreview; + + private bool runInEditMode; + bool isPlaying => Application.isPlaying || runInEditMode; + + private GUIContent gui_visibleCharacters; + Vector2 playbackCharsScrollView; + bool extraPlaybackControls; + void DrawPlayback() + { + void HookPlaybackEvent() + { + script.time.RestartTime(); + + if (runInEditMode) RegisterPlayback(); + else UnregisterPlayback(); + } + + //--- Playback Toolbar --- + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField(Application.isPlaying ? "Playback info" : "Preview in Edit Mode", GUILayout.Width(120)); + GUI.enabled = !Application.isPlaying; + if(GUILayout.Button(runInEditMode ? TexturesLoader.StopIcon : TexturesLoader.PlayIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20))) + { + runInEditMode = !runInEditMode; + HookPlaybackEvent(); + } + + GUI.enabled = runInEditMode && !Application.isPlaying; + if(GUILayout.Button(TexturesLoader.SaveIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20))) + { + textBeforePreview = textDuringPreview; + runInEditMode = false; + HookPlaybackEvent(); + } + GUI.enabled = true; + + EditorGUILayout.EndHorizontal(); + + //---Visible characters--- + if (isPlaying) + { + //---Text--- + if (!Application.isPlaying) + { + EditorGUI.BeginChangeCheck(); + + textDuringPreview = EditorGUILayout.TextArea(textDuringPreview, GUILayout.MinHeight(50)); + if (EditorGUI.EndChangeCheck()) + { + script.SetText(textDuringPreview); + EditorUtility.SetDirty(script); + } + } + + //---Visible characters--- + int charCount = script.CharactersCount; + + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + //First visible character + EditorGUI.BeginChangeCheck(); + float minValue = script.firstVisibleCharacter; + float maxValue = script.maxVisibleCharacters; + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.MinMaxSlider(gui_visibleCharacters, ref minValue, ref maxValue, 0, charCount); + if (EditorGUI.EndChangeCheck()) + { + script.firstVisibleCharacter = Mathf.RoundToInt(minValue); + script.maxVisibleCharacters = Mathf.RoundToInt(maxValue); + } + + EditorGUILayout.Space(); + int intMinValue = script.firstVisibleCharacter; + int intMaxValue = script.maxVisibleCharacters; + EditorGUI.BeginChangeCheck(); + intMinValue = EditorGUILayout.DelayedIntField(GUIContent.none, intMinValue, GUILayout.Width(30)); + EditorGUILayout.LabelField("/", GUILayout.Width(10)); + intMaxValue = EditorGUILayout.DelayedIntField(GUIContent.none, intMaxValue, GUILayout.Width(30)); + if(EditorGUI.EndChangeCheck()) + { + script.firstVisibleCharacter = Mathf.Clamp(intMinValue, 0, charCount); + script.maxVisibleCharacters = Mathf.Clamp(intMaxValue, 0, charCount); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Time passed:"); + if(GUILayout.Button(TexturesLoader.RestartIcon, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20))) + { + script.time.RestartTime(); + } + EditorGUILayout.LabelField(script.time.timeSinceStart.ToString("F2"), EditorStyles.boldLabel); + + EditorGUILayout.EndHorizontal(); + + GUI.color = extraPlaybackControls ? Color.gray : Color.white; + if (GUILayout.Button("Extra Visibility Controls", EditorStyles.helpBox)) + { + extraPlaybackControls = !extraPlaybackControls; + } + GUI.color = Color.white; + + if (extraPlaybackControls) + { + const float boxSize = 12; + + if(script.WordsCount > 20) + EditorGUILayout.HelpBox("Displaying only the first 20 words to optimize performance", MessageType.None); + + playbackCharsScrollView = EditorGUILayout.BeginScrollView(playbackCharsScrollView); + + EditorGUILayout.BeginHorizontal(); + for (int w = 0; w < script.WordsCount && w < 20; w++) //max X words for performance + { + EditorGUILayout.BeginVertical(); + if (GUILayout.Button(script.Words[w].text, EditorStyles.miniButton)) + { + script.SetVisibilityWord(w, !script.Characters[script.Words[w].firstCharacterIndex].isVisible); + } + + EditorGUILayout.BeginHorizontal(); + for (int i = script.Words[w].firstCharacterIndex; i <= script.Words[w].lastCharacterIndex; i++) + { + script.Characters[i].isVisible = EditorGUILayout.Toggle(script.Characters[i].isVisible, + GUILayout.Width(boxSize)); + } + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.EndVertical(); + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndScrollView(); + } + + EditorGUILayout.EndVertical(); + } + + EditorGUILayout.EndVertical(); + } + + bool registeredPlayback; + + void RegisterPlayback() + { + if (registeredPlayback) return; + registeredPlayback = true; + + if (script) + { + textBeforePreview = script.GetOriginalTextFromSource(); + textDuringPreview = textBeforePreview; + if (textDuringPreview.StartsWith("")) + textDuringPreview = textDuringPreview.Remove(0, 19); + + //resets text and databases regardless + script.ForceDatabaseRefresh(); + script.SetText(textDuringPreview); + } + + lastTime = EditorApplication.timeSinceStartup; + EditorApplication.update += UpdatePlayback; + } + + void UnregisterPlayback() + { + if (!registeredPlayback) return; + registeredPlayback = false; + + if (script) + { + // unfocus text area field to prevent having the same text when it appears again + if (textDuringPreview != string.Empty) + GUIUtility.keyboardControl = -1; + + script.SetTextToSource(textBeforePreview); + textBeforePreview = string.Empty; + textDuringPreview = string.Empty; + } + + EditorApplication.update -= UpdatePlayback; + } + + private double lastTime = 0; + void UpdatePlayback() + { + script.Animate((float)(EditorApplication.timeSinceStartup - lastTime)); + lastTime = EditorApplication.timeSinceStartup; + EditorApplication.QueuePlayerLoopUpdate(); + Repaint(); + } + + #endregion + + #region Default Tags + bool drawDefaultBehaviorTags = false; + bool drawDefaultAppearancesTags = false; + bool drawDefaultDisappearancesTags = false; + + void ForceDatabaseRefresh() + { + serializedObject.ApplyModifiedProperties(); + script.ForceDatabaseRefresh(); + } + + void DrawDefaultTags() + { + const string helpConstantTags = "How many of these effects will be applied to the entire text"; + const string helpFallbackTags = "How many of these effects will be applied to a letter, in case there aren't others of the same category."; + + void DrawDefaultArray(ref bool enabledOption, string name, SerializedProperty array, + Database database) where T : ScriptableObject, ITagProvider + { + int size = array.arraySize; + EditorGUILayout.BeginHorizontal(); + enabledOption = EditorGUILayout.Foldout(enabledOption, name + $" [{size} enabled]", true); + + bool areAllTagsValid = true; + + bool IsTagValid(string tag) + { + // hackyly returns valid on an empty tag, to allow user to add new tags without error + return string.IsNullOrEmpty(tag) || + database.ContainsKey(tag.Split(' ')[0]); //splits in case of attributes + } + + // Displays icon if any of the tags is not found in the database + if (database) + { + + for (int i = 0; i < array.arraySize && areAllTagsValid; i++) + { + if (!IsTagValid(array.GetArrayElementAtIndex(i).stringValue)) areAllTagsValid = false; + } + + if (!areAllTagsValid) + { + GUILayout.Box(TexturesLoader.WarningIcon, EditorStyles.label, GUILayout.Width(20), + GUILayout.Height(20)); + } + } + + EditorGUILayout.EndHorizontal(); + if (enabledOption) + { + EditorGUI.indentLevel++; //--begin of foldout + + if (!areAllTagsValid) + { + StringBuilder sb = new StringBuilder(); + foreach (var effect in database.Data) + { + if(!effect) continue; + if(string.IsNullOrEmpty(effect.TagID)) continue; + sb.Append(effect.TagID); + sb.Append(" "); + } + + EditorGUILayout.HelpBox( + $"The tags with the warning icons will not be recognized by Text Animator. Accepted tags: {sb}", + MessageType.Warning); + } + + GUI.enabled = false; + EditorGUILayout.LabelField( + (defaultTagsMode.intValue == (int)Core.TAnimCore.DefaultTagsMode.Fallback + ? helpFallbackTags + : helpConstantTags), EditorStyles.wordWrappedMiniLabel); + GUI.enabled = true; + + //Edits array size + EditorGUI.BeginChangeCheck(); + size = EditorGUILayout.IntField("Effects Count", size); + if (EditorGUI.EndChangeCheck()) + { + bool increasing = size > array.arraySize; + size = Mathf.Clamp(size, 0, size + 1); + array.arraySize = size; + + if (increasing && size > 1) //new element is empty + { + array.GetArrayElementAtIndex(size - 1).stringValue = string.Empty; + } + + ForceDatabaseRefresh(); + } + + Vector2 scrollPos = Vector2.zero; + if (size > 0) + { + GUI.enabled = false; + EditorGUILayout.LabelField( + "Choose one effect per array element, e.g. 'wave'.\nModifiers are also accepted, e.g. 'wave a=2'", + EditorStyles.wordWrappedMiniLabel); + GUI.enabled = true; + EditorGUI.indentLevel++; //--begin of array + + GUIContent temp = new GUIContent(); + string tempString; + for (int i = 0; i < array.arraySize; i++) + { + var element = array.GetArrayElementAtIndex(i); + temp.text = "Effect #" + (i + 1); + tempString = element.stringValue; + // Displays a nice set of button the user can choose recognized tags from + + EditorGUILayout.BeginHorizontal(); + EditorGUI.BeginChangeCheck(); + tempString = EditorGUILayout.DelayedTextField(temp, tempString); + if (EditorGUI.EndChangeCheck()) + { + element.stringValue = tempString; + ForceDatabaseRefresh(); + } + + if (database && !IsTagValid(tempString)) + { + GUILayout.Box(TexturesLoader.WarningIcon, EditorStyles.label, GUILayout.Width(20), + GUILayout.Height(20)); + } + + EditorGUILayout.EndHorizontal(); + } + + EditorGUI.indentLevel--; //--end of array + } + + EditorGUI.indentLevel--; //--end of foldout + } + } + + EditorGUILayout.LabelField("Default Tags", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(defaultTagsMode, true); + if(EditorGUI.EndChangeCheck()) + ForceDatabaseRefresh(); + + if (useDefaultDatabases.boolValue) + { + var settings = TextAnimatorSettings.Instance; + if (settings) + { + DrawDefaultArray(ref drawDefaultAppearancesTags, "Appearances", defaultAppearancesTags, settings.appearances.defaultDatabase); + DrawDefaultArray(ref drawDefaultBehaviorTags, "Behaviors", defaultBehaviorsTags, settings.behaviors.defaultDatabase); + DrawDefaultArray(ref drawDefaultDisappearancesTags, "Disappearances", defaultDisappearancesTags, settings.appearances.defaultDatabase); + } + } + else + { + DrawDefaultArray(ref drawDefaultAppearancesTags, "Appearances", defaultAppearancesTags, script.DatabaseAppearances); + DrawDefaultArray(ref drawDefaultBehaviorTags, "Behaviors", defaultBehaviorsTags, script.DatabaseBehaviors); + DrawDefaultArray(ref drawDefaultDisappearancesTags, "Disappearances", defaultDisappearancesTags, script.DatabaseAppearances); + } + + EditorGUI.indentLevel--; + } +#endregion + + #region Databases + bool editBehaviors = false; + bool editAppearances = false; + bool editActions = false; + SerializedObject settingsObject; + + void DrawDatabases() + { + EditorGUILayout.LabelField("Edit Effects & Actions", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PropertyField(useDefaultDatabases); + GUI.enabled = false; + EditorGUILayout.LabelField(useDefaultDatabases.boolValue ? "Editing databases for every component that uses default settings." : "Editing databases assigned only to this component.", EditorStyles.wordWrappedMiniLabel); + GUI.enabled = true; + EditorGUILayout.EndHorizontal(); + + void DrawDatabaseField(ref bool foldoutToggle, string foldoutName, SerializedProperty field, DatabaseSharedDrawer drawer) + { + foldoutToggle = EditorGUILayout.Foldout(foldoutToggle, foldoutName, true); + + if (foldoutToggle) + { + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(field); + if (EditorGUI.EndChangeCheck()) + ForceDatabaseRefresh(); + drawer.OnInspectorGUI(field); + EditorGUI.indentLevel--; + } + } + + if (useDefaultDatabases.boolValue) + { + var settings = TextAnimatorSettings.Instance; + if (!settings) + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.HelpBox("Text Animator Settings not found. Please re-run the setup wizard or click the following button.", MessageType.Error); + if (GUILayout.Button("Fix it for me", GUILayout.Width(80))) + { + TextAnimatorSetupWindow.FixSettingsFileNotFound(); + } + EditorGUILayout.EndHorizontal(); + } + else + { + if(settingsObject == null) settingsObject = new SerializedObject(settings); + + //Draws default settings instead + SerializedProperty databaseBehaviorsField = settingsObject.FindProperty(nameof(settings.behaviors)).FindPropertyRelative(nameof(settings.behaviors.defaultDatabase)); + SerializedProperty databaseAppearancesField = settingsObject.FindProperty(nameof(settings.appearances)).FindPropertyRelative(nameof(settings.appearances.defaultDatabase)); + SerializedProperty databaseActionsField = settingsObject.FindProperty(nameof(settings.actions)).FindPropertyRelative(nameof(settings.actions.defaultDatabase)); + DrawDatabaseField(ref editAppearances, "Appearances/Disappearances", databaseAppearancesField, databaseAppearancesDrawer); + DrawDatabaseField(ref editBehaviors, "Behaviors", databaseBehaviorsField, databaseBehaviorsDrawer); + DrawDatabaseField(ref editActions, "Actions", databaseActionsField, databaseActionsDrawer); + } + } + else + { + DrawDatabaseField(ref editAppearances, "Appearances/Disappearances", databaseAppearancesField, databaseAppearancesDrawer); + DrawDatabaseField(ref editBehaviors, "Behaviors", databaseBehaviorsField, databaseBehaviorsDrawer); + DrawDatabaseField(ref editActions, "Actions", databaseActionsField, databaseActionsDrawer); + } + + EditorGUI.indentLevel--; + } + + #endregion + + #region Main Settings + void DrawMainSettings() + { + EditorGUILayout.LabelField("Main Settings", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(typewriterStartsAutomatically); + if(typewriterStartsAutomatically.boolValue) + EditorGUILayout.LabelField("(Remember to add a Typewriter component!)", EditorStyles.wordWrappedMiniLabel); + + EditorGUILayout.PropertyField(useDynamicScaling); + if(useDynamicScaling.boolValue) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(referenceFontSize); + EditorGUI.indentLevel--; + } + + EditorGUILayout.PropertyField(animationLoop); + if ((int)animationLoop.intValue != (int)AnimationLoop.Script) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(timeScale); + EditorGUI.indentLevel--; + } + + EditorGUILayout.PropertyField(isResettingTimeOnNewText); + + EditorGUI.indentLevel--; + } + #endregion + + public override void OnInspectorGUI() + { + GUI.enabled = false; + EditorGUILayout.PropertyField(m_Script); + GUI.enabled = true; + //--- Draws Text Animator --- + + DrawPlayback(); + EditorGUILayout.Space(); + + DrawMainSettings(); + EditorGUILayout.Space(); + + DrawDefaultTags(); + EditorGUILayout.Space(); + + DrawDatabases(); + EditorGUILayout.Space(); + + //--- Draws the rest --- + //(in case of custom inspector from child classes etc.) + DrawPropertiesExcluding(serializedObject, excludedProperties); + + if(serializedObject.hasModifiedProperties) + serializedObject.ApplyModifiedProperties(); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta new file mode 100644 index 0000000..d7b2280 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TAnimCoreDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bcb43c683fc0e47569981a9ff0d346bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs new file mode 100644 index 0000000..54aacca --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs @@ -0,0 +1,89 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core.Editors +{ + [CustomEditor(typeof(TypewriterByCharacter), true)] + class TypewriterByCharacterDrawer : TypewriterCoreDrawer + { + SerializedProperty waitForNormalChars; + SerializedProperty waitLong; + SerializedProperty waitMiddle; + SerializedProperty avoidMultiplePunctuactionWait; + SerializedProperty waitForNewLines; + SerializedProperty waitForLastCharacter; + + PropertyWithDifferentLabel useTypewriterWaitForDisappearances; + PropertyWithDifferentLabel disappearanceWaitTime; + PropertyWithDifferentLabel disappearanceSpeedMultiplier; + + protected override void OnEnable() + { + base.OnEnable(); + + waitForNormalChars = serializedObject.FindProperty("waitForNormalChars"); + waitLong = serializedObject.FindProperty("waitLong"); + waitMiddle = serializedObject.FindProperty("waitMiddle"); + avoidMultiplePunctuactionWait = serializedObject.FindProperty("avoidMultiplePunctuactionWait"); + waitForNewLines = serializedObject.FindProperty("waitForNewLines"); + waitForLastCharacter = serializedObject.FindProperty("waitForLastCharacter"); + useTypewriterWaitForDisappearances = new PropertyWithDifferentLabel(serializedObject, "useTypewriterWaitForDisappearances", "Use Typewriter Wait Times"); + disappearanceSpeedMultiplier = new PropertyWithDifferentLabel(serializedObject, "disappearanceSpeedMultiplier", "Typewriter Speed Multiplier"); + disappearanceWaitTime = new PropertyWithDifferentLabel(serializedObject, "disappearanceWaitTime", "Disappearances Wait"); + } + + protected override string[] GetPropertiesToExclude() + { + string[] newProperties = new string[] { + "script", + "waitForNormalChars", + "waitLong", + "waitMiddle", + "avoidMultiplePunctuactionWait", + "waitForNewLines", + "waitForLastCharacter", + "useTypewriterWaitForDisappearances", + "disappearanceSpeedMultiplier", + "disappearanceWaitTime" + }; + + string[] baseProperties = base.GetPropertiesToExclude(); + + string[] mergedArray = new string[newProperties.Length + baseProperties.Length]; + + for (int i = 0; i < baseProperties.Length; i++) + { + mergedArray[i] = baseProperties[i]; + } + + for (int i = 0; i < newProperties.Length; i++) + { + mergedArray[i + baseProperties.Length] = newProperties[i]; + } + + return mergedArray; + } + + protected override void OnTypewriterSectionGUI() + { + EditorGUILayout.PropertyField(waitForNormalChars); + EditorGUILayout.PropertyField(waitLong); + EditorGUILayout.PropertyField(waitMiddle); + + EditorGUILayout.PropertyField(avoidMultiplePunctuactionWait); + EditorGUILayout.PropertyField(waitForNewLines); + EditorGUILayout.PropertyField(waitForLastCharacter); + } + + protected override void OnDisappearanceSectionGUI() + { + useTypewriterWaitForDisappearances.PropertyField(); + + if (useTypewriterWaitForDisappearances.property.boolValue) + disappearanceSpeedMultiplier.PropertyField(); + else + disappearanceWaitTime.PropertyField(); + + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta new file mode 100644 index 0000000..0049108 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByCharacterDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 867d2cd807cf4028ad7222663d1d20dc +timeCreated: 1679750297 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs new file mode 100644 index 0000000..2ba50d6 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs @@ -0,0 +1,59 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core.Editors +{ + [CustomEditor(typeof(TypewriterByWord), true)] + class TypewriterByWordDrawer : TypewriterCoreDrawer + { + SerializedProperty waitForNormalWord; + SerializedProperty waitForWordWithPunctuation; + PropertyWithDifferentLabel disappearanceDelay; + + protected override void OnEnable() + { + base.OnEnable(); + + waitForNormalWord = serializedObject.FindProperty("waitForNormalWord"); + waitForWordWithPunctuation = serializedObject.FindProperty("waitForWordWithPunctuation"); + disappearanceDelay = new PropertyWithDifferentLabel(serializedObject, "disappearanceDelay", "Disappearances Wait"); + } + + protected override string[] GetPropertiesToExclude() + { + string[] newProperties = new string[] { + "script", + "waitForNormalWord", + "waitForWordWithPunctuation", + "disappearanceDelay", + }; + + string[] baseProperties = base.GetPropertiesToExclude(); + + string[] mergedArray = new string[newProperties.Length + baseProperties.Length]; + + for (int i = 0; i < baseProperties.Length; i++) + { + mergedArray[i] = baseProperties[i]; + } + + for (int i = 0; i < newProperties.Length; i++) + { + mergedArray[i + baseProperties.Length] = newProperties[i]; + } + + return mergedArray; + } + + protected override void OnTypewriterSectionGUI() + { + EditorGUILayout.PropertyField(waitForNormalWord); + EditorGUILayout.PropertyField(waitForWordWithPunctuation); + } + + protected override void OnDisappearanceSectionGUI() + { + disappearanceDelay.PropertyField(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta new file mode 100644 index 0000000..b5dd0d5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterByWordDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 89bf62aedbe94754920fc2335a4fc7d0 +timeCreated: 1688982269 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs new file mode 100644 index 0000000..727afb5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs @@ -0,0 +1,253 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core.Editors +{ + [CustomEditor(typeof(TypewriterCore), true)] + class TypewriterCoreDrawer : Editor + { + SerializedProperty showLettersDinamically; + SerializedProperty startTypewriterMode; + SerializedProperty hideAppearancesOnSkip; + SerializedProperty triggerEventsOnSkip; + SerializedProperty disappearanceOrientation; + + SerializedProperty onTextShowed; + SerializedProperty onTypewriterStart; + SerializedProperty onCharacterVisible; + SerializedProperty onTextDisappeared; + SerializedProperty onMessage; + + SerializedProperty resetTypingSpeedAtStartup; + + string[] propertiesToExclude = new string[0]; + + + protected struct PropertyWithDifferentLabel + { + public SerializedProperty property; + public GUIContent label; + + public PropertyWithDifferentLabel(SerializedObject obj, string property, string label) + { + this.property = obj.FindProperty(property); + this.label = new GUIContent(label); + } + + public void PropertyField() + { + EditorGUILayout.PropertyField(property, label); + } + } + + + protected virtual string[] GetPropertiesToExclude() + { + return new string[] { + "m_Script", + "useTypeWriter", + "startTypewriterMode", + "hideAppearancesOnSkip", + "triggerEventsOnSkip", + "onTextShowed", + "onTypewriterStart", + "onCharacterVisible", + "resetTypingSpeedAtStartup", + "onTextDisappeared", + "disappearanceOrientation", + "onMessage", + }; + } + + protected virtual void OnEnable() + { + showLettersDinamically = serializedObject.FindProperty("useTypeWriter"); + startTypewriterMode = serializedObject.FindProperty("startTypewriterMode"); + hideAppearancesOnSkip = serializedObject.FindProperty("hideAppearancesOnSkip"); + triggerEventsOnSkip = serializedObject.FindProperty("triggerEventsOnSkip"); + disappearanceOrientation = serializedObject.FindProperty("disappearanceOrientation"); + + + onTextShowed = serializedObject.FindProperty("onTextShowed"); + onTypewriterStart = serializedObject.FindProperty("onTypewriterStart"); + onCharacterVisible = serializedObject.FindProperty("onCharacterVisible"); + onTextDisappeared = serializedObject.FindProperty("onTextDisappeared"); + onMessage = serializedObject.FindProperty("onMessage"); + + resetTypingSpeedAtStartup = serializedObject.FindProperty("resetTypingSpeedAtStartup"); + + propertiesToExclude = GetPropertiesToExclude(); + } + + bool ButtonPlaymode(string label) + { + bool prevGUI = GUI.enabled; + GUI.enabled = Application.isPlaying; + + bool value = GUILayout.Button(label, EditorStyles.miniButton, GUILayout.MaxWidth(70)); + + GUI.enabled = prevGUI; + return value; + } + + public override void OnInspectorGUI() + { + + { + EditorGUILayout.LabelField("Main Settings", EditorStyles.boldLabel); + + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(showLettersDinamically); + + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + + //Typewriter settings + + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Typewriter", EditorStyles.boldLabel); + + if (showLettersDinamically.boolValue) + { + if (ButtonPlaymode("Start")) + { + ((TypewriterCore)target).StartShowingText(true); + } + if (ButtonPlaymode("Stop")) + { + ((TypewriterCore)target).StopShowingText(); + } + } + + EditorGUILayout.EndHorizontal(); + } + + if (showLettersDinamically.boolValue) + { + EditorGUI.indentLevel++; + + EditorGUILayout.PropertyField(startTypewriterMode); + + EditorGUILayout.PropertyField(resetTypingSpeedAtStartup); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Typewriter Skip", EditorStyles.boldLabel); + + + if (ButtonPlaymode("Skip")) + { + ((TypewriterCore)target).SkipTypewriter(); + } + EditorGUILayout.EndHorizontal(); + + + EditorGUILayout.PropertyField(hideAppearancesOnSkip); + EditorGUILayout.PropertyField(triggerEventsOnSkip); + + EditorGUI.indentLevel--; + + } + else + { + GUI.enabled = false; + EditorGUILayout.LabelField("The typewriter is disabled"); + GUI.enabled = true; + } + + EditorGUILayout.Space(); + + //Events + { + EditorGUILayout.LabelField("Events", EditorStyles.boldLabel); + + // foldoutEvents = EditorGUILayout.Foldout(foldoutEvents, "Events"); + + //if (foldoutEvents) + { + EditorGUILayout.PropertyField(onTextShowed); + EditorGUILayout.PropertyField(onTextDisappeared); + + //GUI.enabled = showLettersDinamically.boolValue; + + if (showLettersDinamically.boolValue) + { + + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(onTypewriterStart); + EditorGUILayout.PropertyField(onCharacterVisible); + EditorGUILayout.PropertyField(onMessage); + + EditorGUI.indentLevel--; + } + + //GUI.enabled = true; + } + + } + + EditorGUILayout.Space(); + + //Typewriter + { + EditorGUILayout.LabelField("Typewriter Wait", EditorStyles.boldLabel); + + EditorGUI.indentLevel++; + OnTypewriterSectionGUI(); + EditorGUI.indentLevel--; + } + + EditorGUILayout.Space(); + + //Disappearance + { + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("Disappearances", EditorStyles.boldLabel); + + if (ButtonPlaymode("Start")) + { + ((TypewriterCore)target).StartDisappearingText(); + } + if (ButtonPlaymode("Stop")) + { + ((TypewriterCore)target).StopDisappearingText(); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUI.indentLevel++; + GUI.enabled = false; + EditorGUILayout.LabelField("To start disappearances, please call the 'StartDisappearingText()' method. See the docs for more.", EditorStyles.wordWrappedMiniLabel); + GUI.enabled = true; + + EditorGUILayout.PropertyField(disappearanceOrientation); + + OnDisappearanceSectionGUI(); + + EditorGUI.indentLevel--; + } + + //Draws parent without the children (so, TanimPlayerBase can have a custom inspector) + DrawPropertiesExcluding(serializedObject, propertiesToExclude); + + + if (serializedObject.hasModifiedProperties) + { + serializedObject.ApplyModifiedProperties(); + } + + } + + protected virtual void OnTypewriterSectionGUI() + { + + } + + protected virtual void OnDisappearanceSectionGUI() + { + + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta new file mode 100644 index 0000000..259f154 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Components/TypewriterCoreDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c505a7fbdbbf6604f9f76bf0afbec264 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta new file mode 100644 index 0000000..924f85d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2072e32578cb41c696fbc87874010a2b +timeCreated: 1680343888 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs new file mode 100644 index 0000000..9d72008 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs @@ -0,0 +1,51 @@ +using Febucci.UI.Effects; +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core +{ + [CustomPropertyDrawer(typeof(ColorCurveProperty))] + public class ColorCurvePropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty enabled = property.FindPropertyRelative(nameof(ColorCurve.enabled)); + Rect lineByLine = position; + lineByLine.height = EditorGUIUtility.singleLineHeight; + + Rect enabledRect = new Rect(lineByLine.xMax-EditorGUIUtility.singleLineHeight, lineByLine.y, EditorGUIUtility.singleLineHeight, lineByLine.height); + Rect expandedRect = new Rect(lineByLine.x, lineByLine.y, position.width-EditorGUIUtility.singleLineHeight, lineByLine.height); + enabled.boolValue = GUI.Toggle(enabledRect, enabled.boolValue, GUIContent.none); + GUI.color = enabled.boolValue ? Color.white : Color.gray; + + property.isExpanded = EditorGUI.Foldout(expandedRect, property.isExpanded, label, true); + GUI.color = Color.white; + if(!property.isExpanded) return; + GUI.enabled = enabled.boolValue; + + // -- inner area smaller --- + position.y = lineByLine.yMax; + position.height -= lineByLine.height; + position.x += 15; + position.width-=15; + + lineByLine.x = position.x; + lineByLine.width = position.width; + lineByLine.y += lineByLine.height; + + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.colorOverTime))); + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.duration))); + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(ColorCurve.waveSize))); + GUI.enabled = true; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return (property.isExpanded) + ? EditorGUIUtility.singleLineHeight * 4 + : EditorGUIUtility.singleLineHeight; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta new file mode 100644 index 0000000..5c71ff3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/ColorCurvePropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 66208123db9e4e77b655117ebcc45e29 +timeCreated: 1680346774 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs new file mode 100644 index 0000000..7e32fb5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs @@ -0,0 +1,49 @@ +using Febucci.UI.Effects; +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core +{ + [CustomPropertyDrawer(typeof(EmissionCurveProperty))] + public class EmissionCurvePropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Rect lineByLine = position; + lineByLine.height = EditorGUIUtility.singleLineHeight; + property.isExpanded = EditorGUI.Foldout(lineByLine, property.isExpanded, label, true); + if(!property.isExpanded) return; + + // -- inner area smaller --- + position.y = lineByLine.yMax; + position.height -= lineByLine.height; + position.x += 15; + position.width-=15; + + lineByLine.x = position.x; + lineByLine.width = position.width; + lineByLine.y += lineByLine.height; + + // -- cycles -- + SerializedProperty cycles = property.FindPropertyRelative(nameof(EmissionCurve.cycles)); + Rect half = lineByLine; + half.width /= 2f; + EditorGUI.PropertyField(half, cycles); + half.x += half.width + 5; + half.width -= 5; + EditorGUI.LabelField(half,cycles.intValue > 0 ? "cycles until end" : "effect is infinite"); + + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(EmissionCurve.duration))); + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(EmissionCurve.weightOverTime))); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return property.isExpanded + ? EditorGUIUtility.singleLineHeight*4 + : EditorGUIUtility.singleLineHeight; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta new file mode 100644 index 0000000..6b2ec5c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/EmissionCurvePropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4d090238fa054eed8276f4ad839ea8d0 +timeCreated: 1680343908 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs new file mode 100644 index 0000000..12fd08f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs @@ -0,0 +1,51 @@ +using Febucci.UI.Effects; +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core +{ + [CustomPropertyDrawer(typeof(FloatCurveProperty))] + public class FloatCurvePropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + SerializedProperty enabled = property.FindPropertyRelative(nameof(FloatCurve.enabled)); + Rect lineByLine = position; + lineByLine.height = EditorGUIUtility.singleLineHeight; + + Rect enabledRect = new Rect(lineByLine.xMax-EditorGUIUtility.singleLineHeight, lineByLine.y, EditorGUIUtility.singleLineHeight, lineByLine.height); + Rect expandedRect = new Rect(lineByLine.x, lineByLine.y, position.width-EditorGUIUtility.singleLineHeight, lineByLine.height); + enabled.boolValue = GUI.Toggle(enabledRect, enabled.boolValue, GUIContent.none); + GUI.color = enabled.boolValue ? Color.white : Color.gray; + + property.isExpanded = EditorGUI.Foldout(expandedRect, property.isExpanded, label, true); + GUI.color = Color.white; + if(!property.isExpanded) return; + GUI.enabled = enabled.boolValue; + + // -- inner area smaller --- + position.y = lineByLine.yMax; + position.height -= lineByLine.height; + position.x += 15; + position.width-=15; + + lineByLine.x = position.x; + lineByLine.width = position.width; + lineByLine.y += lineByLine.height; + + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.amplitude))); + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.waveSize))); + lineByLine.y += lineByLine.height; + EditorGUI.PropertyField(lineByLine, property.FindPropertyRelative(nameof(FloatCurve.weightOverTime))); + GUI.enabled = true; + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return (property.isExpanded) + ? EditorGUIUtility.singleLineHeight * 4 + : EditorGUIUtility.singleLineHeight; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta new file mode 100644 index 0000000..537c83e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Properties/FloatCurvePropertyDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4894f9d8534334cd7a2f30c70b7bf59f +timeCreated: 1680343908 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta new file mode 100644 index 0000000..4f2fa4a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92e50da885b094e4fb85655841952277 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta new file mode 100644 index 0000000..47f126a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c2f725852edc492b8576fab496a36bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs new file mode 100644 index 0000000..46ce4fa --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs @@ -0,0 +1,15 @@ +using Febucci.UI.Actions; +using UnityEditor; + +namespace Febucci.UI.Core +{ + [CustomEditor(typeof(ActionScriptableBase), true)] + class ActionScriptableDrawer : Editor + { + GenericSharedDrawer drawer = new GenericSharedDrawer(true); + public override void OnInspectorGUI() + { + drawer.OnInspectorGUI(serializedObject); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta new file mode 100644 index 0000000..1da562b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Actions/ActionScriptableDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2200ec37f7bdf40a2aebe58049fd175f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta new file mode 100644 index 0000000..dd12f4b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b590f529b1e874522b94d7c65ad0dc13 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs new file mode 100644 index 0000000..153e6af --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs @@ -0,0 +1,15 @@ +using Febucci.UI.Effects; +using UnityEditor; + +namespace Febucci.UI.Core +{ + [CustomEditor(typeof(AnimationScriptableBase), true)] + class AnimScriptableDrawer : Editor + { + GenericSharedDrawer drawer = new GenericSharedDrawer(true); + public override void OnInspectorGUI() + { + drawer.OnInspectorGUI(serializedObject); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta new file mode 100644 index 0000000..452e793 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Animations/AnimScriptableDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 475624099e3c24c10a455adc583e9044 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta new file mode 100644 index 0000000..42bc15b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 322f146cc940c4028b1d7a11a84d2e89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs new file mode 100644 index 0000000..4892cf8 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs @@ -0,0 +1,17 @@ +using Febucci.UI.Actions; +using Febucci.UI.Core.Parsing; +using UnityEditor; + +namespace Febucci.UI.Core +{ + [CustomEditor(typeof(ActionDatabase), true)] + class ActionDatabaseScriptableDrawer : Editor + { + DatabaseSharedDrawer drawer = new DatabaseSharedDrawer(); + + public override void OnInspectorGUI() + { + drawer.OnInspectorGUI(serializedObject); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta new file mode 100644 index 0000000..99b77bc --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/ActionDatabaseScriptableDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cef03566441d243eca1e263c1a8d95ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs new file mode 100644 index 0000000..880f8d9 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs @@ -0,0 +1,16 @@ +using Febucci.UI.Effects; +using UnityEditor; + +namespace Febucci.UI.Core +{ + [CustomEditor(typeof(AnimationsDatabase), true)] + class AnimDatabaseScriptableDrawer : Editor + { + DatabaseSharedDrawer drawer = new DatabaseSharedDrawer(); + + public override void OnInspectorGUI() + { + drawer.OnInspectorGUI(serializedObject); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta new file mode 100644 index 0000000..6f43652 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimDatabaseScriptableDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d5e9601a30fe4cd8a211bde9711dd42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs new file mode 100644 index 0000000..06e9c26 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs @@ -0,0 +1,104 @@ +using Febucci.UI.Effects; +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core +{ + [System.Serializable] + class AnimationElementDrawer + { + public SerializedProperty propertyScriptable; + GenericSharedDrawer drawer; + private GUIContent scriptableNameContent; + public bool expanded; + public bool somethingChanged; + public int wantsToDelete; + + public AnimationElementDrawer(SerializedProperty propertyArrayElementPair) + { + propertyScriptable = propertyArrayElementPair; + drawer = new GenericSharedDrawer(false); + expanded = false; + wantsToDelete = 0; + scriptableNameContent = new GUIContent("Scriptable"); + } + + public bool hasScriptable => propertyScriptable.objectReferenceValue != null; + + public void Draw() + { + somethingChanged = false; + bool drawWarning = false; + string foldoutName; + if (propertyScriptable.objectReferenceValue is ITagProvider tag) + { + if (string.IsNullOrEmpty(tag.TagID)) + { + drawWarning = true; + foldoutName = "[!] Empty Tag"; + } + else + { + foldoutName = tag.TagID; + } + } + else + { + drawWarning = true; + foldoutName = "[!] Empty Slot"; + } + + EditorGUILayout.BeginHorizontal(); + expanded = EditorGUILayout.Foldout(expanded, foldoutName, true); + GUI.backgroundColor = wantsToDelete == 1 ? Color.red : Color.white; + GUI.enabled = expanded; + if (GUILayout.Button(wantsToDelete == 1 ? "Confirm?" : "Delete", EditorStyles.helpBox, GUILayout.Width(55))) + { + wantsToDelete++; + } + GUI.enabled = true; + if (!expanded) + wantsToDelete = 0; + + GUI.backgroundColor = Color.white; + + if(drawWarning) + EditorGUILayout.HelpBox("Invalid", MessageType.Warning); + EditorGUILayout.EndHorizontal(); + + if (expanded) + { + EditorGUI.indentLevel++; + DrawInfo(); + DrawBody(); + EditorGUI.indentLevel--; + } + } + + + void DrawInfo() + { + EditorGUILayout.BeginHorizontal(); + EditorGUI.BeginChangeCheck(); + EditorGUILayout.PropertyField(propertyScriptable, scriptableNameContent); + if (EditorGUI.EndChangeCheck()) + { + //refreshes drawer + somethingChanged = true; + drawer = new GenericSharedDrawer(false); + + if (propertyScriptable.serializedObject.hasModifiedProperties) + propertyScriptable.serializedObject.ApplyModifiedProperties(); + + expanded = true; + } + EditorGUILayout.EndHorizontal(); + } + + void DrawBody() + { + drawer.OnInspectorGUI(propertyScriptable); + } + + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta new file mode 100644 index 0000000..a33c496 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/AnimationElementDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 44ca8d8eac0743e88fa01e22338f71f7 +timeCreated: 1674559685 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs new file mode 100644 index 0000000..7bff073 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs @@ -0,0 +1,73 @@ +using UnityEngine; +using UnityEditor; + +namespace Febucci.UI.Core +{ + //handles drawing of each single effect + //with possibility to expand and directly draw the scriptable object as well + [System.Serializable] + class DatabaseSharedDrawer : SharedDrawer + { + SerializedProperty pairsProperty; + [SerializeField] AnimationElementDrawer[] elements; + + protected override void OnEnabled(SerializedObject baseObject) + { + base.OnEnabled(baseObject); + pairsProperty = baseObject.FindProperty("data"); + MatchEffectsWithArray(); + } + + void MatchEffectsWithArray() + { + if (elements == null || elements.Length != pairsProperty.arraySize) + { + elements = new AnimationElementDrawer[pairsProperty.arraySize]; + for (int i = 0; i < elements.Length; i++) + { + elements[i] = new AnimationElementDrawer(pairsProperty.GetArrayElementAtIndex(i)); + } + } + } + + protected override void _OnInspectorGUI() + { + MatchEffectsWithArray(); //putting this one here since might change after Undo + + for (var i = 0; i < elements.Length; i++) + { + var effect = elements[i]; + effect.Draw(); + if (effect.wantsToDelete >= 2) + { + pairsProperty.DeleteArrayElementAtIndex(i); + MatchEffectsWithArray(); + ApplyChanges(); + return; + } + + if (effect.somethingChanged) + { + ApplyChanges(); + effect.somethingChanged = false; + } + } + + //Adds new effect if there isn't any available slot already //TODO check every position + if (elements.Length == 0 || elements[elements.Length - 1].hasScriptable) + { + if(EditorGUILayout.Foldout(false, "->[Add new effect]", true)) + { + pairsProperty.InsertArrayElementAtIndex(pairsProperty.arraySize); + MatchEffectsWithArray(); + //Sets last element as empty + elements[elements.Length - 1].propertyScriptable.objectReferenceValue = null; + ApplyChanges(); + elements[elements.Length - 1].expanded = true; + return; + } + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta new file mode 100644 index 0000000..14db8f9 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Scriptables/Database/DatabaseSharedDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c02119de7d2e84ba9ad22ff6b6c23dfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta new file mode 100644 index 0000000..8c8d93e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 18ea5fac169d489ebc9f01ebedbd65be +timeCreated: 1677691490 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs new file mode 100644 index 0000000..97c8978 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Febucci.UI +{ + [System.Serializable] + internal class TextAnimatorInstallationData : ScriptableObject + { + [SerializeField] internal string latestVersion = "None"; //stores the latest version + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta new file mode 100644 index 0000000..147a6fc --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9e2a5ebb2c224910b14d053825d88b4a +timeCreated: 1678369185 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs new file mode 100644 index 0000000..60f8e98 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs @@ -0,0 +1,52 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI +{ + [CustomEditor(typeof(TextAnimatorInstallationData))] + internal class TextAnimatorInstallationDataDrawer : Editor + { + TextAnimatorInstallationData script; + + void OnEnable() + { + script = (TextAnimatorInstallationData)target; + } + + public override void OnInspectorGUI() + { + EditorGUILayout.HelpBox("This file is used by Text Animator to locate your installation path, so that you can move the folder anywhere you want, rename it and better organize your effects. Enjoy!", MessageType.None); + EditorGUILayout.Space(); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Installed version:"); + EditorGUILayout.LabelField(script.latestVersion); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + if (TextAnimatorSettings.Instance) + { + EditorGUILayout.HelpBox("If you wanted to edit the default settings instead, you can select the file via the button below.", MessageType.None); + if (GUILayout.Button("Select Settings")) + { + Selection.activeObject = TextAnimatorSettings.Instance; + } + } + else + { + EditorGUILayout.HelpBox("It seems you don't have a settings file, which is necessary for Text Animator. Do you want to fix it now?", MessageType.Warning); + if (GUILayout.Button("Fix it for me")) + { + TextAnimatorSetupWindow.FixSettingsFileNotFound(); + Selection.activeObject = TextAnimatorSettings.Instance; + } + } + + EditorGUILayout.Space(); + if (GUILayout.Button("Open About Window")) + { + TextAnimatorSetupWindow.Menu_ShowWindowAlways(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta new file mode 100644 index 0000000..0647367 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorInstallationDataDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 88089012e3cf74143abc644150aba565 +timeCreated: 1678369185 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs new file mode 100644 index 0000000..4db1bad --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs @@ -0,0 +1,30 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI +{ + [CustomEditor(typeof(TextAnimatorSettings))] + public class TextAnimatorSettingsDrawer : Editor + { + bool extraSettings = false; + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + EditorGUILayout.Space(); + extraSettings = EditorGUILayout.Foldout(extraSettings, "Extra Settings", EditorStyles.foldoutHeader); + if (extraSettings) + { + if (GUILayout.Button("Reset Default Effects and Actions")) + { + if (EditorUtility.DisplayDialog("Text Animator", + "Are you sure you want to reset the default effects and actions?", "Yes", "No")) + { + TextAnimatorSetupWindow.ResetToBuiltIn(); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta new file mode 100644 index 0000000..b03ae60 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSettingsDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 67c87275cac3743da833880fb7431757 +timeCreated: 1677691499 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs new file mode 100644 index 0000000..810862c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs @@ -0,0 +1,486 @@ +using System; +using Febucci.UI.Core; +using UnityEditor; +using UnityEngine; +using System.Linq; +using Febucci.UI.Actions; +using Febucci.UI.Effects; + +namespace Febucci.UI +{ + public class TextAnimatorSetupWindow : EditorWindow + { + const string currentVersion = "2.0.2"; + const string path_defaultInstallation = "Assets/Plugins/Febucci/Text Animator"; + + TextAnimatorInstallationData installationData; + bool settingsFileFound; + + + /// + /// Called whenever the editor is loaded, + /// e.g. useful for checking if the asset is imported + /// for the first time or after an update + /// + [InitializeOnLoadMethod] + internal static void TryShowingWindowOnLoad() + { + EditorApplication.delayCall += () => ShowWindow(true);; + } + + #region Menu Items + + const string menuParent = "Tools/Febucci/TextAnimator/"; + + [MenuItem(menuParent + "About Window", priority = 1)] + internal static void Menu_ShowWindowAlways() => ShowWindow(false); + + [MenuItem(menuParent + "Utils/Select Settings SO", priority = 11)] + static void Menu_SelectSettingsScriptable() + { + if (TextAnimatorSettings.Instance) + { + Selection.activeObject = TextAnimatorSettings.Instance; + } + else + { + if (EditorUtility.DisplayDialog("Settings not found", + "Text Animator's settings file has not been found. Do you want to run the setup and create it automatically?", + "Yes", "No")) + { + FixSettingsFileNotFound(); + Selection.activeObject = TextAnimatorSettings.Instance; + } + } + } + + + #endregion + + #region Window + + static void ShowWindow(bool onlyOnUpdate) + { + // already installed + if (IsTextAnimatorInstalled(out var installationGUID)) + { + string installationPath = AssetDatabase.GUIDToAssetPath(installationGUID); + var installationData = AssetDatabase.LoadAssetAtPath(installationPath); + + // same version installed, no need to show the window + if (onlyOnUpdate && installationData.latestVersion == currentVersion) + { + return; + } + + //--- Updates to new version --- + UpdateProject(installationData); + } + else + { + //--- First time import --- + //Does nothing, asking the user to install with one click + } + + //Initializes the asset for the first time + var window = (TextAnimatorSetupWindow)GetWindow(typeof(TextAnimatorSetupWindow), true, + "Text Animator Setup", true); + window.maxSize = new Vector2(351, 485); + window.minSize = window.maxSize; + window.settingsFileFound = TextAnimatorSettings.Instance; + } + + bool triedInstallingOnce; + void OnGUI() + { + if (!installationData) + { + if (!triedInstallingOnce) + { + EditorGUILayout.LabelField("Installing...."); + triedInstallingOnce = true; + installationData = GetOrCreateInstallationData(); + Repaint(); + } + else + { + EditorGUILayout.LabelField("Unable to install package, please try to reopen this window from the Tools->Febucci menu"); + return; + } + } + + //--- HEADER --- + GUILayout.Box(TexturesLoader.AboutLogo, EditorStyles.wordWrappedLabel); + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Welcome!", EditorStyles.boldLabel); + EditorGUILayout.LabelField("Thank you for using Text Animator. Have fun bringing your projects to life!", + EditorStyles.wordWrappedLabel); + + EditorGUILayout.Space(); + + //--- VERSION STATUS --- + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("Version:", EditorStyles.boldLabel); + EditorGUILayout.LabelField(installationData.latestVersion, EditorStyles.whiteMiniLabel); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Space(); + + if (!settingsFileFound) + { + FixSettingsFileNotFound(); + settingsFileFound = true; + } + + // --- LINKS etc. --- + EditorGUILayout.LabelField("Online Resources", EditorStyles.boldLabel); + EditorGUILayout.LabelField("Here are some useful resources.", EditorStyles.label); + + EditorGUILayout.BeginHorizontal(); + const string baseUrl = "https://febucci.com/text-animator-unity/"; + if (GUILayout.Button("What's New")) + { + Application.OpenURL($"{baseUrl}changelog/"); + } + + if (GUILayout.Button("Documentation")) + { + Application.OpenURL($"{baseUrl}docs/"); + } + + if (GUILayout.Button("Support")) + { + Application.OpenURL($"{baseUrl}support/"); + } + + EditorGUILayout.EndHorizontal(); + + + //--Extras-- + EditorGUILayout.LabelField("Extras", EditorStyles.boldLabel); + + EditorGUILayout.LabelField("Would you like to be included in a future Text Animator showcase?", + EditorStyles.wordWrappedMiniLabel); + if (GUILayout.Button("-> Submit your game/project")) + Application.OpenURL("https://www.febucci.com/text-animator-unity/showcase/"); + + EditorGUILayout.Space(1); + EditorGUILayout.LabelField("Please consider writing a review for the asset. It takes one minute but it really helps. Thanks!", + EditorStyles.wordWrappedMiniLabel); + if (GUILayout.Button("♥ Review on the Asset Store")) + Application.OpenURL("https://assetstore.unity.com/packages/slug/158707"); + + + GUILayout.Space(5); + EditorGUILayout.LabelField("Cheers! @febucci", EditorStyles.centeredGreyMiniLabel); + } + + #endregion + + #region Installation + + static TextAnimatorInstallationData GetOrCreateInstallationData() + { + if (IsTextAnimatorInstalled(out var installationGuid)) + { + return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(installationGuid)); + } + + var data = _CreateScriptableAssetAtPath(path_defaultInstallation + "/Data", + "InstallationData"); + data.latestVersion = currentVersion; + EditorUtility.SetDirty(data); + AssetDatabase.SaveAssets(); + + return data; + } + + static bool IsTextAnimatorInstalled(out string installationGUID) + { + string[] path = AssetDatabase.FindAssets($"t:{nameof(TextAnimatorInstallationData)}"); + installationGUID = path.Length > 0 ? path[0] : string.Empty; + return path.Length > 0; + } + + static bool TryGetInstallationFolder(out string result) + { + if (!IsTextAnimatorInstalled(out var installationGUID)) + { + Debug.LogError("Unable to locate Text Animator's Installation file. Please re-run the setup."); + result = null; + return false; + } + + result = AssetDatabase.GUIDToAssetPath(installationGUID); + result = result.Substring(0, result.LastIndexOf('/')); + return true; + } + + #endregion + + /// + /// Creates built-in effects databases and assigns it to the settings file as default. + /// + /// + /// In case the settings file doesn't exist, it'll be created as well. + /// In case the built-in effects or databases already exist, they'll be overwritten. + /// + public static void ResetToBuiltIn() + { + //makes sure the asset is installed + GetOrCreateInstallationData(); + if (!TryGetInstallationFolder(out string installationFolder)) + { + Debug.LogError("Something went wrong in locating TextAnimator's installation data."); + return; + } + + var settings = GetOrCreateSettings(installationFolder); + CreateDefaultDatabases(installationFolder, + out var beh, + out var app, + out var act); + AssignDatabasesToSettings(settings, beh, app, act); + } + + #region Databases and Tags + + /// + /// Creates default effects and actions databases. + /// + /// + /// + /// + /// + /// In case they already exist, they'll get overwritten. + static void CreateDefaultDatabases(string installationFolder, out AnimationsDatabase behaviors, out AnimationsDatabase appearances, out ActionDatabase actions) + { + string progressTitle = "Text Animator"; + + // --- DATABASES --- + EditorUtility.DisplayProgressBar(progressTitle, "Creating Behaviors Database", 1/4f); + behaviors = _CreateDatabase(installationFolder, "Behaviors", "Behaviors Database", EffectCategory.Behaviors); + + EditorUtility.DisplayProgressBar(progressTitle, "Creating Appearances Database", 2/4f); + appearances = _CreateDatabase(installationFolder, "Appearances", "Appearances Database", EffectCategory.Appearances); + + EditorUtility.DisplayProgressBar(progressTitle, "Creating Actions Database", 3/4f); + actions = _CreateDatabase(installationFolder, "Actions", "Actions Database", EffectCategory.None); + + AssetDatabase.SaveAssets(); + EditorUtility.ClearProgressBar(); + } + + public static DatabaseType _CreateDatabase(string installationFolder, string folderName, string fileName, EffectCategory category) + where DatabaseType : Database where ElementType : ScriptableObject, ITagProvider + { + string databasePath = installationFolder + $"/{folderName}"; + + var database = _CreateScriptableAssetAtPath(databasePath, fileName); + var types = GetScriptableElementsFromAssembly(); + for (var i = 0; i < types.Length; i++) + { + if (TryCreatingDefaultTagScriptable(types[i], category, out var so)) + { + PlaceScriptableAtPath(so, databasePath); + database.Add(so as ElementType); + } + } + EditorUtility.SetDirty(database); + SerializedObject dat = new SerializedObject(database); + dat.ApplyModifiedProperties(); + return database; + } + + static bool TryCreatingDefaultTagScriptable(System.Type type, EffectCategory category, out ScriptableObject result) + { + var attribute = type.GetCustomAttributes(typeof(TagInfoAttribute), true).FirstOrDefault() as TagInfoAttribute; + if (attribute == null) + { + //skips default elements that do not have EffectInfo attribute + result = default; + return false; + } + + //skips empty tags by design, e.g. Composite animation + if (string.IsNullOrEmpty(attribute.tagID)) + { + result = default; + return false; + } + + if (attribute is EffectInfoAttribute effectInfo) + { + if (!effectInfo.category.HasFlag(category)) + { + result = default; + return false; + } + } + + var so = CreateInstance(type); + so.name = type.Name; + + //changes scriptable field based on default value attributes + var defaultValueAttributes = + type.GetCustomAttributes(typeof(DefaultValueAttribute), true) as DefaultValueAttribute[]; + + SerializedObject serializedSo = new SerializedObject(so); + var tagID = serializedSo.FindProperty("tagID"); + + if (defaultValueAttributes != null) + { + foreach (var info in defaultValueAttributes) + { + serializedSo.FindProperty(info.variableName).floatValue = info.variableValue; + } + } + + tagID.stringValue = attribute.tagID; + serializedSo.ApplyModifiedProperties(); + result = so; + return true; + } + + + #endregion + + + #region Settings + + static void AssignDatabasesToSettings(TextAnimatorSettings settings, AnimationsDatabase behaviorsDatabase, + AnimationsDatabase appearanceDatabase, ActionDatabase actionsDatabase) + { + SerializedObject serialized = new SerializedObject(settings); + serialized.FindProperty(nameof(settings.actions)) + .FindPropertyRelative(nameof(settings.actions.defaultDatabase)).objectReferenceValue = actionsDatabase; + + serialized.FindProperty(nameof(settings.behaviors)) + .FindPropertyRelative(nameof(settings.behaviors.defaultDatabase)).objectReferenceValue = + behaviorsDatabase; + + serialized.FindProperty(nameof(settings.appearances)) + .FindPropertyRelative(nameof(settings.appearances.defaultDatabase)).objectReferenceValue = + appearanceDatabase; + + serialized.ApplyModifiedProperties(); + serialized.Update(); + } + + + static TextAnimatorSettings GetOrCreateSettings(string installationFolder) + { + if(TextAnimatorSettings.Instance) + return TextAnimatorSettings.Instance; + + return _CreateScriptableAssetAtPath(installationFolder + "/Resources", TextAnimatorSettings.expectedName); + } + + + + /// + /// Creates a new settings file (with databases) inside the installation's Resources folder. + /// Also assigns default effects and actions databases, + /// either looking if they already exist or by creating new ones. + /// + /// + /// P.S. A new settings file will be created even if it already exists but in another folder, + /// as the user might have moved it for archive/backups purposes. + /// + public static void FixSettingsFileNotFound() + { + GetOrCreateInstallationData(); + if (!TryGetInstallationFolder(out string installationFolder)) + { + Debug.LogError("Something went wrong in locating TextAnimator's installation data."); + return; + } + + DatabaseType GetOrCreateDatabase(string folderName, string fileName, EffectCategory category) + where DatabaseType : Database where ElementType : ScriptableObject, ITagProvider + { + string databaseGuid = AssetDatabase.FindAssets($"t:{nameof(DatabaseType)}").FirstOrDefault(); + + if (!string.IsNullOrEmpty(databaseGuid)) + { + return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(databaseGuid)); + } + + // tries creating new database + if (TryGetInstallationFolder(out installationFolder)) + { + return _CreateDatabase(installationFolder, folderName, fileName, category); + } + + return null; + } + + var settings = GetOrCreateSettings(installationFolder); + AssignDatabasesToSettings(settings, + GetOrCreateDatabase("Behaviors", "Behaviors Database", EffectCategory.Behaviors), + GetOrCreateDatabase("Appearances", + "Appearances Database", EffectCategory.Appearances), + GetOrCreateDatabase("Actions", "Actions Database", EffectCategory.None)); + } + + + #endregion + + #region Updating to new versions + + /// + /// Checks for stuff and updates some project files if needed + /// + /// + static void UpdateProject(TextAnimatorInstallationData installationData) + { + //TODO on new update + installationData.latestVersion = currentVersion; + EditorUtility.SetDirty(installationData); + } + + #endregion + + #region Utilties + + public static void _CreateDirectoryIfDoesntExist(string path) + { + string[] folders = path.Split('/'); + string subPath = folders[0]; + for (int i = 1; i < folders.Length; i++) + { + if (!AssetDatabase.IsValidFolder(subPath + '/' + folders[i])) + AssetDatabase.CreateFolder(subPath, folders[i]); + subPath += $"/{folders[i]}"; + } + } + + static Type[] GetScriptableElementsFromAssembly() where T : ScriptableObject, ITagProvider + { + return System.AppDomain.CurrentDomain.GetAssemblies() + .SelectMany(s => s.GetTypes()) + .Where(p => typeof(T).IsAssignableFrom(p) && !p.IsInterface && !p.IsAbstract) + .Where(s => s.Assembly.FullName.StartsWith("Febucci.TextAnimator.Runtime")) + .ToArray(); + } + + public static T _CreateScriptableAssetAtPath(string path, string objectName) where T : ScriptableObject + { + var scriptable = CreateInstance(); + scriptable.name = objectName; + PlaceScriptableAtPath(scriptable, path); + return scriptable; + } + + static void PlaceScriptableAtPath(ScriptableObject scriptable, string path) + { + _CreateDirectoryIfDoesntExist(path); + AssetDatabase.CreateAsset(scriptable, path + $"/{scriptable.name}.asset"); + } + + #endregion + + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta new file mode 100644 index 0000000..a64a070 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/Settings/TextAnimatorSetupWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0301c4642b7847db8af9a12e47083bf3 +timeCreated: 1677691499 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta new file mode 100644 index 0000000..afd6600 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa8ee49190adc45c5a5fea31311af75a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs new file mode 100644 index 0000000..35598e2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs @@ -0,0 +1,55 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI.Core +{ + /// + /// Could draw anything + /// + class GenericSharedDrawer : SharedDrawer + { + + bool showScript; + public GenericSharedDrawer(bool showScript) + { + this.showScript = showScript; + } + + protected override void _OnInspectorGUI() + { + //draws every visible property (first level children only) of the base serialized object + var iterator = baseObject.GetIterator(); + iterator.NextVisible(true); + do + { + if (iterator.name == "m_Script") + { + if (showScript) + { + GUI.enabled = false; + EditorGUILayout.PropertyField(iterator, true); + GUI.enabled = true; + } + + continue; + } + + if (iterator.isArray) + { + EditorGUILayout.PropertyField(iterator, true); + } + else + { + EditorGUILayout.BeginHorizontal(); + //if (iterator.displayName.Length > 0) + //EditorGUILayout.PrefixLabel(iterator.displayName.Replace("Base ", "")); + EditorGUILayout.PropertyField(iterator, true); + //EditorGUILayout.PropertyField(iterator, GUIContent.none, true); + EditorGUILayout.EndHorizontal(); + } + + } while (iterator.NextVisible(false)) ; + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta new file mode 100644 index 0000000..40e404d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/GenericSharedDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f18ab2a0e017d4193b01c358f796c4b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs new file mode 100644 index 0000000..d8dfad3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs @@ -0,0 +1,69 @@ +using UnityEditor; + +namespace Febucci.UI.Core +{ + /// + /// Base class that can be used to create drawers used by multiple + /// custom editors, both components and scriptable objects + /// + [System.Serializable] + abstract class SharedDrawer + { + protected SerializedProperty baseProperty; + protected SerializedObject baseObject; + bool initialized; + + protected virtual void OnEnabled(SerializedObject baseObject) { } + + public void OnInspectorGUI(SerializedProperty baseProperty) + { + if(baseProperty == null) return; + if(baseProperty.objectReferenceValue == null) return; + + if (baseProperty != this.baseProperty) + initialized = false; + + if(!initialized) + { + this.baseProperty = baseProperty; + //hacky unity way to reach the actual serialized object + this.baseObject = new SerializedObject(baseProperty.objectReferenceValue); + OnEnabled(baseObject); + initialized = true; + } + + baseObject.Update(); + _OnInspectorGUI(); + + ApplyChanges(); + } + + public void OnInspectorGUI(SerializedObject baseObject) + { + if (baseObject == null) return; + if (this.baseObject != baseObject) + initialized = false; + + if (!initialized) + { + this.baseObject = baseObject; + OnEnabled(baseObject); + initialized = true; + } + + baseObject.Update(); + _OnInspectorGUI(); + + ApplyChanges(); + } + + protected virtual void _OnInspectorGUI() { } + + protected void ApplyChanges() + { + if (baseObject.hasModifiedProperties) + baseObject.ApplyModifiedProperties(); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta new file mode 100644 index 0000000..0dc98a3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/SharedDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f91133a2133874ec7a3239f6932eefad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs new file mode 100644 index 0000000..e112634 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs @@ -0,0 +1,75 @@ +using UnityEditor; +using UnityEngine; + +namespace Febucci.UI +{ + public static class TexturesLoader + { + const string localPath_resourcesFolder = "Text Animator"; + + static Texture aboutLogo; + public static Texture AboutLogo + { + get + { + if(!aboutLogo) aboutLogo = Resources.Load(localPath_resourcesFolder+"/about_logo"); + return aboutLogo; + } + } + + + static Texture stopIcon; + public static Texture StopIcon + { + get + { + if(!stopIcon) stopIcon = Resources.Load(localPath_resourcesFolder+"/stop_icon"); + return stopIcon; + } + } + + static Texture restartIcon; + public static Texture RestartIcon + { + get + { + if(!restartIcon) restartIcon = Resources.Load(localPath_resourcesFolder+"/restart_icon"); + return restartIcon; + } + } + + static Texture saveIcon; + public static Texture SaveIcon + { + get + { + if(!saveIcon) saveIcon = Resources.Load(localPath_resourcesFolder+"/save_icon"); + return saveIcon; + } + } + + static Texture playIcon; + public static Texture PlayIcon + { + get + { + if(!playIcon) playIcon = Resources.Load(localPath_resourcesFolder+"/play_icon"); + return playIcon; + } + } + + static Texture pauseIcon; + public static Texture PauseIcon + { + get + { + if(!pauseIcon) pauseIcon = Resources.Load(localPath_resourcesFolder+"/pause_icon"); + return pauseIcon; + } + } + + + public static Texture WarningIcon => EditorGUIUtility.IconContent("Warning").image; + public static Texture ErrorIcon => EditorGUIUtility.IconContent("Error").image; + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta new file mode 100644 index 0000000..85f01ca --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Drawers/_Core/TexturesLoader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bfd3592baf4bc4a84a1c008acf9aac45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef new file mode 100644 index 0000000..092219b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef @@ -0,0 +1,18 @@ +{ + "name": "Febucci.TextAnimator.Editor", + "rootNamespace": "", + "references": [ + "GUID:1e113d3b5d77bc04eab508251483e8ff" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta new file mode 100644 index 0000000..6e1d414 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Febucci.TextAnimator.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0306e69412d8fbf41a94465bbaf34341 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta new file mode 100644 index 0000000..039957c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44dfac1202f97428c8f53d2d01bc88cb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta new file mode 100644 index 0000000..d1d987a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a149d8b764bcf4a398f25186fb0db4e4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png new file mode 100644 index 0000000..7862fdc Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta new file mode 100644 index 0000000..c5cc739 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/about_logo.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 04f06a54beeb7574a8c2b2083e7be396 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 4c61e790940ecb64e876d955039cd056 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png new file mode 100644 index 0000000..cf1056c Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta new file mode 100644 index 0000000..afa0f43 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/pause_icon.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 58094e2ec45f7480e81fb4a78bc2dd66 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png new file mode 100644 index 0000000..49f3649 Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta new file mode 100644 index 0000000..0a05054 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/play_icon.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 8d8fcd591cdad453fb3c120cb0d3f43d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png new file mode 100644 index 0000000..5576087 Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta new file mode 100644 index 0000000..0c5817a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/restart_icon.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 6ca8dac30112340e78d79a57c6348d72 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png new file mode 100644 index 0000000..8a480e4 Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta new file mode 100644 index 0000000..7990162 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/save_icon.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 039155adb637742a997e9d56b089e95f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png new file mode 100644 index 0000000..d91c70c Binary files /dev/null and b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png differ diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta new file mode 100644 index 0000000..f3c448f --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Editor/Resources/Text Animator/stop_icon.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 9c056a25dd76643ba8f1ee229906a71b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta new file mode 100644 index 0000000..361de8b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df7d5220397fe2547bef0d83a82cd45c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta new file mode 100644 index 0000000..5062453 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f9d800b5adc74d4f9570b41fc986a5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta new file mode 100644 index 0000000..3aae68a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a82ba40ede495c24a8ac264fc5945681 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta new file mode 100644 index 0000000..43a79c7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5ac60f2cc66e4d4ca386fe558fd4be6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef new file mode 100644 index 0000000..81ab5c0 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef @@ -0,0 +1,30 @@ +{ + "name": "Febucci.TextAnimator.TMP.Runtime", + "rootNamespace": "", + "references": [ + "GUID:1e113d3b5d77bc04eab508251483e8ff", + "GUID:6055be8ebefd69e48b49212b09b47b2f" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [ + "TANIM_TMP_PRESENT" + ], + "versionDefines": [ + { + "name": "com.unity.textmeshpro", + "expression": "", + "define": "TANIM_TMP_PRESENT" + }, + { + "name": "com.unity.ugui", + "expression": "2.0.0", + "define": "TANIM_TMP_PRESENT" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta new file mode 100644 index 0000000..5823305 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/Febucci.TextAnimator.TMP.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e539678cf69674b418d82e89c16a9753 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs new file mode 100644 index 0000000..211df45 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs @@ -0,0 +1,86 @@ +using System.Text; + +namespace Febucci.UI.Core.Parsing +{ + public class TMPTagParser : TagParserBase + { + readonly bool richTagsEnabled; + + //PS no "noparse" since it's already checked + static readonly TMPTagInfo[] lookups = new[] + { + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""),new TMPTagInfo( ""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo( ""), new TMPTagInfo( ""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo(""), + new TMPTagInfo(""), + new TMPTagInfo(""), new TMPTagInfo( ""), + new TMPTagInfo(""), new TMPTagInfo( ""), + new TMPTagInfo(""), new TMPTagInfo( ""), + new TMPTagInfo(""), new TMPTagInfo( ""), + new TMPTagInfo(""), + new TMPTagInfo("") + }; + + struct TMPTagInfo + { + public readonly string tagOpening; + public readonly bool increasesTextLength; + + public TMPTagInfo(string tagOpening, bool increasesTextLength = false) + { + this.tagOpening = tagOpening; + this.increasesTextLength = increasesTextLength; + } + } + + public TMPTagParser(bool richTagsEnabled, char openingBracket, char closingBracket, char closingTagSymbol) + : base(openingBracket, closingBracket, closingTagSymbol) + { + this.richTagsEnabled = richTagsEnabled; + } + + public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder) + { + if (!richTagsEnabled) return false; + + string fullTag = startSymbol + textInsideBrackets + endSymbol; //TODO improve + + foreach (var lookupTag in lookups) + { + if (fullTag.StartsWith(lookupTag.tagOpening, true, System.Globalization.CultureInfo.InvariantCulture)) + { + finalTextBuilder.Append(fullTag); + if (lookupTag.increasesTextLength) realTextIndex++; + return true; + } + } + + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta new file mode 100644 index 0000000..a523d14 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TMPTagParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a3d19aed716a0144afe3d3676bee59c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs new file mode 100644 index 0000000..7f3addf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs @@ -0,0 +1,238 @@ +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; +using TMPro; +using UnityEngine; + +namespace Febucci.UI +{ + /// + /// Animates a TMP text component, both UI or World. + /// See for the base class information. + /// + [RequireComponent(typeof(TMP_Text))] + [AddComponentMenu("Febucci/TextAnimator/Text Animator - Text Mesh Pro")] + public sealed class TextAnimator_TMP : TAnimCore + { + /// + /// The TextMeshPro text component linked to this Text Animator + /// + public TMP_Text TMProComponent + { + get + { + if (tmpComponent) return tmpComponent; + CacheComponentsOnce(); + return tmpComponent; + } + } + + TMP_Text tmpComponent; + TMP_TextInfo textInfo; + TMP_InputField attachedInputField; + + //----- Values cache ----- + bool autoSize; + Rect sourceRect; + Color sourceColor; + int tmpFirstVisibleCharacter; + int tmpMaxVisibleCharacters; + //----- + + bool componentsCached; + bool isUI; + void CacheComponentsOnce() + { + if(componentsCached) return; + + if (!gameObject.TryGetComponent(out tmpComponent)) + { + Debug.LogError($"TextAnimator_TMP {name} requires a TMP_Text component to work.", gameObject); + } + + gameObject.TryGetComponent(out attachedInputField); + componentsCached = true; + isUI = tmpComponent is TextMeshProUGUI; + } + + protected override void OnInitialized() + { + CacheComponentsOnce(); + + //prevents the text from being rendered at startup + //e.g. in case user has stuff on the inspector + tmpComponent.renderMode = TextRenderFlags.DontRender; + } + + protected override void OnEnable() + { + base.OnEnable(); + textInfo = TMProComponent.textInfo; + } + + #region Text + + protected override TagParserBase[] GetExtraParsers() + { + return new TagParserBase[1] {new TMPTagParser(tmpComponent.richText, '<', '/', '>')}; + } + + public override string GetOriginalTextFromSource() => TMProComponent.text; + public override string GetStrippedTextFromSource() => tmpComponent.GetParsedText(); + + /// + /// Equivalent to setting the text to the TMP component, without parsing it. + /// Please use or instead. + /// + /// + public override void SetTextToSource(string text) + { + //Avoids rendering the text for half a frame + TMProComponent.renderMode = TextRenderFlags.DontRender; + + //--generates mesh and text info-- + if (attachedInputField) attachedInputField.text = text; //renders input field + else tmpComponent.text = text; //<-- sets the text + + OnForceMeshUpdate(); + + textInfo = tmpComponent.GetTextInfo(tmpComponent.text); + +#if UNITY_EDITOR + if (!Application.isPlaying) + { + //needed to update tmp mesh from editor + tmpComponent.havePropertiesChanged = true; + UnityEditor.EditorUtility.SetDirty(tmpComponent); + } + else +#endif + tmpComponent.renderMode = TextRenderFlags.DontRender; + } + #endregion + + protected override bool IsReady() => componentsCached && (!isUI || tmpComponent.canvas); + #region Characters + protected override int GetCharactersCount() => textInfo.characterCount; + #endregion + + #region Checks + protected override bool HasChangedRenderingSettings() + { + return tmpComponent.havePropertiesChanged + //changing the properties below doesn't seem to trigger 'havePropertiesChanged', so we're checking them manually + || tmpComponent.enableAutoSizing != autoSize + || tmpComponent.rectTransform.rect != sourceRect + || tmpComponent.color != sourceColor + || tmpComponent.firstVisibleCharacter != tmpFirstVisibleCharacter + || tmpComponent.maxVisibleCharacters != tmpMaxVisibleCharacters; + } + + protected override bool HasChangedText(string strippedText) + { + if(string.IsNullOrEmpty(tmpComponent.text) && string.IsNullOrEmpty(strippedText)) + return false; + + if (string.IsNullOrEmpty(tmpComponent.text) != string.IsNullOrEmpty(strippedText)) + return true; + + return !tmpComponent.text.Equals(strippedText); + } + + #endregion + + #region Mesh + + protected override void CopyMeshFromSource(ref CharacterData[] characters) + { + autoSize = tmpComponent.enableAutoSizing; + sourceRect = tmpComponent.rectTransform.rect; + sourceColor = tmpComponent.color; + tmpFirstVisibleCharacter = tmpComponent.firstVisibleCharacter; + tmpMaxVisibleCharacters = tmpComponent.maxVisibleCharacters; + + TMP_CharacterInfo currentCharInfo; + + //Updates the characters sources + for (int i = 0; i < textInfo.characterCount && i < characters.Length; i++) + { + currentCharInfo = textInfo.characterInfo[i]; + characters[i].info.isRendered = currentCharInfo.isVisible; + characters[i].info.character = currentCharInfo.character; + //Updates TMP char info + //characters[i].current.tmp_CharInfo = textInfo.characterInfo[i]; + + //Copies source data from the mesh info only if the character is valid, otherwise its vertices array will be null and tAnim will start throw errors + if (!currentCharInfo.isVisible) continue; + + characters[i].info.pointSize = currentCharInfo.pointSize; + + //Updates vertices + for (byte k = 0; k < TextUtilities.verticesPerChar; k++) + { + characters[i].source.positions[k] = textInfo.meshInfo[currentCharInfo.materialReferenceIndex].vertices[currentCharInfo.vertexIndex + k]; + } + + //Updates colors + for (byte k = 0; k < TextUtilities.verticesPerChar; k++) + { + characters[i].source.colors[k] = textInfo.meshInfo[currentCharInfo.materialReferenceIndex].colors32[currentCharInfo.vertexIndex + k]; + } + } + } + + protected override void PasteMeshToSource(CharacterData[] characters) + { + + TMP_CharacterInfo currentCharInfo; + + //Updates the mesh + for (int i = 0; i < textInfo.characterCount && i < CharactersCount; i++) + { + currentCharInfo = textInfo.characterInfo[i]; + //Avoids updating if we're on an invisible character, like a spacebar + //Do not switch this with "i tmpComponent.ForceMeshUpdate(true); + #endregion + + #region Obsolete + + [System.Obsolete("This method is Obsolete. Please check through the 'Characters' array instead.")] + public bool TryGetNextCharacter(out TMP_CharacterInfo result) + { + if(latestCharacterShown.index TMProComponent; + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta new file mode 100644 index 0000000..c0dfd5a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/TextMeshPro/TextAnimator_TMP.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8ace8ced0e81c847968cdca0aeda757 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta new file mode 100644 index 0000000..1a70987 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcc9bd3818c90824396a4b66126b13d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs new file mode 100644 index 0000000..9d3c4ed --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs @@ -0,0 +1,14 @@ +namespace Febucci.UI +{ + public enum AnimationLoop + { + Update = 0, + + LateUpdate = 1, + + /// + /// Via Script + /// + Script = 2 + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta new file mode 100644 index 0000000..c4ab1f7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/AnimationLoop.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 98cf9e54383e4c35bd21cabe037c5fbc +timeCreated: 1672434576 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs new file mode 100644 index 0000000..d581d9e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs @@ -0,0 +1,1342 @@ +using System; +using System.Text; +using Febucci.UI.Actions; +using Febucci.UI.Core.Parsing; +using Febucci.UI.Effects; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Febucci.UI.Core +{ + [DisallowMultipleComponent] + [HelpURL("https://www.febucci.com/text-animator-unity/docs/how-to-add-effects-to-your-texts/")] + public abstract class TAnimCore : MonoBehaviour + { + #region Types + enum ShowTextMode : byte + { + Hidden = 0, + Shown = 1, + UserTyping = 2, + Refresh = 3 + } + #endregion + + #region Variables + bool initialized; + bool requiresTagRefresh; + + #region Options + /// + /// If the source text changes, should the typewriter start automatically? + /// + /// + /// Requires a Typewriter component if true. + /// + [Tooltip("If the source text changes, should the typewriter start automatically? Requires a Typewriter component if true.\nP.s. Previously, this option was called 'Use Easy Integration'.")] + public bool typewriterStartsAutomatically = false; + TypewriterCore _typewriterCache; + /// + /// Linked TAnimPlayer to this component + /// + TypewriterCore typewriter + { + get + { + if (_typewriterCache != null) + return _typewriterCache; + +#if UNITY_2019_2_OR_NEWER + if(!TryGetComponent(out _typewriterCache)) + { + Debug.LogError($"Typewriter component is null on GameObject {gameObject.name}. Please add a typewriter on the same GameObject or set 'Typewriter Starts Automatically' to false.", this.gameObject); + } +#else + _tAnimPlayer = GetComponent(); + Assert.IsNotNull(_tAnimPlayer, $"Text Animator Player component is null on GameObject {gameObject.name}"); +#endif + + return _typewriterCache; + } + } + + + /// + /// Controls when Text Animator should update its effects. Set it to if you want to control the animations from your own loop, invoking the method. + /// + [Tooltip("Controls when this TextAnimator component should update its effects. Defaults in the 'Update' Loop.\nSet it to 'Manual' if you want to control the animations from your own loop instead.")] + public AnimationLoop animationLoop = AnimationLoop.Update; + + /// + /// Chooses which Time Scale to use when automatically animating effects (in other words, when the Update Mode is not set to Script). Set it to if you want to animate effects even when the game is paused. + /// + [Tooltip("Chooses which Time Scale to use when animating effects.\nSet it to 'Unscaled' if you want to animate effects even when the game is paused.")] + public TimeScale timeScale = TimeScale.Scaled; + + #endregion + + #region Text + /// + /// The original text pasted to Text Animator, with all its tags + /// + [SerializeField, TextArea(4, 10), HideInInspector] string _text = string.Empty; + public string textFull + { + get => _text; + set + { + if(typewriterStartsAutomatically + #if UNITY_EDITOR + && Application.isPlaying + #endif + && typewriter + ) + { + SetTypewriterText(value); + return; + } + + SetText(value); + } + } + + /// + /// The text without any Text Animator tag + /// + /// + /// PS. this might still contain other tags from different supported plugins, like "color" from TMPro. + /// To get the full stripped text, see . + /// + public string textWithoutTextAnimTags { get; private set; } = string.Empty; + public string textWithoutAnyTag { get; private set; } = string.Empty; + + bool hasText => charactersCount > 0; + + public CharacterData latestCharacterShown { get; private set; } + + /// + /// true if the text is entirely visible, including waiting for appearance effects to finish + /// (as they might still hide a character until the very end) + /// + /// + /// You can use this to check if all the letters have been shown. + /// + public bool allLettersShown + { + get + { + if (_maxVisibleCharacters < charactersCount) return false; + if (_firstVisibleCharacter == _maxVisibleCharacters) return false; + + for (int i = 0; i < charactersCount; i++) + { + if (!characters[i].isVisible) + { + if (characters[i].passedTime <= 0) + return false; + } + else + { + if (characters[i].info.isRendered && characters[i].passedTime < characters[i].info.appearancesMaxDuration) + return false; + } + } + + return true; + } + } + + + /// + /// true if any letter is still visible in the text + /// + /// + /// You can use this to check if the disappearance effects are still running. + /// + public bool anyLetterVisible //TODO test + { + get + { + if (characters.Length == 0) return true; + + bool IsCharacterVisible(int index) + { + return characters[index].passedTime > 0; + } + + //searches for the first character or the last one first, since they're most probably the first ones to be shown (based on orientation) + if (IsCharacterVisible(0) || IsCharacterVisible(charactersCount-1)) + return true; + + //searches for the other, which might still be running their appearance/disappearance + for(int i=1;i + /// Number of characters in the text + /// + int charactersCount; + public int CharactersCount + { + get => charactersCount; + } + CharacterData[] characters; + /// + /// The array of characters currently present in the text. + /// + /// + /// This array might be larger than the actual number of characters, so please cycle for instead. + /// + public CharacterData[] Characters + { + get => characters; + } + + int wordsCount; + /// + /// Number of words in the text + /// + public int WordsCount + { + get => wordsCount; + } + + WordInfo[] words; + /// + /// The array of words currently present in the text. + /// + /// + /// This array might be larger than the actual number of words, so please cycle for instead. + /// + public WordInfo[] Words => words; + + //---CHARS SIZE/INTENSITY--- + + /// + /// True if you want the animations to be uniform/consistent across different font sizes. Default/Suggested to leave this as true, and change . Otherwise, effects will move more when the text is smaller (requires less space on screen). + /// + [Tooltip("True if you want the animations to be uniform/consistent across different font sizes. Default/Suggested to leave this as true, and change the 'Reference Font Size'.\nOtherwise, effects will move more when the text is smaller (requires less space on screen)")] + public bool useDynamicScaling = true; + + /// + /// Font size that will be used as reference to keep animations consistent/uniform at different scales. Works only if is set to true. + /// + [Tooltip("Font size that will be used as reference to keep animations consistent/uniform at different scales.")] + public float referenceFontSize = 10; + + + //---OTHERS--- + + /// + /// True if you want the animator's time to be reset on new text. + /// + [Tooltip("True if you want the animator's time to be reset on new text.")] + [FormerlySerializedAs("isResettingEffectsOnNewText")] public bool isResettingTimeOnNewText = true; + + #endregion + + #region Effects and Databases + + bool isAnimatingBehaviors = true; + bool isAnimatingAppearances = true; + + /// + /// True if you want to use the databases referenced in the asset, otherwise you can specify which databases to use in this component. + /// + [Tooltip("Lets you use the databases referenced in the 'TextAnimatorSettings' asset.\nSet to false if you'd like to specify which databases to use in this component.")] + public bool useDefaultDatabases = true; + + // ---------------- + // -- Databases -- + // ---------------- + [SerializeField] AnimationsDatabase databaseBehaviors; + /// + /// Behaviors Database used by this Text Animator. If is set to true, this will be the default database from the asset. + /// + public AnimationsDatabase DatabaseBehaviors + { + get => useDefaultDatabases ? TextAnimatorSettings.Instance.behaviors.defaultDatabase : databaseBehaviors; + set + { + useDefaultDatabases = false; + databaseBehaviors = value; + requiresTagRefresh = true; + } + } + + [SerializeField] AnimationsDatabase databaseAppearances; + /// + /// Appearances Database used by this Text Animator. If is set to true, this will be the default database from the asset. + /// + public AnimationsDatabase DatabaseAppearances + { + get => useDefaultDatabases ? TextAnimatorSettings.Instance.appearances.defaultDatabase : databaseAppearances; + set + { + useDefaultDatabases = false; + databaseAppearances = value; + requiresTagRefresh = true; + } + } + + // ---------------- + // -- Effects -- + // ---------------- + AnimationRegion[] behaviors; + /// + /// All the behavior effects that are applied to the current text. + /// + public AnimationRegion[] Behaviors + { + get => behaviors; + set => behaviors = value; + } + + AnimationRegion[] appearances; + /// + /// All the appearance effects that are applied to the current text. + /// + public AnimationRegion[] Appearances + { + get => appearances; + set => appearances = value; + } + AnimationRegion[] disappearances; + + /// + /// All the disappearance effects that are applied to the current text. + /// + public AnimationRegion[] Disappearances + { + get => disappearances; + set => disappearances = value; + } + #endregion + + #region Actions and Events + ActionMarker[] actions; + + /// + /// All the actions that have been parsed from the current text, and that will be used by a component if present. + /// + public ActionMarker[] Actions + { + get => actions; + set => actions = value; + } + + + [SerializeField] ActionDatabase databaseActions; + /// + /// Actions Database used by this Text Animator. If is set to true, this will be the default database from the asset. + /// + public ActionDatabase DatabaseActions + { + get => useDefaultDatabases ? TextAnimatorSettings.Instance.actions.defaultDatabase : databaseActions; + set + { + databaseActions = value; + requiresTagRefresh = true; + } + } + + EventMarker[] events; + /// + /// Events that have been parsed from the current text, and that will be used by a component if present. + /// + public EventMarker[] Events + { + get => events; + set => events = value; + } + + #endregion + + #region Default Tags + + struct DefaultRegion + { + public string[] tagWords; + public AnimationRegion region; + + public DefaultRegion(string tagID, VisibilityMode visibilityMode, AnimationScriptableBase scriptable, string[] tagWords) + { + this.tagWords = tagWords; + this.region = new AnimationRegion(tagID, visibilityMode, scriptable); + } + } + + [SerializeField] string[] defaultAppearancesTags = new []{"size"}; + /// + /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value. + /// + public string[] DefaultAppearancesTags + { + get => defaultAppearancesTags; + set + { + defaultAppearancesTags = value; + requiresTagRefresh = true; + } + } + [SerializeField] string[] defaultDisappearancesTags = new []{"fade"}; + /// + /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value. + /// + public string[] DefaultDisappearancesTags + { + get => defaultDisappearancesTags; + set + { + defaultDisappearancesTags = value; + requiresTagRefresh = true; + } + } + + [SerializeField] string[] defaultBehaviorsTags; + /// + /// Fallback/Constant tags that will be applied to the entire text, if no other tags are found, based on the value. + /// + public string[] DefaultBehaviorsTags + { + get => defaultBehaviorsTags; + set + { + defaultBehaviorsTags = value; + requiresTagRefresh = true; + } + } + #endregion + + #endregion + + #region Abstract / Virtual + /// + /// Called once when the component is initialized. + /// + protected virtual void OnInitialized() { } + + //---------------- + //--Setting Text-- + //---------------- + public abstract string GetOriginalTextFromSource(); + public abstract string GetStrippedTextFromSource(); + public abstract void SetTextToSource(string text); + + //---------------- + //--Checking Changes-- + //---------------- + protected abstract bool HasChangedText(string strippedText); + protected abstract bool HasChangedRenderingSettings(); + + //----------------- + //--Setting Chars-- + //----------------- + protected abstract int GetCharactersCount(); + + //----------------- + //---Setting Mesh-- + //----------------- + protected abstract void OnForceMeshUpdate(); + protected abstract void CopyMeshFromSource(ref CharacterData[] characters); + protected abstract void PasteMeshToSource(CharacterData[] characters); + #endregion + + bool requiresMeshUpdate; + void ForceMeshUpdate() + { + requiresMeshUpdate = false; + OnForceMeshUpdate(); + } + + void Awake() + { + requiresTagRefresh = true; + TryInitializing(); + } + + void TryInitializing() + { + #if UNITY_EDITOR + if (!Application.isPlaying) + { + if(characters == null) //forces reset in editor + initialized = false; + } + #endif + + if (initialized) return; + + initialized = true; + + TextUtilities.Initialize(); + charactersCount = 0; + characters = new CharacterData[0]; + + wordsCount = 0; + words = new WordInfo[0]; + + behaviors = new AnimationRegion[0]; + appearances = new AnimationRegion[0]; + disappearances = new AnimationRegion[0]; + actions = new ActionMarker[0]; + events = new EventMarker[0]; + + if(DatabaseActions) DatabaseActions.ForceBuildRefresh(); + if(DatabaseAppearances) DatabaseAppearances.ForceBuildRefresh(); + if(DatabaseBehaviors) DatabaseBehaviors.ForceBuildRefresh(); + + OnInitialized(); + } + + /// + /// Contains TextAnimator's current time values. + /// + [HideInInspector] public TimeData time; + + + void UpdateUniformIntensity() + { + if(useDynamicScaling) + { + for (int i = 0; i < characters.Length; i++) + { + // multiplies by current character size, which could be modified by "size" tags and so + // be different than the basic tmp font size value + characters[i].UpdateIntensity(referenceFontSize); + } + } + else + { + for (int i = 0; i < characters.Length; i++) + { + characters[i].uniformIntensity = 1; + } + } + } + + public enum DefaultTagsMode + { + /// + /// Applies effects only to characters that don't have any. + /// + Fallback = 0, + /// + /// Applies effects to all the characters, even if they already have other tags via text. + /// + Constant = 1 + } + + /// + /// Controls how default tags should be applied.\n"Fallback" will apply the effects only to characters that don't have any.\n"Constant" will apply the default effects to all the characters, even if they already have other tags via text. + /// + [Tooltip("Controls how default tags should be applied.\n\"Fallback\" will apply the effects only to characters that don't have any.\n\"Constant\" will apply the default effects to all the characters, even if they already have other tags via text.")] + public DefaultTagsMode defaultTagsMode = DefaultTagsMode.Fallback; + + #region Text + + protected virtual TagParserBase[] GetExtraParsers(){ return Array.Empty(); } + + TextAnimatorSettings settings; + void ConvertText(string textToParse, ShowTextMode showTextMode) + { + #region Local Methods + void PopulateCharacters() + { + if (characters.Length < charactersCount) + Array.Resize(ref characters, charactersCount); + + for (int i = 0; i < charactersCount; i++) + { + //--Resets info-- + characters[i].ResetInfo(i); + + //--Assigns effect times-- + float CalculateRegionMaxDuration(AnimationRegion[] tags) + { + float maxDuration = 0; + float currentDuration; + //For each tag + foreach(var tag in tags) + { + //for each range + foreach(var range in tag.ranges) + { + //If the region contains the character + if (i>=range.indexes.x && i maxDuration) + { + //Assigns the new max + maxDuration = currentDuration; + } + } + } + } + + return maxDuration; + } + + characters[i].info.disappearancesMaxDuration = CalculateRegionMaxDuration(disappearances); + characters[i].info.appearancesMaxDuration = CalculateRegionMaxDuration(appearances); + } + } + + void CalculateWords() + { + StringBuilder currentWord = new StringBuilder(); + wordsCount = charactersCount; + + if (words.Length < wordsCount) + Array.Resize(ref words, wordsCount); + + int tempLength = 0; + int wordIndex = 0; + int currentFirstIndex = 0; + for (int i = 0; i < charactersCount; i++) + { + if (!char.IsWhiteSpace(characters[i].info.character)) + { + characters[i].wordIndex = wordIndex; + currentWord.Append(characters[i].info.character); + tempLength++; + continue; + } + else + { + characters[i].wordIndex = -1; + } + + if (tempLength > 0) + { + words[wordIndex] = new WordInfo( + currentFirstIndex, + currentFirstIndex + tempLength - 1, + currentWord.ToString()); + currentFirstIndex += tempLength+1; //removes additional space + wordIndex++; + } + else + { + currentFirstIndex++; //proceeds to shift white spaces etc. + } + + currentWord.Clear(); + tempLength = 0; + } + + //Adds last + if (tempLength > 0) + { + words[wordIndex] = new WordInfo( + currentFirstIndex, + currentFirstIndex + tempLength - 1, + currentWord.ToString()); + wordIndex++; + } + + wordsCount = wordIndex; + } + + void HideCharacterTime(int charIndex) + { + var c = characters[charIndex]; + c.isVisible = false; + c.passedTime = 0; + c.Hide(); + characters[charIndex] = c; + } + + void HideAllCharactersTime() + { + for (int i = 0; i < charactersCount; i++) + { + HideCharacterTime(i); + } + } + + void ShowCharacterTimes() + { + for (int i = 0; i < charactersCount; i++) + { + var c = characters[i]; + c.isVisible = true; + c.passedTime = c.info.appearancesMaxDuration; + characters[i] = c; + } + } + + bool IsCharacterInsideAnyEffect(int charIndex, AnimationRegion[] regions) + { + foreach (var region in regions) + { + foreach (var range in region.ranges) + { + if (charIndex >= range.indexes.x && (range.indexes.y == int.MaxValue || charIndex < range.indexes.y)) + { + return true; + } + } + } + + return false; + } + + void AddFallbackEffectsFor(ref AnimationRegion[] currentEffects, VisibilityMode visibilityMode, Database database, string[] defaultEffectsTags) where T : AnimationScriptableBase + { + if(!database) return; + + if (defaultEffectsTags == null || defaultEffectsTags.Length == 0) + { + return; + } + + //create list of default regions that should be added + var defaultRegions = new System.Collections.Generic.List(); + string[] tagWords; + string tagName; + foreach (var tag in defaultEffectsTags) + { + if(string.IsNullOrEmpty(tag)) + { + if(Application.isPlaying) + Debug.LogError($"Empty tag as default effect in database {database.name}. Skipping.", gameObject); + continue; + } + + tagWords = tag.Split(' '); + tagName = tagWords[0]; + + if (!database.ContainsKey(tagName)) + { + if(Application.isPlaying) + Debug.LogError($"Fallback effect with tag '{tagName}' not found in database {database.name}. Skipping.", gameObject); + continue; + } + + defaultRegions.Add(new DefaultRegion(tagName, visibilityMode, database[tagName], tagWords)); + } + + //if there are no current effects, directly adds the default effects + if(currentEffects.Length == 0 || defaultTagsMode == DefaultTagsMode.Constant) + { + foreach(var element in defaultRegions) + { + element.region.OpenNewRange(0, element.tagWords); + } + } + else + { + //for every character in the text + for (int startIndex = 0; startIndex < charactersCount; startIndex++) + { + //if the character has no effect of this category assigned + if (!IsCharacterInsideAnyEffect(startIndex, currentEffects)) + { + //opens new range for default effects + foreach (var element in defaultRegions) + { + //add the default effect to the character + //TODO performance can be improved by caching modifiers + element.region.OpenNewRange(startIndex, element.tagWords); + } + + //until there are characters that are not inside this category + int endIndex = startIndex + 1; + for (; endIndex < charactersCount; endIndex++) + { + if (IsCharacterInsideAnyEffect(endIndex, currentEffects)) + { + break; + } + } + + //closes new range for default effects + foreach (var element in defaultRegions) + { + element.region.TryClosingRange(endIndex); + } + + startIndex = endIndex; + } + } + } + + //adds the default regions to the current effects + int prevCount = currentEffects.Length; + System.Array.Resize(ref currentEffects, currentEffects.Length + defaultRegions.Count); + for(int i = 0; i < defaultRegions.Count; i++) + { + currentEffects[prevCount + i] = defaultRegions[i].region; + } + } + + #endregion + + TryInitializing(); + + requiresTagRefresh = false; + _text = textToParse; + + settings = TextAnimatorSettings.Instance; + if (!settings) + { + charactersCount = 0; + Debug.LogError("Text Animator Settings not found. Skipping setting the text to Text Animator."); + return; + } + + // Uses default database from settings + if (useDefaultDatabases) + { + databaseBehaviors = settings.behaviors.defaultDatabase; + databaseAppearances = settings.appearances.defaultDatabase; + databaseActions = settings.actions.defaultDatabase; + } + + + var ruleBehavior = new AnimationParser(settings.behaviors.openingSymbol, '/', settings.behaviors.closingSymbol, VisibilityMode.Persistent, databaseBehaviors); + var ruleAppearance = new AnimationParser(settings.appearances.openingSymbol, '/', settings.appearances.closingSymbol, VisibilityMode.OnVisible, databaseAppearances); + var ruleDisappearance = new AnimationParser(settings.appearances.openingSymbol, '/', '#', settings.appearances.closingSymbol, VisibilityMode.OnHiding, databaseAppearances); + ActionParser ruleActions = new ActionParser(settings.actions.openingSymbol, '/', settings.actions.closingSymbol, databaseActions); + EventParser ruleEvents = new EventParser('<', '/', '>'); + + //TODO optimize + var parsers = new System.Collections.Generic.List() + { + ruleBehavior, + ruleAppearance, + ruleDisappearance, + ruleActions, + ruleEvents + }; + + foreach (var extraParser in GetExtraParsers()) + { + parsers.Add(extraParser); + } + + //Convert text in tags, mesh etc. + textWithoutTextAnimTags = TextParser.ParseText(_text, parsers.ToArray()); + + //Set converted text to source + SetTextToSource(textWithoutTextAnimTags); + textWithoutAnyTag = GetStrippedTextFromSource(); + charactersCount = GetCharactersCount(); + + //Assigns results + behaviors = ruleBehavior.results; + appearances = ruleAppearance.results; + disappearances = ruleDisappearance.results; + actions = ruleActions.results; + events = ruleEvents.results; + + //Adds fallback effects to characters that have no effect assigned + AddFallbackEffectsFor(ref behaviors, VisibilityMode.Persistent,databaseBehaviors, defaultBehaviorsTags); + AddFallbackEffectsFor(ref appearances, VisibilityMode.OnVisible, databaseAppearances, defaultAppearancesTags); + AddFallbackEffectsFor(ref disappearances, VisibilityMode.OnHiding, databaseAppearances, defaultDisappearancesTags); + + //Initializes only animations that are being used + foreach (var behavior in behaviors) behavior.animation.InitializeOnce(); + foreach (var appearance in appearances) appearance.animation.InitializeOnce(); + foreach (var disappearance in disappearances) disappearance.animation.InitializeOnce(); + + //Prepares Characters + PopulateCharacters(); + CopyMeshFromSource(ref characters); + CalculateWords(); + + switch(showTextMode) + { + case ShowTextMode.Hidden: + HideAllCharactersTime(); + break; + + case ShowTextMode.Shown: + ShowCharacterTimes(); + break; + + //user is typing, the latest letter has time reset + case ShowTextMode.UserTyping: + ShowCharacterTimes(); + if (charactersCount > 1) + { + HideCharacterTime(charactersCount - 1); + characters[charactersCount - 1].isVisible = true; + } + break; + + case ShowTextMode.Refresh: + //Does nothing + break; + } + + _maxVisibleCharacters = charactersCount; + + // Makes sure deltaTime is updated instantly, as user might change the timeScale on the same frame as the + // text is set (or even at Start/Awake) and typewriters might detect deltaTime of 0 and skip showing the text + time.UpdateDeltaTime(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime); + + if(isResettingTimeOnNewText && showTextMode != ShowTextMode.Refresh) + time.RestartTime(); + } + + /// + /// Sets the text to Text Animator, parsing its rich text tags. + /// + /// Full text that you want to paste, including rich text tags. + /// This method shows the text instantly. To control if it should be hidden instead, please see . + public void SetText(string text) => ConvertText(text, ShowTextMode.Shown); + /// + /// Sets the text to Text Animator, parsing its rich text tags. + /// + /// + /// + public void SetText(string text, bool hideText) => ConvertText(text, hideText ? ShowTextMode.Hidden : ShowTextMode.Shown); + + //TODO optimize, only add new stuff without recalculating text + /// + /// Adds text to the already existing one, parsing its rich text tags. + /// + /// New text that you want to append + /// + public void AppendText(string appendedText, bool hideText = false) + { + //Prevents appending an empty text + if (string.IsNullOrEmpty(appendedText)) + return; + + //The user is appending to an empty text + //so we set it instead + if (!hasText) + { + SetText(appendedText, hideText); + return; + } + + bool previousResettingTime = isResettingTimeOnNewText; + isResettingTimeOnNewText = false; + + int currentMax = maxVisibleCharacters; + int currentFirst = firstVisibleCharacter; + SetText(textFull + appendedText, hideText); + + //restores visibility + isResettingTimeOnNewText = previousResettingTime; + maxVisibleCharacters = currentMax; + firstVisibleCharacter = currentFirst; + for (int i = firstVisibleCharacter; i < maxVisibleCharacters; i++) + { + characters[i].isVisible = true; + characters[i].passedTime = characters[i].info.appearancesMaxDuration; + } + } + + void SetTypewriterText(string text) + { + //temp fix, opening and closing this TMPro tag (which won't be showed in the text, acting like they aren't there) because otherwise + //there isn't any way to trigger that the text has changed, if it's actually the same as the previous one. + if (text.Length <= 0) //forces clearing the mesh during the tempFix, without the tags + typewriter.ShowText(""); + else + typewriter.ShowText($"{text}"); + } + + //TODO TEST + /// + /// Sets a character visibility. + /// + /// Character's index. See and the array. + /// Controls if the character should be visible + public void SetVisibilityChar(int index, bool isVisible) + { + if(index<0 ||index>=charactersCount) return; + characters[index].isVisible = isVisible; + if (isVisible) latestCharacterShown = characters[index]; + } + + //TODO TEST + /// + /// Sets a word visibility. + /// + /// Word's index. See and the array. + /// Controls if the word should be visible + public void SetVisibilityWord(int index, bool isVisible) + { + if(index<0 || index >= wordsCount) return; + + WordInfo word = words[index]; + for (int i = Mathf.Max(word.firstCharacterIndex, 0); i <= word.lastCharacterIndex && i < charactersCount; i++) + { + SetVisibilityChar(i, isVisible); + } + } + + + //TODO Test + /// + /// Sets the visibility of the entire text, also allowing to play or skip effects. + /// + /// + /// + public void SetVisibilityEntireText(bool isVisible, bool canPlayEffects = true) + { + for (int i = 0; i < charactersCount; i++) + { + SetVisibilityChar(i, isVisible); + } + + if (!canPlayEffects) + { + if (isVisible) + { + for (int i = 0; i < charactersCount;i++) + { + characters[i].passedTime = characters[i].info.appearancesMaxDuration; + } + } + else + { + for (int i = 0; i < charactersCount;i++) + { + characters[i].passedTime = 0; + } + } + } + } + + #endregion + + #region Typing + int _firstVisibleCharacter; + /// + /// Handles the very first character allowed to be visible in the text. + /// + /// + /// Be aware that in order to visible, a character also needs to also have its own "visible" flag set to true. See and + /// + public int firstVisibleCharacter + { + get => _firstVisibleCharacter; + set => _firstVisibleCharacter = value; + } + + int _maxVisibleCharacters = 0; + /// + /// Handles the very last character allowed to be visible in the text. + /// + /// + /// Be aware that in order to visible, a character also needs to also have its own "visible" flag set to true. See and + /// + public int maxVisibleCharacters + { + get => _maxVisibleCharacters; + set + { + if (_maxVisibleCharacters == value) return; + + _maxVisibleCharacters = value; + + //clamps value + if (_maxVisibleCharacters < 0) + _maxVisibleCharacters = 0; + } + } + + + #endregion + + + #region Animation + private void Update() + { + if(!IsReady()) return; + + //--Easy Integration checks-- + if(HasChangedText(textWithoutTextAnimTags)) + { + if(typewriterStartsAutomatically && typewriter) + { + SetTypewriterText(GetOriginalTextFromSource()); + return; + } + + ConvertText(GetOriginalTextFromSource(), ShowTextMode.UserTyping); + return; + } + + //--Animates in Core Loop-- + if (animationLoop == AnimationLoop.Update) + Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime); + } + + void LateUpdate() + { + if (animationLoop == AnimationLoop.LateUpdate) + Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime); + } + + protected abstract bool IsReady(); + + /// + /// Proceeds the text animation with the given deltaTime value. + /// + /// + /// + /// You could use this if is set to and you want to control when to animate the text. + /// + public void Animate(float deltaTime) + { + if(!IsReady()) return; + + if(requiresTagRefresh) + ConvertText(_text, ShowTextMode.Refresh); + + time.UpdateDeltaTime(deltaTime); + time.IncreaseTime(); + + AnimateText(); + } + + #region Processing Regions + + bool IsCharacterAppearing(int i) => + i >= _firstVisibleCharacter && i < _maxVisibleCharacters && characters[i].isVisible; + + void ProcessAnimationRegions(AnimationRegion[] regions) + { + foreach (var region in regions) + { + foreach (var range in region.ranges) + { + region.SetupContextFor(this, range.modifiers); //TODO index instead of passing modifier by value + + for (int i = range.indexes.x; i < range.indexes.y && i < charactersCount; i++) + { + if(characters[i].passedTime<=0) continue; + if(!region.IsVisibilityPolicySatisfied(IsCharacterAppearing(i))) continue; + + if(region.animation.CanApplyEffectTo(characters[i], this)) + region.animation.ApplyEffectTo(ref characters[i], this); + } + } + } + } + + #endregion + + /// + /// Main loop + /// + void AnimateText() + { + //no text, skips + if (!hasText) return; + + TryInitializing(); //called here as well since this might be called from outside + + //Prepare characters + for(int i = 0; i < charactersCount && icharacters[i].info.disappearancesMaxDuration) + characters[i].passedTime = characters[i].info.disappearancesMaxDuration; + else + characters[i].passedTime -= time.deltaTime; + + if (characters[i].passedTime <= 0) // "<=" to force hiding characters when TimeScale = 0 + { + characters[i].passedTime = 0; + characters[i].Hide(); + } + } + } + + UpdateUniformIntensity(); + + //Processes animations + //PS Order is important + if (isAnimatingBehaviors && settings.behaviors.enabled) + { + ProcessAnimationRegions(behaviors); + } + + if (isAnimatingAppearances && settings.appearances.enabled) + { + ProcessAnimationRegions(appearances); + ProcessAnimationRegions(disappearances); + } + + //updates source + PasteMeshToSource(characters); + + //checks for changes in the setting + if (requiresMeshUpdate || HasChangedRenderingSettings()) + { + ForceMeshUpdate(); + CopyMeshFromSource(ref characters); + } + } + + #endregion + + /// + /// Schedules that a mesh refresh is required as soon as possible, which will be applied before the next animation loop starts. + /// + public void ScheduleMeshRefresh() => requiresMeshUpdate = true; + public void ForceDatabaseRefresh() + { + if(DatabaseActions) DatabaseActions.ForceBuildRefresh(); + if(DatabaseAppearances) DatabaseAppearances.ForceBuildRefresh(); + if(DatabaseBehaviors) DatabaseBehaviors.ForceBuildRefresh(); + + ConvertText(GetOriginalTextFromSource(), ShowTextMode.Refresh); + } + + /// + /// Enables or disables behavior effects animation *LOCALLY* on this Text Animator component. + /// To change this globally, see + /// + /// + public void SetBehaviorsActive(bool isCategoryEnabled) => isAnimatingBehaviors = isCategoryEnabled; + + /// + /// Enables or disables appearance effects animation *LOCALLY* on this Text Animator component. + /// To change this globally, see + /// + /// + public void SetAppearancesActive(bool isCategoryEnabled) => isAnimatingAppearances = isCategoryEnabled; + + #region Callbacks + + protected virtual void OnEnable() // things might have changed when disabled, e.g. autoSize etc. + { + requiresMeshUpdate = true; + AnimateText(); + } + #endregion + + public void ResetState() + { + _text = string.Empty; + textWithoutTextAnimTags = string.Empty; + textWithoutAnyTag = string.Empty; + charactersCount = 0; + wordsCount = 0; + initialized = false; + TryInitializing(); + } + + + + #region Obsolete + // Just for compatibility with older versions + + [Obsolete("Use TextAnimatorSettings.SetAllEffectsActive instead")] + public static void EnableAllEffects(bool enabled) => TextAnimatorSettings.SetAllEffectsActive(enabled); + + [Obsolete("Use TextAnimatorSettings.SetAppearancesActive instead")] + public static void EnableAppearances(bool enabled) => TextAnimatorSettings.SetAppearancesActive(enabled); + + [Obsolete("Use TextAnimatorSettings.SetBehaviorsActive instead")] + public static void EnableBehaviors(bool enabled) => TextAnimatorSettings.SetBehaviorsActive(enabled); + + + [Obsolete("Use SetAppearancesActive instead")] + public void EnableAppearancesLocally(bool value) => SetAppearancesActive(value); + + [Obsolete("Use SetBehaviorsActive instead")] + public void EnableBehaviorsLocally(bool value) => SetBehaviorsActive(value); + + + /// + /// Turns all characters visible at the end of the frame (i.e. "a typewriter skip") + /// + /// Set this to true if you want all letters to appear instantly (without any appearance effect) + [System.Obsolete("Use SetVisibilityEntireText instead")] + public void ShowAllCharacters(bool skipAppearanceEffects) => SetVisibilityEntireText(true, skipAppearanceEffects); + + [System.Obsolete("Use 'Animate' instead.")] + public void UpdateEffects() => Animate(timeScale == TimeScale.Unscaled ? Time.unscaledDeltaTime : Time.deltaTime); + + [System.Obsolete("Events are not tied to TextAnimators anymore, but to their Typewriters. Please invoke 'TriggerRemainingEvents' on the Typewriter component instead.")] + public void TriggerRemainingEvents() + { + if(typewriter) typewriter.TriggerRemainingEvents(); + } + + [System.Obsolete( + "Events are not tied to TextAnimators anymore, but to their related typewriters. Please invoke 'TriggerVisibleEvents' on the Typewriter component instead.")] + public void TriggerVisibleEvents() + { + if(typewriter) typewriter.TriggerVisibleEvents(); + } + + [System.Obsolete("Use 'ScheduleMeshRefresh' instead")] + public void ForceMeshRefresh() => ScheduleMeshRefresh(); + + + [System.Obsolete("To restart TextAnimator's time, please use 'time.RestartTime()'. To skip appearances effects please set 'SetVisibilityEntireText(true, false)' instead")] + public void ResetEffectsTime(bool skipAppearances) + { + time.RestartTime(); + + if(skipAppearances) SetVisibilityEntireText(true, false); + } + + [System.Obsolete("Please use 'isResettingTimeOnNewText' instead")] + public bool isResettingEffectsOnNewText => isResettingTimeOnNewText; + + [System.Obsolete("Please use 'animationLoop' instead")] + public AnimationLoop updateMode => animationLoop; + + [System.Obsolete("Events are now handled/stored by Typewriters instead.")] + public MessageEvent onEvent => typewriter.onMessage; + + [System.Obsolete("Please use TextAnimatorSettings.Instance.appearances.enabled instead")] + public static bool effectsAppearancesEnabled => TextAnimatorSettings.Instance.appearances.enabled; + + [System.Obsolete("Please use TextAnimatorSettings.Instance.behaviors.enabled instead")] + public static bool effectsBehaviorsEnabled => TextAnimatorSettings.Instance.behaviors.enabled; + + [System.Obsolete("Please use 'textFull' instead")] + public string text => textFull; + + [System.Obsolete("Please change 'referenceFontSize' instead")] + public float effectIntensityMultiplier + { + get => referenceFontSize; + set => referenceFontSize = value; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta new file mode 100644 index 0000000..4fbeb25 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TAnimCore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ef08882d835b14448c3919401c5a566 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs new file mode 100644 index 0000000..8868002 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs @@ -0,0 +1,35 @@ +namespace Febucci.UI +{ + /// + /// Contains TextAnimator's current time values. + /// + [System.Serializable] + public struct TimeData + { + /// + /// Time passed since the textAnimator started showing the very first letter + /// + public float timeSinceStart { get; private set; } + + /// + /// TextAnimator's Component delta time, could be Scaled or Unscaled + /// + public float deltaTime { get; private set; } + + public void RestartTime() + { + timeSinceStart = 0; + } + + internal void IncreaseTime() => timeSinceStart += deltaTime; + + internal void UpdateDeltaTime(float deltaTime) + { + this.deltaTime = deltaTime; + + //To avoid possible desync errors etc., effects can't be played backwards. + if (deltaTime < 0) + deltaTime = 0; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta new file mode 100644 index 0000000..a68662d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7d512b128eb34fbbbfb3d7ddd5a07900 +timeCreated: 1672434698 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs new file mode 100644 index 0000000..03867cb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs @@ -0,0 +1,11 @@ +namespace Febucci.UI +{ + /// + /// TextAnimator's effects time scale, which could match unity's Time.deltaTime or Time.unscaledDeltaTime + /// + public enum TimeScale + { + Scaled, + Unscaled, + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta new file mode 100644 index 0000000..aaa5b99 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Animator/_Core/TimeScale.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7750818052bf43bdbdf9cf58aecedb0e +timeCreated: 1672434664 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta new file mode 100644 index 0000000..da8aff2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 11c8bab48f67f694281dd60b75bd1e39 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta new file mode 100644 index 0000000..df5be13 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebf5cc3c746f24542ba634e1b83b8b9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs new file mode 100644 index 0000000..4adbbf6 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs @@ -0,0 +1,86 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI +{ + /// + /// Built-in typewriter, which shows letters dynamically character after character.
+ /// To enable it, add this component near a one
+ /// - Base class:
+ /// - Manual: TextAnimatorPlayers + ///
+ [HelpURL("https://www.febucci.com/text-animator-unity/docs/typewriters/")] + [AddComponentMenu("Febucci/TextAnimator/Typewriter - By Character")] + public class TypewriterByCharacter : Core.TypewriterCore + { + [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for normal letters")] public float waitForNormalChars = .03f; + [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for ! ? .")] public float waitLong = .6f; + [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for ; : ) - ,")] public float waitMiddle = .2f; + [SerializeField, Tooltip("-True: only the last punctuaction on a sequence waits for its category time.\n-False: each punctuaction will wait, regardless if it's in a sequence or not")] public bool avoidMultiplePunctuactionWait = false; + + [SerializeField, Tooltip("True if you want the typewriter to wait for new line characters")] public bool waitForNewLines = true; + + [SerializeField, Tooltip("True if you want the typewriter to wait for all characters, false if you want to skip waiting for the last one")] public bool waitForLastCharacter = true; + + [SerializeField, Tooltip("True if you want to use the same typewriter's wait times for the disappearance progression, false if you want to use a different wait time")] public bool useTypewriterWaitForDisappearances = true; + [SerializeField, Attributes.CharsDisplayTime, Tooltip("Wait time for characters in the disappearance progression")] float disappearanceWaitTime = .015f; + [SerializeField, Attributes.MinValue(0.1f), Tooltip("How much faster/slower is the disappearance progression compared to the typewriter's typing speed")] public float disappearanceSpeedMultiplier = 1; + + protected override float GetWaitAppearanceTimeOf(int charIndex) + { + char character = TextAnimator.Characters[charIndex].info.character; + + //avoids waiting for the last character + if (!waitForLastCharacter && TextAnimator.allLettersShown) + return 0; + + //avoids waiting for multiple times if there are puntuactions near each other + if (avoidMultiplePunctuactionWait && char.IsPunctuation(character)) //curr char is punctuation + { + //next char is punctuation too, so skips this one + if (charIndex < TextAnimator.CharactersCount - 1 + && char.IsPunctuation(TextAnimator.Characters[charIndex + 1].info + .character)) + { + return waitForNormalChars; + } + } + + //avoids waiting for new lines + if (!waitForNewLines && !TextAnimator.latestCharacterShown.info.isRendered) + { + bool IsUnicodeNewLine(ulong unicode) //Returns true if the unicode value represents a new line + { + return unicode == 10 || unicode == 13; + } + + //skips waiting for a new line + if (IsUnicodeNewLine(System.Convert.ToUInt64(TextAnimator.latestCharacterShown.info.character))) + return 0; //TODO test + } + + //character is not before another punctuaction + switch (character) + { + case ';': + case ':': + case ')': + case '-': + case ',': return waitMiddle; + + case '!': + case '?': + case '.': + return waitLong; + } + + return waitForNormalChars; + + } + + protected override float GetWaitDisappearanceTimeOf(int charIndex) + { + return useTypewriterWaitForDisappearances ? GetWaitAppearanceTimeOf(charIndex) * (1/disappearanceSpeedMultiplier) : disappearanceWaitTime; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta new file mode 100644 index 0000000..5ed860d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByCharacter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57a6945b90dcd0c4b81619c0d8b5c283 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs new file mode 100644 index 0000000..5fc2add --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs @@ -0,0 +1,49 @@ +using UnityEngine; +using UnityEngine.Serialization; + +namespace Febucci.UI +{ + /// + /// Built-in typewriter, which shows letters dynamically word after word.
+ /// To enable it, add this component near a one
+ /// - Base class:
+ /// - Manual: TextAnimatorPlayers + ///
+ [HelpURL("https://www.febucci.com/text-animator-unity/docs/typewriters/")] + [AddComponentMenu("Febucci/TextAnimator/Typewriter - By Word")] + public class TypewriterByWord: Core.TypewriterCore + { + [SerializeField, Attributes.CharsDisplayTime] public float waitForNormalWord = 0.3f; + [FormerlySerializedAs("waitForWordWithPuntuaction")] [SerializeField, Attributes.CharsDisplayTime] public float waitForWordWithPunctuation = 0.5f; + [SerializeField, Attributes.CharsDisplayTime] public float disappearanceDelay = 0.5f; + + bool IsCharInsideAnyWord(int charIndex) + { + return TextAnimator.Characters[charIndex].wordIndex >= 0; + } + + protected override float GetWaitAppearanceTimeOf(int charIndex) + { + if (!IsCharInsideAnyWord(charIndex) && TextAnimator.latestCharacterShown.index>0) + { + int latestWordShownIndex = TextAnimator.Characters[TextAnimator.latestCharacterShown.index-1].wordIndex; + if (latestWordShownIndex >= 0 && latestWordShownIndex < TextAnimator.WordsCount) + { + var word = TextAnimator.Words[latestWordShownIndex]; + return char.IsPunctuation(TextAnimator.Characters[word.lastCharacterIndex].info.character) + ? waitForWordWithPunctuation + : waitForNormalWord; + } + + return waitForNormalWord; + } + + return 0; + } + + protected override float GetWaitDisappearanceTimeOf(int charIndex) + { + return !IsCharInsideAnyWord(charIndex) ? disappearanceDelay : 0; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta new file mode 100644 index 0000000..a0db774 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/Built-in/TypewriterByWord.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb821b3a89e0240aa91c53955ccade89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta new file mode 100644 index 0000000..e3cc056 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56405348257d5434abae725e56e3ff2e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs new file mode 100644 index 0000000..71529e7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs @@ -0,0 +1,7 @@ +using UnityEngine.Events; + +namespace Febucci.UI.Core +{ + [System.Serializable] + public class CharacterEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta new file mode 100644 index 0000000..8287bdb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/CharacterEvent.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a35872b2f367498cb45631f5e243278e +timeCreated: 1679673138 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs new file mode 100644 index 0000000..e5319d8 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs @@ -0,0 +1,8 @@ +using Febucci.UI.Core.Parsing; +using UnityEngine.Events; + +namespace Febucci.UI.Core +{ + [System.Serializable] + public class MessageEvent : UnityEvent { } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta new file mode 100644 index 0000000..2aa5d54 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/MessageEvent.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 84fd57f550b545b2a6ad379e4d4ea3b9 +timeCreated: 1679673142 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs new file mode 100644 index 0000000..2a06771 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs @@ -0,0 +1,624 @@ +using System.Collections; +using System.Collections.Generic; +using Febucci.UI.Core.Parsing; +using UnityEngine; +using UnityEngine.Events; + +namespace Febucci.UI.Core +{ + /// + /// Base class for all Typewriters.
+ /// - Manual: Typewriters.
+ ///
+ /// + /// If you want to use the built-in Typewriter, see: or
+ ///
+ /// You can also create custom typewriters by inheriting from this class.
+ /// Manual: Writing Custom Typewriters (C#) + ///
+ [DisallowMultipleComponent] + [RequireComponent(typeof(Core.TAnimCore))] + public abstract class TypewriterCore : MonoBehaviour + { + [System.Flags] + public enum StartTypewriterMode + { + /// + /// Typewriter starts typing ONLY if you invoke "StartShowingText" from any of your script. + /// + FromScriptOnly = 0, + + /// + /// Typewriter automatically starts/resumes from the "OnEnable" method + /// + OnEnable = 1, + + /// + /// Typewriter automatically starts once you call "ShowText" method [includes Easy Integration] + /// + OnShowText = 2, + + AutomaticallyFromAllEvents = OnEnable | OnShowText //legacy support for unity 2018.x [instead of automatic recognition in 2019+] + } + + #region Variables + + #region Management Variables + + TAnimCore _textAnimator; + + /// + /// The TextAnimator Component linked to this typewriter + /// + public TAnimCore TextAnimator + { + get + { + if (_textAnimator != null) + return _textAnimator; + +#if UNITY_2019_2_OR_NEWER + if(!TryGetComponent(out _textAnimator)) + { + Debug.LogError($"TextAnimator: Text Animator component is null on GameObject {gameObject.name}. Please add a component that inherits from TAnimCore"); + } +#else + _textAnimator = GetComponent(); + Assert.IsNotNull(_textAnimator, $"Text Animator Component component is null on GameObject {gameObject.name}. Please add a component that inherits from TAnimCore"); +#endif + + return _textAnimator; + } + } + + #endregion + + #region Typewriter settings + /// + /// true if the typewriter is enabled + /// + [Tooltip("True if you want to shows the text dynamically")] + [SerializeField] public bool useTypeWriter = true; + + [SerializeField, Tooltip("Controls from which method(s) the typewriter will automatically start/resume. Default is 'Automatic'")] + public StartTypewriterMode startTypewriterMode = StartTypewriterMode.AutomaticallyFromAllEvents; + + #region Typewriter Skip + [SerializeField] + bool hideAppearancesOnSkip = false; + [SerializeField, Tooltip("True = plays all remaining events once the typewriter has been skipped")] + bool triggerEventsOnSkip = false; + #endregion + + + [SerializeField, Tooltip("True = resets the typewriter speed every time a new text is set/shown")] public bool resetTypingSpeedAtStartup = true; + + public enum DisappearanceOrientation + { + /// + /// Linear left to right (or right to left based on the text's direction) + /// + SameAsTypewriter = 0, + + /// + /// Opposite direction of the typewriter + /// + Inverted = 1, + + /// + /// Hides letters randomly from start to finish + /// + Random = 2, + } + + [SerializeField] public DisappearanceOrientation disappearanceOrientation; + + #endregion + + #endregion + + #region Events + /// + /// Called once the text is completely shown.
+ /// If the typewriter is enabled, this event is called once it has ended showing all letters. + ///
+ public UnityEvent onTextShowed = new UnityEvent(); + + /// + /// Called once the typewriter starts showing text.
+ ///
+ /// + /// It is only invoked when the typewriter is enabled. + /// + public UnityEvent onTypewriterStart = new UnityEvent(); + + /// + /// Called once the typewriter has completed hiding all the letters. + /// + /// + /// It is only invoked when the typewriter is enabled. + /// + public UnityEvent onTextDisappeared = new UnityEvent(); + + /// + /// Called once a character has been shown by the typewriter.
+ ///
+ /// + /// It is only invoked when the typewriter is enabled. + /// + public CharacterEvent onCharacterVisible = new CharacterEvent(); + + + /// + /// Called once an event has been shown by the typewriter.
+ /// See the Events Manual for more info. + ///
+ /// + /// It is only invoked when the typewriter is enabled. + /// + public MessageEvent onMessage = new MessageEvent(); + #endregion + + #region Public Methods + + /// + /// Sets the given text to the connected TextAnimator component.
+ /// If enabled, it also starts showing letters dynamically.
+ /// - Manual: Text Animator Players + ///
+ /// + /// + /// If the typewriter is enabled but its start mode doesn't include , this method won't start showing letters. You'd have to manually call in order to start the typewriter, or include different "start modes" like and let the script manage it automatically. + /// + public void ShowText(string text) + { + // --- SETS TEXT --- + if (string.IsNullOrEmpty(text)) + { + TextAnimator.SetText(string.Empty, true); + return; + } + + TextAnimator.SetText(text, useTypeWriter); + TextAnimator.firstVisibleCharacter = 0; + + // --- TYPEWRITER --- + if (!useTypeWriter) + onTextShowed?.Invoke(); + else if (startTypewriterMode.HasFlag(StartTypewriterMode.OnShowText)) + StartShowingText(true); + } + + + /// + /// Skips the typewriter animation (if it's currently showing).
+ /// In case the text is revealing, it will show all the letters immediately.
+ /// In case the text is hiding, it will hide all the letters immediately. + ///
+ /// + /// If both revealing and hiding are occurring, hiding will prevail. + /// + public void SkipTypewriter() + { + if (isShowingText) + { + StopAllCoroutines(); + isShowingText = false; + + TextAnimator.SetVisibilityEntireText(true, !hideAppearancesOnSkip); + + if (triggerEventsOnSkip) + { + TriggerEventsUntil(int.MaxValue); + } + + onTextShowed?.Invoke(); + } + + //TODO is hiding + + } + + + #region Typewriter + + #region Appearing + + /// + /// True if the typewriter is currently showing letters + /// + public bool isShowingText { get; private set; } + + /// + /// Starts showing letters dynamically + /// + /// false if you want the typewriter to resume where it has left. true if the typewriter should restart from character 0 + public void StartShowingText(bool restart = false) + { + if(TextAnimator.CharactersCount==0) return; + + if (!useTypeWriter) + { + Debug.LogWarning("TextAnimator: couldn't start coroutine because 'useTypewriter' is disabled"); + return; + } + + if (isShowingText) + { + StopShowingText(); + } + + if (restart) + { + TextAnimator.SetVisibilityEntireText(false, false); + latestActionTriggered = 0; + latestEventTriggered = 0; + } + + if (resetTypingSpeedAtStartup) internalSpeed = 1; + isShowingText = true; + showRoutine = StartCoroutine(ShowTextRoutine()); + } + + protected abstract float GetWaitAppearanceTimeOf(int charIndex); + + Coroutine showRoutine; + Coroutine nestedActionRoutine; + + float GetDeltaTime(TypingInfo typingInfo) => TextAnimator.time.deltaTime * internalSpeed * typingInfo.speed; + IEnumerator ShowTextRoutine() + { + isShowingText = true; + + // --- INITIALIZATION --- + TypingInfo typingInfo = new TypingInfo(); + + // --- CALLBACKS --- + onTypewriterStart?.Invoke(); + + TextAnimatorSettings settings = TextAnimatorSettings.Instance; + bool actionsEnabled = settings && settings.actions.enabled; + + // --- SHOWS TEXT LETTERS --- + for(int i=0;i= deltaTime) //waits only if we "surpassed" a frame duration + { + yield return null; + //saves remaining time to next frame as already waited time + typingInfo.timePassed %= deltaTime; + } + } + else + { + //waits until enough time has passed + while (typingInfo.timePassed < timeToWait) + { + typingInfo.timePassed += deltaTime; + yield return null; + deltaTime = GetDeltaTime(typingInfo); + } + + typingInfo.timePassed %= timeToWait; //saves remaining time to next frame + } + } + + // --- FINALIZATION --- + if (actionsEnabled) + { + for (int a = latestActionTriggered; a < TextAnimator.Actions.Length && TextAnimator.Actions[a].index + /// Stops showing letters dynamically, leaving the text as it is. + /// + public void StopShowingText() + { +#if UNITY_EDITOR + if (!Application.isPlaying) //prevents from firing in edit mode from the context menu + return; +#endif + if(!isShowingText) return; + isShowingText = false; + + if(showRoutine!=null) StopCoroutine(showRoutine); + if(nestedActionRoutine!=null) StopCoroutine(nestedActionRoutine); + } + + #endregion + + #region Disappearing + + /// + /// True if the typewriter is currently disappearing the text + /// + public bool isHidingText { get; private set; } + + /// + /// Starts disappearing the text dynamically + /// + [ContextMenu("Start Disappearing Text")] + public void StartDisappearingText() + { + if (disappearanceOrientation == DisappearanceOrientation.Inverted && isShowingText) + { + Debug.LogWarning("TextAnimatorPlayer: Can't start disappearance routine in the opposite direction of the typewriter, because you're still showing the text! (the typewriter might get stuck trying to show and override letters that keep disappearing)"); + return; + } + + if(isHidingText) return; + hideRoutine = StartCoroutine(HideTextRoutine()); + } + + Coroutine hideRoutine; + Coroutine nestedHideRoutine; + /// + /// Stops the typewriter's from disappearing the text dynamically, leaving the text at its current state + /// + [ContextMenu("Stop Disappearing Text")] + public void StopDisappearingText() + { + if(!isHidingText) return; + isHidingText = false; + + if(hideRoutine!=null)StopCoroutine(hideRoutine); + if(nestedHideRoutine!=null)StopCoroutine(nestedHideRoutine); + } + + /// + /// Handles characters delay when disappearing text. + /// + /// Current character that should decide how much time to wait. Check to view its info + /// time to wait before disappearing the next character + protected virtual float GetWaitDisappearanceTimeOf(int charIndex) => GetWaitAppearanceTimeOf(charIndex); + + static int[] ShuffleArray(int[] array) + { + var rng = new System.Random(); + var n = array.Length; + while (n > 1) + { + var k = rng.Next(n--); + (array[n], array[k]) = (array[k], array[n]); + } + + return array; + } + + IEnumerator HideTextRoutine() + { + isHidingText = true; + + // --- INITIALIZATION --- + TypingInfo typingInfo = new TypingInfo(); + + // Chooses the order in which the letters will disappear + int[] indexes = new int[TextAnimator.CharactersCount]; + switch (disappearanceOrientation) + { + default: + case DisappearanceOrientation.SameAsTypewriter: //disappears from the end + for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = i; + break; + case DisappearanceOrientation.Inverted: + for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = TextAnimator.CharactersCount - i - 1; + break; + + case DisappearanceOrientation.Random: + for (int i = 0; i < TextAnimator.CharactersCount; i++) indexes[i] = i; + indexes = ShuffleArray(indexes); + break; + } + + // --- CALLBACKS --- + + // --- HIDES TEXT --- + for (int i = 0; i < TextAnimator.CharactersCount; i++) + { + int indexToHide = indexes[i]; + if(!TextAnimator.Characters[indexToHide].isVisible) continue; + + TextAnimator.SetVisibilityChar(indexToHide, false); + float timeToWait = GetWaitDisappearanceTimeOf(indexToHide); + + // -- WAITS TIME -- (identical to ShowTextRoutine, in order to skip frames correctly) + float deltaTime = GetDeltaTime(typingInfo); + if (timeToWait < 0) timeToWait = 0; + if (timeToWait < deltaTime) //waiting less time than a frame, we don't wait yet + { + typingInfo.timePassed += timeToWait; + if (typingInfo.timePassed >= deltaTime) //waits only if we "surpassed" a frame duration + { + yield return null; + //saves remaining time to next frame as already waited time + typingInfo.timePassed %= deltaTime; + } + } + else + { + //waits until enough time has passed + while (typingInfo.timePassed < timeToWait) + { + typingInfo.timePassed += deltaTime; + yield return null; + deltaTime = GetDeltaTime(typingInfo); + } + + typingInfo.timePassed %= timeToWait; //saves remaining time to next frame + } + } + + // --- CALLBACKS --- + onTextDisappeared?.Invoke(); + isHidingText = false; + } + + #endregion + + /// + /// Makes the typewriter slower/faster, by setting its internal speed multiplier. + /// + /// + /// + /// If the typewriter has to wait 1 second to show the next letter but you set the typewriter speed to 2, the typewriter will wait 0.5 seconds. + /// + /// + /// The minimum value is 0.001 + /// + public void SetTypewriterSpeed(float value) + { + internalSpeed = Mathf.Clamp(value, .001f, value); + } + + #endregion + + #endregion + + + #region Utilties + + float internalSpeed = 1; + + #region Actions and Events + + int latestActionTriggered = 0; + int latestEventTriggered = 0; + + void TriggerEventsBeforeAction(int maxIndex, ActionMarker action) + { + for (int i = latestEventTriggered; i < TextAnimator.Events.Length && TextAnimator.Events[i].index + /// Triggers all messages/events that have not yet been triggered, even if they're not shown in the yet. + /// + /// + /// + /// + public void TriggerRemainingEvents() => TriggerEventsUntil(int.MaxValue); + + /// + /// Triggers all messages/events that have not been triggered, but that are in the visible range of the text. + /// + /// + /// + /// + public void TriggerVisibleEvents() => TriggerEventsUntil(TextAnimator.latestCharacterShown.index); + #endregion + + #endregion + + + /// + /// Unity's default MonoBehavior 'OnEnable' callback. + /// + /// + /// P.S. If you're overriding this method, don't forget to invoke the base one. + /// + protected virtual void OnEnable() + { + if (!useTypeWriter) + return; + + if (!startTypewriterMode.HasFlag(StartTypewriterMode.OnEnable)) + return; + + StartShowingText(); + } + + /// + /// Unity's default MonoBehavior 'OnDisable' callback. + /// + /// + /// P.S. If you're overriding this method, don't forget to invoke the base one. + /// + protected virtual void OnDisable() + { + // for backwards compatibility + } + + #region Obsolete + + [System.Obsolete("Please set the speed through 'SetTypewriterSpeed' method instead")] + protected float typewriterPlayerSpeed + { + get => internalSpeed; + set => SetTypewriterSpeed(value); + } + + [System.Obsolete("Please skip the typewriter via the 'SkipTypewriter' method instead")] + protected bool wantsToSkip + { + get => throw new System.NotImplementedException(); + set + { + if(value) SkipTypewriter(); + } + } + + [System.Obsolete("Please use 'isShowingText' instead")] + protected bool isBaseInsideRoutine => isShowingText; + + + [System.Obsolete("Please use 'TextAnimator' instead")] + public TAnimCore textAnimator => TextAnimator; + + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta new file mode 100644 index 0000000..d42cae2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypewriterCore.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac6b0a2b8ddbab342ad54b5409ccffec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs new file mode 100644 index 0000000..7634772 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs @@ -0,0 +1,18 @@ +namespace Febucci.UI.Core +{ + /// + /// A way to store information about the typing progress between coroutines, + /// also allowing to keep track of time between frames and characters/words showed + /// + public class TypingInfo + { + public float speed = 1; + public float timePassed { get; internal set; } = 0; + + public TypingInfo() + { + this.speed = 1; + this.timePassed = 0; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta new file mode 100644 index 0000000..47f4f8d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Components/Typewriter/_Core/TypingInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 116f934309cb4a4fa084190dac6083f4 +timeCreated: 1679673152 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef new file mode 100644 index 0000000..928a28b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef @@ -0,0 +1,16 @@ +{ + "name": "Febucci.TextAnimator.Runtime", + "rootNamespace": "", + "references": [ + "GUID:448b0b55421917e4784a8f2f7449081f" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta new file mode 100644 index 0000000..86c6ef3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Febucci.TextAnimator.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1e113d3b5d77bc04eab508251483e8ff +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta new file mode 100644 index 0000000..01481e2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b82ca89fa6e4443c184b6c6a988ce125 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta new file mode 100644 index 0000000..4ccee7b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bae97d779d1a5423bbb8446fc2e88fc6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta new file mode 100644 index 0000000..565b724 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ba7e1fc9cc234e52bea0b6e3765e563 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs new file mode 100644 index 0000000..14345f0 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs @@ -0,0 +1,11 @@ +using Febucci.UI.Core; + +namespace Febucci.UI.Actions +{ + [System.Serializable] + [UnityEngine.CreateAssetMenu(fileName = "ActionDatabase", menuName = "Text Animator/Actions/Create Actions Database", order = 100)] + public class ActionDatabase : Core.Database + { + + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta new file mode 100644 index 0000000..1f2cb2b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionDatabase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 975089f62a0f141b0b6c1e96bb49c873 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs new file mode 100644 index 0000000..9834e69 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs @@ -0,0 +1,10 @@ +namespace Febucci.UI.Core.Parsing +{ + /// + /// Contains information about an action tag in text. + /// + public sealed class ActionMarker : MarkerBase + { + public ActionMarker(string name, int index, int internalOrder, string[] parameters) : base(name, index, internalOrder, parameters) { } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta new file mode 100644 index 0000000..53655c3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionMarker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88dd2b2ee4cae41c1ab322d46fc27c51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs new file mode 100644 index 0000000..4de3d2d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs @@ -0,0 +1,62 @@ +using System.Text; +using Febucci.UI.Actions; + +namespace Febucci.UI.Core.Parsing +{ + public sealed class ActionParser : TagParserBase + { + public ActionDatabase database; + + //--- RESULTS --- + ActionMarker[] _results; + public ActionMarker[] results => _results; //TODO cache + + public ActionParser(char startSymbol, char closingSymbol, char endSymbol, ActionDatabase actionDatabase) + : base(startSymbol, closingSymbol, endSymbol) + { + this.database = actionDatabase; + } + + protected override void OnInitialize() + { + base.OnInitialize(); + _results = new ActionMarker[0]; + if(database) database.BuildOnce(); + } + + public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder) + { + if (!database) + return false; + + database.BuildOnce(); + //gets the name of the action from the tag + //if there's an equal sign, it means there are parameters + int equalIndex = textInsideBrackets.IndexOf('='); + string actionName = equalIndex == -1 ? textInsideBrackets : textInsideBrackets.Substring(0, equalIndex); + actionName = actionName.ToLower(); //action names are case insensitive + + if (!database.ContainsKey(actionName)) return false; //skips unrecognized tags + + //Creates a new action + ActionMarker textAction; + + //If the action has parameters + if(equalIndex != -1) + { + string parameters = textInsideBrackets.Substring(equalIndex + 1); + textAction = new ActionMarker(actionName, realTextIndex, internalOrder, parameters.Replace(" ", "").Split(',')); + } + else + { + textAction = new ActionMarker(actionName, realTextIndex, internalOrder, new string[0]); + } + + //adds action to results + System.Array.Resize(ref _results, _results.Length + 1); + _results[_results.Length - 1] = textAction; + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta new file mode 100644 index 0000000..0d9e061 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Actions/ActionParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b6593795a37f4d9ea045b10d92ce442 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta new file mode 100644 index 0000000..56ce640 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4267f6f185ce4a81aa5e74e70e8696e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs new file mode 100644 index 0000000..c16c625 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs @@ -0,0 +1,10 @@ +namespace Febucci.UI.Core.Parsing +{ + /// + /// Contains information about an event called in text + /// + public class EventMarker : Parsing.MarkerBase + { + public EventMarker(string name, int index, int internalOrder, string[] parameters) : base(name, index, internalOrder, parameters) { } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta new file mode 100644 index 0000000..c03f528 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventMarker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07720fa0081784ae9aa4f33c20050078 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs new file mode 100644 index 0000000..df32a26 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs @@ -0,0 +1,52 @@ +using System.Text; + +namespace Febucci.UI.Core.Parsing +{ + public class EventParser : TagParserBase + { + const char eventSymbol = '?'; + + public EventParser(char openingBracket, char closingBracket, char closingTagSymbol) + : base(openingBracket, closingBracket, closingTagSymbol){ } + + EventMarker[] _results; + + public EventMarker[] results => _results; + + protected override void OnInitialize() + { + base.OnInitialize(); + _results = new EventMarker[0]; + } + + public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder) + { + //If the first character is not the event symbol, skips + if (textInsideBrackets[0] != eventSymbol) + return false; + + //Creates a new event + EventMarker textEvent; + + //If the event has parameters + int indexOfEquals = textInsideBrackets.IndexOf('='); + if(indexOfEquals != -1) + { + string eventName = textInsideBrackets.Substring(1, indexOfEquals - 1); + string parameters = textInsideBrackets.Substring(indexOfEquals + 1); + + //TODO fast strip + textEvent = new EventMarker(eventName, realTextIndex, internalOrder, parameters.Replace(" ", "").Split(',')); + } + else + { + textEvent = new EventMarker(textInsideBrackets.Substring(1), realTextIndex, internalOrder, new string[0]); + } + + System.Array.Resize(ref _results, _results.Length + 1); + _results[_results.Length - 1] = textEvent; + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta new file mode 100644 index 0000000..bf44a41 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/Events/EventParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5992208bf6566454398999726c886d89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta new file mode 100644 index 0000000..251bc72 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2971a97a3d8c14f359a2a9b5d9db390e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs new file mode 100644 index 0000000..a420b03 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs @@ -0,0 +1,47 @@ +namespace Febucci.UI.Core.Parsing +{ + public abstract class MarkerBase : System.IComparable + { + public readonly string name; + public readonly int index; + internal readonly int internalOrder; + public string[] parameters; + + public MarkerBase(string name, int index, int internalOrder, string[] parameters) + { + this.name = name; + this.index = index; + this.internalOrder = internalOrder; + this.parameters = parameters; + } + + /// + /// Checks if a marker is placed before another in text. + /// PS. Checks for internal order, since when a letter is shown (character index) + /// there might be multiple events happening + /// + /// + /// + public int CompareTo(MarkerBase other) + { + return internalOrder.CompareTo(other.internalOrder); + } + + public override string ToString() + { + System.Text.StringBuilder sb = new System.Text.StringBuilder(); + sb.Append(name); + sb.Append(" internal order:"); + sb.Append(internalOrder); + sb.Append(" index:"); + sb.Append(index); + sb.Append('\n'); + for (int i = 0; i < parameters.Length; i++) + { + sb.Append(parameters[i]); + sb.Append('\n'); + } + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta new file mode 100644 index 0000000..ffcafe7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Markers/_Core/MarkerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b7eebc58c32445fd9af5a1b681b2266 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta new file mode 100644 index 0000000..6b8ded0 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5104e8d934da1497e8d56e84dcec2511 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta new file mode 100644 index 0000000..6c860d4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44576839baa2d4f7488e12a2f1ebbd1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs new file mode 100644 index 0000000..1d56d0a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs @@ -0,0 +1,115 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Febucci.UI.Effects; + +namespace Febucci.UI.Core.Parsing +{ + /// + /// Rules how to parse a rich text tag that has an opening and ending + /// + public class AnimationParser : TagParserBase where T : AnimationScriptableBase + { + //--- DATABASE --- + public Database database; + VisibilityMode visibilityMode; + char middleSymbol; + const char middleSymbolDefault = '\n'; //this will never be set... right? right??? + + //--- CONSTRUCTORS --- + public AnimationParser(char startSymbol, char closingSymbol, char endSymbol, VisibilityMode visibilityMode, Database database) : base(startSymbol, closingSymbol, endSymbol) + { + this.visibilityMode = visibilityMode; + this.database = database; + this.middleSymbol = middleSymbolDefault; + } + + public AnimationParser(char startSymbol, char closingSymbol, char middleSymbol, char endSymbol, VisibilityMode visibilityMode, Database database) : base(startSymbol, closingSymbol, endSymbol) + { + this.visibilityMode = visibilityMode; + this.database = database; + this.middleSymbol = middleSymbol; + } + + //--- RESULTS --- + Dictionary _results; + + public AnimationRegion[] results => _results.Values.ToArray(); //TODO cache + + protected override void OnInitialize() + { + base.OnInitialize(); + + _results = new Dictionary(); + if(database) database.BuildOnce(); + } + + + public override bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder) + { + if (!database) return false; + + textInsideBrackets = textInsideBrackets.ToLower(); //animations are case insensitive + + //Makes sure the database is built + database.BuildOnce(); + + //If the first character is a closing symbol, then it's a closing tag + bool isClosing = textInsideBrackets[0] == closingSymbol; + //tries closing all previous regions if tag is / + if (isClosing && tagLength == 1) + { + foreach (var range in _results.Values) + { + range.CloseAllOpenedRanges(realTextIndex); + } + return true; + } + + int tagStart = isClosing ? 1 : 0; + + string fullTag = textInsideBrackets.Substring(tagStart); + string[] tempTagWords = fullTag.Split(); + string tempTagName = tempTagWords[0]; + + //invalid closing tag, since there are modifiers + if (isClosing && tempTagWords.Length > 1) + return false; + + //----CHECKS IF TAG IS RECOGNIZED---- + + //removes middle symbol if present + //so that it can also work with disappearance effects etc. + //e.g. {#shake} + //TODO tests for this + if (middleSymbol != middleSymbolDefault) + { + if(tempTagName[0] != middleSymbol) return false; + tempTagName = tempTagName.Substring(1); + } + + if (!database.ContainsKey(tempTagName)) return false; //Skips unrecognized tags + + //----ADDS RESULT---- + if (isClosing) + { + if (_results.ContainsKey(tempTagName)) + _results[tempTagName].TryClosingRange(realTextIndex); + } + else + { + //Creates new region if it doesn't exist yet + if (!_results.ContainsKey(tempTagName)) + _results.Add(tempTagName, new AnimationRegion(tempTagName, visibilityMode, database[tempTagName])); + + _results[tempTagName].OpenNewRange(realTextIndex, tempTagWords); + } + + /* + Returns true nonetheless, since even if the tag might have not been processed correctly, + it's still a Text Animator tag that shouldn't appear in the final text + */ + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta new file mode 100644 index 0000000..62ceb97 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8690f773b4aba40a9b72dad8937dd503 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs new file mode 100644 index 0000000..efd595c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs @@ -0,0 +1,122 @@ +using UnityEngine; +using System.Text; +using System; +using Febucci.UI.Effects; + +namespace Febucci.UI.Core.Parsing +{ + + [Flags] + public enum VisibilityMode + { + OnVisible = 1, + OnHiding = 2, + Persistent = OnVisible | OnHiding, + } + + /// + /// Contains information of a region in the text + /// + public class AnimationRegion : RegionBase + { + readonly VisibilityMode visibilityMode; + public readonly AnimationScriptableBase animation; + + public AnimationRegion(string tagId, VisibilityMode visibilityMode, AnimationScriptableBase animation) : base(tagId) + { + this.visibilityMode = visibilityMode; + this.animation = animation; + } + + public bool IsVisibilityPolicySatisfied(bool visible) => visibilityMode == VisibilityMode.Persistent || visibilityMode.HasFlag(VisibilityMode.OnVisible) == visible; + + #region Ranges + + + public void OpenNewRange(int startIndex) => OpenNewRange(startIndex, Array.Empty()); + + public void OpenNewRange(int startIndex, string[] tagWords) + { + Array.Resize(ref ranges, ranges.Length + 1); + TagRange range = new TagRange(new Vector2Int(startIndex, int.MaxValue)); + + //Adds modifiers + for (int i = 1; i < tagWords.Length; i++) //starts from 1 'cos skips tag name + { + string tag = tagWords[i]; + int equalIndex = tag.IndexOf('='); + if (equalIndex <= 0) continue; //invalid modifier + + if (FormatUtils.TryGetFloat(tag.Substring(equalIndex + 1), 0, out var result)) + { + Array.Resize(ref range.modifiers, range.modifiers.Length + 1); + range.modifiers[range.modifiers.Length - 1] = new ModifierInfo(tag.Substring(0, equalIndex), result); + } + } + + ranges[ranges.Length - 1] = range; + } + + //TODO testing + public void TryClosingRange(int endIndex) + { + if (ranges.Length == 0) return; //no otherTag was opened before + + for (int i = ranges.Length - 1; i >= 0; i--) + { + if (ranges[i].indexes.y != int.MaxValue) continue; // otherTag was already closed + + var range = ranges[i]; + range.indexes.y = endIndex; + ranges[i] = range; + break; //found a range to close + } + } + + public void CloseAllOpenedRanges(int endIndex) + { + if (ranges.Length == 0) return; //no otherTag was opened before + + for (int i = ranges.Length - 1; i >= 0; i--) + { + if (ranges[i].indexes.y != int.MaxValue) continue; // otherTag was already closed + + var range = ranges[i]; + range.indexes.y = endIndex; + ranges[i] = range; + } + } + #endregion + + #region Animation + + public virtual void SetupContextFor(TAnimCore animator, ModifierInfo[] modifiers) + { + animation.ResetContext(animator); + + foreach(var mod in modifiers) + animation.SetModifier(mod); + } + #endregion + + public override string ToString() + { + StringBuilder text = new StringBuilder(); + text.Append("tag: "); + text.Append(tagId); + if (ranges.Length == 0) text.Append("\nNo ranges"); + else + { + for (int i = 0; i < ranges.Length; i++) + { + text.Append('\n'); + text.Append('-'); + text.Append('-'); + text.Append(ranges[i]); + } + } + + return text.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta new file mode 100644 index 0000000..63b6916 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/Animations/AnimationRegion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ff8e127f267378409a5cb9bdf7f2c10 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta new file mode 100644 index 0000000..9dcb929 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da51d4014591a4119940f9647d5b6cf6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs new file mode 100644 index 0000000..ce7105c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs @@ -0,0 +1,21 @@ +using System; + +namespace Febucci.UI +{ + public struct ModifierInfo: IEquatable + { + public string name; + public float value; + + public ModifierInfo(string name, float value) + { + this.name = name; + this.value = value; + } + + public bool Equals(ModifierInfo other) => value.Equals(other.value) && name.Equals(other.name); + + public override string ToString() => $"{name}={value}"; + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta new file mode 100644 index 0000000..5340fb7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/ModifierInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c67b17c620c357c48a6fa7c63135b03f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs new file mode 100644 index 0000000..5d49315 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs @@ -0,0 +1,33 @@ +using UnityEngine; +using System; + +namespace Febucci.UI.Core.Parsing +{ + public abstract class RegionBase + { + public readonly string tagId; + public TagRange[] ranges; + + public RegionBase(string tagId) + { + this.tagId = tagId; + ranges = Array.Empty(); + } + + public RegionBase(string tagId, params TagRange[] ranges) + { + this.tagId = tagId; + this.ranges = ranges; + } + + public RegionBase(string tagId, params Vector2Int[] ranges) + { + this.tagId = tagId; + int len = tagId.Length + 2; //plus opening/closing symbols + this.ranges = new TagRange[ranges.Length]; + for (int i = 0; i < this.ranges.Length; i++) + this.ranges[i] = new TagRange(ranges[i]); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta new file mode 100644 index 0000000..563c429 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/RegionBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a3db40c7789a4b2e8f4b7c760c42d26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs new file mode 100644 index 0000000..4b345cf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs @@ -0,0 +1,41 @@ +using UnityEngine; +using System.Text; + +namespace Febucci.UI.Core.Parsing +{ + public struct TagRange + { + /// + /// text index range of where to apply the tag + /// + public Vector2Int indexes; + public ModifierInfo[] modifiers; + + public TagRange(Vector2Int indexes, params ModifierInfo[] modifiers) + { + this.indexes = indexes; + this.modifiers = modifiers; + } + + public override string ToString() + { + StringBuilder text = new StringBuilder(); + + text.Append("indexes: "); + text.Append(indexes); + if (modifiers == null || modifiers.Length == 0) + text.Append("\n no modifiers"); + else + { + for (int i = 0; i < modifiers.Length; i++) + { + text.Append('\n'); + text.Append('-'); + text.Append(modifiers[i]); + } + } + return text.ToString(); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta new file mode 100644 index 0000000..9e712ae --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/Regions/_Core/TagRange.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc9fe708cb635ad47bc864d6a4949899 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs new file mode 100644 index 0000000..6d19bc2 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs @@ -0,0 +1,119 @@ +using System.Text; + +namespace Febucci.UI.Core.Parsing +{ + /// + /// Handles text parsing and rich text tags recognition + /// + public static class TextParser + { + public static string ParseText(string text, params TagParserBase[] rules) + { + if(rules == null || rules.Length == 0) + { + UnityEngine.Debug.LogWarning("No rules were provided to parse the text. Skipping"); + return text; + } + + //PS At the moment, only for avoiding fails on domain reload + //and multiple tags on different text sets + foreach (var rule in rules) + { + rule.Initialize(); + } + + /* + P.S. Calculating tags etc. is done inside this single method (and not split for each rule etc.) + so that the text is only parsed once, and not multiple times for each rule - improving performance + */ + StringBuilder result = new StringBuilder(); + + // create an array of character from text + var characters = text.ToCharArray(); + int len = characters.Length; + bool foundTag; + string fullTag; + bool allowParsing = true; + + //For every character in text + for(int textIndex = 0, realTextIndex = 0; textIndex < len; textIndex++) + { + foundTag = false; + + //searches for noparse first + if (characters[textIndex] == '<') + { + int closeIndex = text.IndexOf('>', textIndex + 1); + if(closeIndex>0) + { + int tagLength = closeIndex - textIndex + 1; + void PasteTagToText() + { + foundTag = true; + result.Append(fullTag); + textIndex = closeIndex; + } + + fullTag = text.Substring(textIndex, tagLength); + switch (fullTag.ToLower()) + { + case "": + allowParsing = false; + PasteTagToText(); + break; + case "": + allowParsing = true; + PasteTagToText(); + break; + } + } + } + + if (allowParsing && !foundTag) + { + foreach (var rule in rules) //tries rich tags + { + if (characters[textIndex] == rule.startSymbol) + { + for (int endIndex = textIndex + 1; endIndex < len && !foundTag; endIndex++) + { + //If there's an opening symbol, skips since it's a new tag + if (characters[endIndex] == rule.startSymbol) + break; + + if (characters[endIndex] == rule.endSymbol) + { + // Gets the length of the tag + int tagLength = endIndex - textIndex - 1; + + if (tagLength == 0) //Skips empty tag + break; + + if (rule.TryProcessingTag( + text.Substring(textIndex + 1, tagLength), + tagLength, + ref realTextIndex, + result, + textIndex)) + { + foundTag = true; + textIndex = endIndex; //Tag processed, skips others + break; + } + } + } + } + } + } + + if (!foundTag) + { + result.Append(characters[textIndex]); + realTextIndex++; + } + } + + return result.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta new file mode 100644 index 0000000..3bc89db --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/TextParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62b50d2f8435a44d5abcc3b0aec4daed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta new file mode 100644 index 0000000..f89e84d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e43be599da104e6bba973f670eecf31 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs new file mode 100644 index 0000000..69e61b6 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs @@ -0,0 +1,14 @@ +namespace Febucci.UI.Core +{ + public struct CharInfo + { + internal bool initialized; + public float disappearancesMaxDuration; + public float appearancesMaxDuration; + + public float pointSize; + + public char character; //TODO test + public bool isRendered; + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta new file mode 100644 index 0000000..25488ae --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7317a03cd5fb4135ba38336b9ed9fd1c +timeCreated: 1672437590 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs new file mode 100644 index 0000000..6ac4250 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +namespace Febucci.UI.Core +{ + public struct CharacterData + { + public CharInfo info; + + public int index; + public int wordIndex; + public bool isVisible; + public float passedTime; + + public float uniformIntensity; + + public MeshData source; + public MeshData current; + + public void ResetInfo(int i) + { + + index = i; + wordIndex = -1; + isVisible = true; //text is visible by default + + //--Initializes first time only-- + if (!info.initialized) + { + source.positions = new Vector3[Core.TextUtilities.verticesPerChar]; + source.colors = new Color32[Core.TextUtilities.verticesPerChar]; + + current.positions = new Vector3[Core.TextUtilities.verticesPerChar]; + current.colors = new Color32[Core.TextUtilities.verticesPerChar]; + } + + } + + public void ResetAnimation() + { + for (int i = 0; i < source.positions.Length; i++) + { + current.positions[i] = source.positions[i]; + current.colors[i] = source.colors[i]; + } + } + + public void Hide() + { + for (byte i = 0; i < source.positions.Length; i++) + { + current.positions[i] = Vector3.zero; + } + } + + public void UpdateIntensity(float referenceFontSize) + { + uniformIntensity = info.pointSize / referenceFontSize; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta new file mode 100644 index 0000000..77b342e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/CharacterData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36a40ff9978cfb0458b260b57a2e84f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs new file mode 100644 index 0000000..1e75a06 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; + +namespace Febucci.UI.Core +{ + /// + /// Caches information about tag providers, so that + /// it's easier to access them + /// + /// + [System.Serializable] + public class Database : UnityEngine.ScriptableObject where T : UnityEngine.ScriptableObject, ITagProvider + { + bool built; + + void OnEnable() + { + //Prevents database from not refreshing on + //different domain reload settings + built = false; + } + + [UnityEngine.SerializeField] System.Collections.Generic.List data = new List(); + public System.Collections.Generic.List Data => data; + + public void Add(T element) + { + if(data == null) data = new System.Collections.Generic.List(); + data.Add(element); + + // at runtime adds directly on database as well, without needing to rebuild + if (built && UnityEngine.Application.isPlaying) + { + string tag = element.TagID; + if (dictionary.ContainsKey(tag)) + UnityEngine.Debug.LogError($"Text Animator: Tag {tag} is already present in the database. Skipping..."); + else + dictionary.Add(tag, element); + } + else + { + built = false; + } + } + + Dictionary dictionary; + + public void ForceBuildRefresh() + { + built = false; + BuildOnce(); + } + + public void BuildOnce() + { + if(built) return; + built = true; + + if(dictionary == null) + dictionary = new Dictionary(); + else + dictionary.Clear(); + + string tagId; + foreach (var source in data) + { + if(!source) + continue; + + tagId = source.TagID; + + if (string.IsNullOrEmpty(tagId)) + { + UnityEngine.Debug.LogError($"Text Animator: Tag is null or empty. Skipping..."); + continue; + } + + if (dictionary.ContainsKey(tagId)) + { + UnityEngine.Debug.LogError($"Text Animator: Tag {tagId} is already present in the database. Skipping..."); + continue; + } + + dictionary.Add(tagId, source); + } + + OnBuildOnce(); + } + + protected virtual void OnBuildOnce() { } + + public bool ContainsKey(string key) + { + BuildOnce(); + return dictionary.ContainsKey(key); + } + + public T this[string key] + { + get + { + BuildOnce(); + return dictionary[key]; + } + } + + public void DestroyImmediate(bool databaseOnly = false) + { + if (!databaseOnly) + { + foreach (var element in data) + { + UnityEngine.Object.DestroyImmediate(element); + } + } + + UnityEngine.Object.DestroyImmediate(this); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta new file mode 100644 index 0000000..b57ae08 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/Database.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ad15696ec142b4b74a18062348e0c8ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs new file mode 100644 index 0000000..c9ca084 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs @@ -0,0 +1,7 @@ +namespace Febucci.UI.Core +{ + public interface ITagProvider + { + string TagID { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta new file mode 100644 index 0000000..7d711d3 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/ITagProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95954e1bd9a8247e485caea208576867 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs new file mode 100644 index 0000000..7f45f07 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs @@ -0,0 +1,44 @@ +using UnityEngine; + +namespace Febucci.UI.Core +{ + public struct MeshData : System.IEquatable + { + public Vector3[] positions; + public Color32[] colors; + + + public bool Equals(MeshData other) + { + //checks every position with other's position + for (int i = 0; i < positions.Length; i++) + { + if (positions[i] != other.positions[i]) + return false; + } + + //checks every color with other's color + for (int i = 0; i < colors.Length; i++) + { + if (!colors[i].Equals(other.colors[i])) + return false; + } + + return true; + } + + public override string ToString() + { + System.Text.StringBuilder sb = new System.Text.StringBuilder(); + //prints positions and colors + for (int i = 0; i < positions.Length; i++) + { + sb.Append(positions[i].ToString()); + sb.Append(" "); + sb.Append(colors[i].ToString()); + sb.Append(" - "); + } + return sb.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta new file mode 100644 index 0000000..78581ae --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/MeshData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 36780d2b32e74616a2d854f1c8c2c242 +timeCreated: 1672437581 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs new file mode 100644 index 0000000..ee5d394 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs @@ -0,0 +1,29 @@ +using System.Text; + +namespace Febucci.UI.Core.Parsing +{ + /// + /// Base class to parse/process a rich text tag + /// + public abstract class TagParserBase + { + //--- SYMBOLS --- + public char startSymbol; + public char endSymbol; + public char closingSymbol; //TODO remove closing symbol to all, add it only to regions + + public TagParserBase() { } + public TagParserBase(char startSymbol, char closingSymbol, char endSymbol) + { + this.startSymbol = startSymbol; + this.closingSymbol = closingSymbol; + this.endSymbol = endSymbol; + } + + //--- METHODS --- + public abstract bool TryProcessingTag(string textInsideBrackets, int tagLength, ref int realTextIndex, StringBuilder finalTextBuilder, int internalOrder); + + public void Initialize() => OnInitialize(); + protected virtual void OnInitialize(){ } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta new file mode 100644 index 0000000..eddf9ef --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/TagParserBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55c7a4ae649c8407f8d95bf3403945ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs new file mode 100644 index 0000000..1decfd5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs @@ -0,0 +1,16 @@ +namespace Febucci.UI.Core +{ + public struct WordInfo + { + public readonly int firstCharacterIndex; + public readonly int lastCharacterIndex; + public readonly string text; + + public WordInfo(int firstCharacterIndex, int lastCharacterIndex, string text) + { + this.firstCharacterIndex = firstCharacterIndex; + this.lastCharacterIndex = lastCharacterIndex; + this.text = text; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta new file mode 100644 index 0000000..bfc3eec --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Parsing/_Core/WordInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ada8bd43a5c046838f7be64d1e3f7e3d +timeCreated: 1679507564 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta new file mode 100644 index 0000000..5b32420 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c62ca3b12006dd046abe6a66e7f5c690 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta new file mode 100644 index 0000000..7239506 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35d5f4998a2cc4d709e95a90ff304e6e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta new file mode 100644 index 0000000..92e515d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0af2dade929034a0ead991e371617b6c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs new file mode 100644 index 0000000..7dfbfcf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs @@ -0,0 +1,29 @@ +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; + +namespace Febucci.UI.Actions +{ + [System.Serializable] + [UnityEngine.CreateAssetMenu(fileName = "Speed Action", menuName = "Text Animator/Actions/Speed", order = 1)] + [TagInfo("speed")] + public sealed class SpeedAction : ActionScriptableBase + { + /// + /// Speed used in case the action does not have the first parameter + /// + [UnityEngine.Tooltip("Speed used in case the action does not have the first parameter")] + public float defaultSpeed = 2; + + public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo) + { + float speed = defaultSpeed; + if(action.parameters.Length > 0) + { + FormatUtils.TryGetFloat(action.parameters[0], defaultSpeed, out speed); + } + + typingInfo.speed = speed; + yield break; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta new file mode 100644 index 0000000..6b544ae --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/SpeedAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24451f867ad2a6146baf57f938a44d18 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs new file mode 100644 index 0000000..3c6b330 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs @@ -0,0 +1,18 @@ +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; +using UnityEngine; + +namespace Febucci.UI.Actions +{ + [System.Serializable] + [CreateAssetMenu(fileName = "WaitAnyInput Action", menuName = "Text Animator/Actions/Wait Any Input", order = 1)] + [TagInfo("waitinput")] + public sealed class WaitAnyInputAction : ActionScriptableBase + { + public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo) + { + while(!Input.anyKeyDown) + yield return null; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta new file mode 100644 index 0000000..d4e1adb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitAnyInputAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aed6905e7c644c14a804ef32a5216aa3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs new file mode 100644 index 0000000..194c23a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs @@ -0,0 +1,33 @@ +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; + +namespace Febucci.UI.Actions +{ + [System.Serializable] + [UnityEngine.CreateAssetMenu(fileName = "WaitFor Action", menuName = "Text Animator/Actions/Wait For", order = 1)] + [TagInfo("waitfor")] + public sealed class WaitForAction : ActionScriptableBase + { + /// + /// Time used in case the action does not have the first parameter + /// + [UnityEngine.Tooltip("Time used in case the action does not have the first parameter")] + public float defaultTime = 1; + + public override System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo) + { + float targetTime = defaultTime; + if(action.parameters.Length > 0) + { + FormatUtils.TryGetFloat(action.parameters[0], defaultTime, out targetTime); + } + + float t = 0; + while(t<=targetTime) + { + t += typewriter.TextAnimator.time.deltaTime; + yield return null; + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta new file mode 100644 index 0000000..65a8542 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/Built-in/WaitForAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7806fdd5903ae4a1b8ddb77cde0d5832 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta new file mode 100644 index 0000000..b093b3b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c3dbde1f78df466e95f8020923a8696 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs new file mode 100644 index 0000000..6298304 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs @@ -0,0 +1,18 @@ +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; + +namespace Febucci.UI.Actions +{ + [System.Serializable] + public abstract class ActionScriptableBase : UnityEngine.ScriptableObject, ITagProvider + { + [UnityEngine.SerializeField] string tagID; + public string TagID + { + get => tagID; + set => tagID = value; + } + + public abstract System.Collections.IEnumerator DoAction(ActionMarker action, TypewriterCore typewriter, TypingInfo typingInfo); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta new file mode 100644 index 0000000..7906dec --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Actions/_Core/ActionScriptableBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b39050096895d4d758c32f76c7391954 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta new file mode 100644 index 0000000..3bf910c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 452cdf0b0bd2b53428c1a3398784e999 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta new file mode 100644 index 0000000..3b25923 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7351ce21b48094cd69f7fbc6531652bc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta new file mode 100644 index 0000000..bb33e4e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a9665765cbb54293a006234c8f34c0d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs new file mode 100644 index 0000000..b05b2e4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs @@ -0,0 +1,65 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Diagonal Expand Appearance", menuName = "Text Animator/Animations/Appearances/Diagonal Expand")] + [EffectInfo("diagexp", EffectCategory.Appearances)] + public sealed class DiagonalExpandAppearance : AppearanceScriptableBase + { + public bool diagonalFromBttmLeft; + + int targetA; + int targetB; + + //--Temp variables-- + Vector3 middlePos; + float pct; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + diagonalFromBttmLeft = true; + UpdateOrientation(); + } + + void UpdateOrientation() + { + if (diagonalFromBttmLeft) //expands bottom left and top right + { + targetA = 0; + targetB = 2; + } + else //expands bottom right and top left + { + targetA = 1; + targetB = 3; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + middlePos = character.current.positions.GetMiddlePos(); + pct = Tween.EaseInOut(character.passedTime / duration); + + character.current.positions[targetA] = Vector3.LerpUnclamped(middlePos, character.current.positions[targetA], pct); + //top right copies from bottom right + character.current.positions[targetB] = Vector3.LerpUnclamped(middlePos, character.current.positions[targetB], pct); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "bot": + diagonalFromBttmLeft = (int)modifier.value == 1; + UpdateOrientation(); + break; + default: base.SetModifier(modifier); break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta new file mode 100644 index 0000000..c1ce5fa --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/DiagonalExpandAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7303246fad8e2a049aebd6c0c71d2985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs new file mode 100644 index 0000000..33af797 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs @@ -0,0 +1,29 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Fade Appearance", menuName = "Text Animator/Animations/Appearances/Fade")] + [EffectInfo("fade", EffectCategory.Appearances)] + public sealed class FadeAppearance : AppearanceScriptableBase + { + Color32 temp; + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + //from transparent to real color + for (int i = 0; i < TextUtilities.verticesPerChar; i++) + { + temp = character.current.colors[i]; + temp.a = 0; + + character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], temp, + Tween.EaseInOut(1 - (character.passedTime / duration))); + } + + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta new file mode 100644 index 0000000..c0c700c --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/FadeAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d26528e73e36f64dab95b69625232a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs new file mode 100644 index 0000000..5afc6b4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs @@ -0,0 +1,99 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Horizontal Expand Appearance", menuName = "Text Animator/Animations/Appearances/Horizontal Expand")] + [EffectInfo("horiexp", EffectCategory.Appearances)] + public sealed class HorizontalExpandAppearance : AppearanceScriptableBase + { + //expand type + public enum ExpType + { + Left, //from left to right + Middle, //expands from the middle to te extents + Right //from right to left + } + + + public ExpType type = ExpType.Left; + + //--Temp variables-- + Vector2 startTop; + Vector2 startBot; + float pct; + + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + type = ExpType.Left; + } + + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + pct = Tween.EaseInOut(character.passedTime / duration); + + switch (type) + { + default: + case ExpType.Left: + //top left and bot left + startTop = character.current.positions[1]; + startBot = character.current.positions[0]; + + character.current.positions[2] = Vector3.LerpUnclamped(startTop, character.current.positions[2], pct); + character.current.positions[3] = Vector3.LerpUnclamped(startBot, character.current.positions[3], pct); + break; + + case ExpType.Right: + //top right and bot right + startTop = character.current.positions[2]; + startBot = character.current.positions[3]; + + character.current.positions[1] = Vector3.LerpUnclamped(startTop, character.current.positions[1], pct); + character.current.positions[0] = Vector3.LerpUnclamped(startBot, character.current.positions[0], pct); + break; + + case ExpType.Middle: + //Middle positions + startTop = (character.current.positions[1] + character.current.positions[2]) / 2; + startBot = (character.current.positions[0] + character.current.positions[3]) / 2; + + //top vertices + character.current.positions[1] = Vector3.LerpUnclamped(startTop, character.current.positions[1], pct); + character.current.positions[2] = Vector3.LerpUnclamped(startTop, character.current.positions[2], pct); + + //bottom vertices + character.current.positions[0] = Vector3.LerpUnclamped(startBot, character.current.positions[0], pct); + character.current.positions[3] = Vector3.LerpUnclamped(startBot, character.current.positions[3], pct); + + break; + } + + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "x": + switch (modifier.value) + { + case -1: type = ExpType.Left; break; + case 0: type = ExpType.Middle; break; + case 1: type = ExpType.Right; break; + default: Debug.LogError($"Text Animator: you set an '{modifier.name}' modifier with value '{modifier.value}' for the HorizontalExpandAppearance effect, but it can only be '-1', '0', or '1'"); break; + } + break; + default: + base.SetModifier(modifier); + break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta new file mode 100644 index 0000000..050a7d5 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/HorizontalExpandAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dbde6098d9bea441b3ac872e52073ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs new file mode 100644 index 0000000..44b8179 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs @@ -0,0 +1,37 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Offset Appearance", menuName = "Text Animator/Animations/Appearances/Offset")] + [EffectInfo("offset", EffectCategory.Appearances)] + public sealed class OffsetAppearance : AppearanceScriptableBase + { + public float baseAmount = 10; + float amount; + public Vector2 baseDirection = Vector2.one; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + amount = baseAmount; + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.MoveChar(baseDirection * amount * character.uniformIntensity * Tween.EaseIn(1 - character.passedTime / duration)); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "a": amount = baseAmount * modifier.value; break; + default: base.SetModifier(modifier); break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta new file mode 100644 index 0000000..7d729cb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/OffsetAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 146552007a93ecc42b0d63f26788e6cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs new file mode 100644 index 0000000..8aa8b48 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs @@ -0,0 +1,58 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "RandomDir Appearance", menuName = "Text Animator/Animations/Appearances/Random Direction")] + [EffectInfo("rdir", EffectCategory.Appearances)] + public sealed class RandomDirectionAppearance : AppearanceScriptableBase + { + public float baseAmount = 10; + float amount; + Vector3[] directions; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + amount = baseAmount; + } + + protected override void OnInitialize() + { + base.OnInitialize(); + + directions = new Vector3[20]; + + //Calculates a random direction for each character (which won't change) + for(int i = 0; i < directions.Length; i++) + { + directions[i] = TextUtilities.fakeRandoms[Random.Range(0, TextUtilities.fakeRandomsCount - 1)] * Mathf.Sign(Mathf.Sin(i)); + } + } + + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + int index = character.index % directions.Length; + + //Moves all towards a direction + character.current.positions.MoveChar( + directions[index] + * amount + * character.uniformIntensity + * Tween.EaseIn(1 - character.passedTime / duration)); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "a": amount = baseAmount * modifier.value; break; + default: base.SetModifier(modifier); break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta new file mode 100644 index 0000000..621750e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RandomDirectionAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a65a9b7775dded41a0295e6f75be25d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs new file mode 100644 index 0000000..6afda92 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs @@ -0,0 +1,43 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Rotating Appearance", menuName = "Text Animator/Animations/Appearances/Rotating")] + [EffectInfo("rot", EffectCategory.Appearances)] + [DefaultValue(nameof(baseDuration), .7f)] + public sealed class RotatingAppearance : AppearanceScriptableBase + { + public float baseTargetAngle = 50; + float targetAngle; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + targetAngle = baseTargetAngle; + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.RotateChar( + Mathf.Lerp( + targetAngle, + 0, + Tween.EaseInOut(character.passedTime / duration) + ) + ); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "a": targetAngle = baseTargetAngle * modifier.value; break; + default: base.SetModifier(modifier); break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta new file mode 100644 index 0000000..e291d19 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/RotatingAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 465a2951870a6954d8205f9c58a546de +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs new file mode 100644 index 0000000..193c4ea --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs @@ -0,0 +1,37 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Size Appearance", menuName = "Text Animator/Animations/Appearances/Size")] + [EffectInfo("size", EffectCategory.Appearances)] + public sealed class SizeAppearance : AppearanceScriptableBase + { + float amplitude; + public float baseAmplitude = 2; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + amplitude = baseAmplitude * -1 + 1; + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.LerpUnclamped( + character.current.positions.GetMiddlePos(), + Tween.EaseIn(1 - (character.passedTime / duration)) * amplitude + ); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "a": amplitude = baseAmplitude * modifier.value; break; + default: base.SetModifier(modifier); break; + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta new file mode 100644 index 0000000..1c7a00e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/SizeAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ff5882c38f1b6c4682c7f207f0c98db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs new file mode 100644 index 0000000..b4b7649 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs @@ -0,0 +1,69 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Vertical Expand Appearance", menuName = "Text Animator/Animations/Appearances/Vertical Expand")] + [EffectInfo("vertexp", EffectCategory.Appearances)] + public sealed class VerticalExpandAppearance : AppearanceScriptableBase + { + public bool startsFromBottom = true; + int startA, targetA; + int startB, targetB; + + //--Temp variables-- + float pct; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + SetOrientation(startsFromBottom); + } + + void SetOrientation(bool fromBottom) + { + if (fromBottom) //From bottom to top + { + + //top left copies bottom left + startA = 0; + targetA = 1; + + //top right copies bottom right + startB = 3; + targetB = 2; + } + else //from top to bottom + { + + //bottom left copies top left + startA = 1; + targetA = 0; + + //bottom right copies top right + startB = 2; + targetB = 3; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + pct = Tween.EaseInOut(character.passedTime / duration); + + character.current.positions[targetA] = Vector3.LerpUnclamped(character.current.positions[startA], character.current.positions[targetA], pct); + character.current.positions[targetB] = Vector3.LerpUnclamped(character.current.positions[startB], character.current.positions[targetB], pct); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "bot": SetOrientation((int)modifier.value == 1); break; + default: base.SetModifier(modifier); break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta new file mode 100644 index 0000000..7bb2dd7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/Built-in/VerticalExpandAppearance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 351d9d9e5c9ea7946842aee1160f7731 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta new file mode 100644 index 0000000..5d1b0bc --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9164d28933c0b4352b5b48dcbb7c8240 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs new file mode 100644 index 0000000..2139179 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs @@ -0,0 +1,31 @@ +using Febucci.UI.Core; + +namespace Febucci.UI.Effects +{ + /// + /// Base class for animating letters in Text Animator + /// + [System.Serializable] + public abstract class AppearanceScriptableBase : AnimationScriptableBase + { + public float baseDuration = .5f; + protected float duration; + + public override void ResetContext(TAnimCore animator) + { + duration = baseDuration; + } + + public override float GetMaxDuration() => duration; //TODO improve this, a bit hacky + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "d": duration = baseDuration * modifier.value; break; + } + } + + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => character.passedTime <= duration; + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta new file mode 100644 index 0000000..6b565e8 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Appearances/_Core/AppearanceScriptableBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb71b61f2fec745acaf81b5bf98f19f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta new file mode 100644 index 0000000..459a67a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ca263a61b56e4699ac2efe4d837032e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta new file mode 100644 index 0000000..bc6ef19 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58afd08ab8fee49849a0174b6e5bb64b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs new file mode 100644 index 0000000..d4bcffb --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs @@ -0,0 +1,41 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Bounce", menuName = "Text Animator/Animations/Behaviors/Bounce")] + [EffectInfo("bounce", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 13.19f)] + [DefaultValue(nameof(baseFrequency), 1f)] + [DefaultValue(nameof(baseWaveSize), .2f)] + public sealed class BounceBehavior : BehaviorScriptableSine + { + //Calculates the tween percentage + float BounceTween(float t) + { + const float stillTime = .2f; + const float easeIn = .2f; + const float bounce = 1 - stillTime - easeIn; + + if (t <= easeIn) + return Tween.EaseInOut(t / easeIn); + t -= easeIn; + + if (t <= bounce) + return 1 - Tween.BounceOut(t / bounce); + + return 0; + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.MoveChar( + Vector3.up * character.uniformIntensity * + BounceTween((Mathf.Repeat(animator.time.timeSinceStart * frequency - waveSize * character.index, 1))) * amplitude + ); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta new file mode 100644 index 0000000..89042cf --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/BounceBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a333962955c4a08498d132d86d9ce19e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs new file mode 100644 index 0000000..e986d2b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs @@ -0,0 +1,47 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Dangle", fileName = "Dangle Behavior")] + [EffectInfo("dangle", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 7.87f)] + [DefaultValue(nameof(baseFrequency), 3.37f)] + [DefaultValue(nameof(baseWaveSize), .306f)] + public sealed class DangleBehavior : BehaviorScriptableSine + { + public bool anchorBottom; + float sin; + + int targetIndex1; + int targetIndex2; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + + //bottom + if (anchorBottom) + { + targetIndex1 = 1; + targetIndex2 = 2; + } + else + { + targetIndex1 = 0; + targetIndex2 = 3; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + + sin = Mathf.Sin(frequency * animator.time.timeSinceStart + character.index * waveSize) * amplitude * character.uniformIntensity; + + //moves one side (top or bottom) torwards one direction + character.current.positions[targetIndex1] += Vector3.right * sin; + character.current.positions[targetIndex2] += Vector3.right * sin; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta new file mode 100644 index 0000000..ee4a202 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/DangleBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01a91f0b9c670b242ae5c34286409cd9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs new file mode 100644 index 0000000..133bb73 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs @@ -0,0 +1,69 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Fade Behavior", menuName = "Text Animator/Animations/Behaviors/Fade")] + [EffectInfo("fade", EffectCategory.Behaviors)] + public sealed class FadeBehavior : BehaviorScriptableBase + { + Color32 temp; + public float baseSpeed = .5f; + public float baseDelay = 1f; + float delay; + float timeToShow; + + public override void ResetContext(TAnimCore animator) + { + delay = baseDelay; + SetTimeToShow(baseSpeed); + } + + //given speed (per second), sets the time needed to show + void SetTimeToShow(float speed) => timeToShow = 1 / speed; //TODO check for zero + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "f": + SetTimeToShow(baseSpeed * modifier.value); + break; + case "d": delay = baseDelay * modifier.value; break; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + if (character.passedTime <= delay) //not passed enough time yet + return; + + float charPct = (character.passedTime - delay) / timeToShow; + + if (charPct > 1) charPct = 1; + + //Lerps + if (charPct < 1 && charPct >= 0) + { + for (var i = 0; i < TextUtilities.verticesPerChar; i++) + { + temp = character.current.colors[i]; + temp.a = 0; + + character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], temp, Tween.EaseInOut(charPct)); + } + } + else //Keeps them hidden + { + for (var i = 0; i < TextUtilities.verticesPerChar; i++) + { + temp = character.current.colors[i]; + temp.a = 0; + + character.current.colors[i] = temp; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta new file mode 100644 index 0000000..00dbe14 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/FadeBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1f1dde3a46b6e748885a8d202c32044 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs new file mode 100644 index 0000000..dde29c4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs @@ -0,0 +1,46 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Pendulum Behavior", menuName = "Text Animator/Animations/Behaviors/Pendulum")] + [EffectInfo("pend", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 24.7f)] + [DefaultValue(nameof(baseFrequency), 3.1f)] + [DefaultValue(nameof(baseWaveSize), .2f)] + public sealed class PendulumBehavior : BehaviorScriptableSine + { + public bool anchorBottom; + + int targetVertex1; + int targetVertex2; + + public override void ResetContext(TAnimCore animator) + { + base.ResetContext(animator); + + if (anchorBottom) + { + //anchored at the bottom + targetVertex1 = 0; + targetVertex2 = 3; + } + else + { + //anchored at the top + targetVertex1 = 1; + targetVertex2 = 2; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.RotateChar( + Mathf.Sin(-animator.time.timeSinceStart * frequency + waveSize * character.index) * amplitude, + (character.current.positions[targetVertex1] + character.current.positions[targetVertex2]) / 2 //bottom center as their rotation pivot + ); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta new file mode 100644 index 0000000..b83f707 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/PendulumBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5005fc4984831834d826c8a9e3d42443 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs new file mode 100644 index 0000000..93ab11b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs @@ -0,0 +1,46 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Rainbow", fileName = "Rainbow Behavior")] + [EffectInfo("rainb", EffectCategory.Behaviors)] + public sealed class RainbowBehavior : BehaviorScriptableBase + { + public float baseFrequency = 0.5f; + public float baseWaveSize = 0.08f; + + + float frequency; + float waveSize; + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + //frequency + case "f": frequency = baseFrequency * modifier.value; break; + //wave size + case "s": waveSize = baseWaveSize * modifier.value; break; + } + } + + public override void ResetContext(TAnimCore animator) + { + frequency = baseFrequency; + waveSize = baseWaveSize; + } + + Color32 temp; + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + for (byte i = 0; i < TextUtilities.verticesPerChar; i++) + { + //shifts hue + temp = Color.HSVToRGB(Mathf.PingPong(animator.time.timeSinceStart * frequency + character.index * waveSize, 1), 1, 1); + temp.a = character.current.colors[i].a; //preserves original alpha + character.current.colors[i] = temp; + } + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta new file mode 100644 index 0000000..f53d337 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RainbowBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5400420051c0a9341be4aece65080148 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs new file mode 100644 index 0000000..321eaf8 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs @@ -0,0 +1,42 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Rotation", fileName = "Rotation Behavior")] + [EffectInfo("rot", EffectCategory.Behaviors)] + public sealed class RotationBehavior : BehaviorScriptableBase + { + + public float baseRotSpeed = 180; + public float baseDiffBetweenChars = 10; + + float angleSpeed; + float angleDiffBetweenChars; + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + //frequency + case "f": angleSpeed = baseRotSpeed * modifier.value; break; + //angle diff + case "w": angleDiffBetweenChars = baseDiffBetweenChars * modifier.value; break; + } + } + + public override void ResetContext(TAnimCore animator) + { + angleSpeed = baseRotSpeed; + angleDiffBetweenChars = baseDiffBetweenChars; + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.RotateChar(-animator.time.timeSinceStart * angleSpeed + + angleDiffBetweenChars * character.index); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta new file mode 100644 index 0000000..450c69d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/RotationBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c179eec3e2795104eb216e340b8d8513 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs new file mode 100644 index 0000000..d9e9b47 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs @@ -0,0 +1,79 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Shake", fileName = "Shake Behavior")] + [EffectInfo("shake", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 1.13f)] + [DefaultValue(nameof(baseDelay), .1f)] + [DefaultValue(nameof(baseWaveSize), .45f)] + public sealed class ShakeBehavior : BehaviorScriptableBase + { + //---BASE VALUES--- + public float baseAmplitude = .085f; + public float baseDelay = .04f; + public float baseWaveSize = .2f; + + float amplitude; + float delay; + float waveSize; + + //--- ANIMATION --- + + void ClampValues() + { + delay = Mathf.Clamp(delay, 0.002f, 500); + } + + protected override void OnInitialize() + { + base.OnInitialize(); + + randIndex = Random.Range(0, TextUtilities.fakeRandomsCount); + } + + public override void ResetContext(TAnimCore animator) + { + amplitude = baseAmplitude; + delay = baseDelay; + waveSize = baseWaveSize; + + ClampValues(); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "a": amplitude = baseAmplitude * modifier.value; break; + case "d": delay = baseDelay * modifier.value; break; + case "w": waveSize = baseWaveSize * modifier.value; break; + } + + ClampValues(); + } + + int randIndex; + float timePassed; + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + timePassed = animator.time.timeSinceStart; + timePassed += character.index * waveSize; + + randIndex = Mathf.RoundToInt(timePassed / delay) % (TextUtilities.fakeRandomsCount); + if(randIndex<0) randIndex *= -1; //always positive + + character.current.positions.MoveChar + ( + TextUtilities.fakeRandoms[randIndex] * amplitude * character.uniformIntensity + ); + } + + void OnValidate() + { + ClampValues(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta new file mode 100644 index 0000000..edb2527 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/ShakeBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 144066a43449f48469b89b2e2c9ab37d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs new file mode 100644 index 0000000..39e3e33 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs @@ -0,0 +1,42 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Size", fileName = "Size Behavior")] + [EffectInfo("incr", EffectCategory.Behaviors)] + public sealed class SizeBehavior : BehaviorScriptableBase + { + public float baseAmplitude = 1.5f; + public float baseFrequency = 4; + public float baseWaveSize = 0.2f; + + float amplitude; + float frequency; + float waveSize; + public override void ResetContext(TAnimCore animator) + { + amplitude = baseAmplitude * -1 + 1; + frequency = baseFrequency; + waveSize = baseWaveSize; + } + + public override void SetModifier(ModifierInfo modifier) + { + switch(modifier.name) + { + case "a": amplitude = baseAmplitude * modifier.value * -1 + 1; break; + case "f": frequency = baseFrequency * modifier.value; break; + case "w": waveSize = baseWaveSize * modifier.value; break; + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.LerpUnclamped( + character.current.positions.GetMiddlePos(), + (Mathf.Cos(animator.time.timeSinceStart* frequency + character.index * waveSize) + 1) / 2f * amplitude); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta new file mode 100644 index 0000000..31ae479 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SizeBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6da0c21b80efda84188912ce510ee1ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs new file mode 100644 index 0000000..76cc4ae --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs @@ -0,0 +1,29 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Slide Behavior", menuName = "Text Animator/Animations/Behaviors/Slide")] + [EffectInfo("slide", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 5)] + [DefaultValue(nameof(baseFrequency), 3)] + [DefaultValue(nameof(baseWaveSize), 0)] + public sealed class SlideBehavior : BehaviorScriptableSine + { + float sin; + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + sin = Mathf.Sin(frequency * animator.time.timeSinceStart + + character.index * waveSize) * amplitude * character.uniformIntensity; + + //bottom, torwards one direction + character.current.positions[0] += Vector3.right * sin; + character.current.positions[3] += Vector3.right * sin; + //top, torwards the opposite dir + character.current.positions[1] += Vector3.right * -sin; + character.current.positions[2] += Vector3.right * -sin; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta new file mode 100644 index 0000000..d1e645b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SlideBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a740b03d4c3f2d84f9cfc7b3a6f8ea80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs new file mode 100644 index 0000000..600fc74 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs @@ -0,0 +1,19 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Swing", fileName = "Swing Behavior")] + [EffectInfo("swing", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 22.74f)] + [DefaultValue(nameof(baseFrequency), 3.65f)] + [DefaultValue(nameof(baseWaveSize), .171f)] + public sealed class SwingBehavior : BehaviorScriptableSine + { + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.RotateChar(Mathf.Cos(animator.time.timeSinceStart * frequency + character.index * waveSize) * amplitude); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta new file mode 100644 index 0000000..c32b8a7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/SwingBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63b7822b5552d3748b1acc2a07066822 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs new file mode 100644 index 0000000..858ea38 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs @@ -0,0 +1,22 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Wave", fileName = "Wave Behavior")] + [EffectInfo("wave", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 7.27f)] + [DefaultValue(nameof(baseFrequency), 4f)] + [DefaultValue(nameof(baseWaveSize), .4f)] + public sealed class WaveBehavior : BehaviorScriptableSine + { + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + character.current.positions.MoveChar( + Vector3.up * Mathf.Sin(animator.time.timeSinceStart * frequency + character.index * waveSize) + * amplitude * character.uniformIntensity); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta new file mode 100644 index 0000000..cc67ed1 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WaveBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 99de7ce7cdaed2d42b0bd233e69e67db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs new file mode 100644 index 0000000..1067c78 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs @@ -0,0 +1,42 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(menuName = "Text Animator/Animations/Behaviors/Wiggle", fileName = "Wiggle Behavior")] + [EffectInfo("wiggle", EffectCategory.Behaviors)] + [DefaultValue(nameof(baseAmplitude), 4.74f)] + [DefaultValue(nameof(baseFrequency), 7.82f)] + [DefaultValue(nameof(baseWaveSize), .551f)] + public sealed class WiggleBehavior : BehaviorScriptableSine + { + const int maxDirections = 23; + Vector3[] directions; + int indexCache; + + protected override void OnInitialize() + { + base.OnInitialize(); + + directions = new Vector3[maxDirections]; + + //Calculates a random direction for each character (which won't change) + for(int i = 0; i < maxDirections; i++) + { + directions[i] = TextUtilities.fakeRandoms[Random.Range(0, TextUtilities.fakeRandomsCount - 1)] * Mathf.Sign(Mathf.Sin(i)); + } + } + + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + indexCache = character.index % maxDirections; + + character.current.positions.MoveChar( + directions[indexCache] + * Mathf.Sin(animator.time.timeSinceStart * frequency + character.index * waveSize) + * amplitude + * character.uniformIntensity); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta new file mode 100644 index 0000000..4a81650 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/Built-in/WiggleBehavior.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c98870d7ebce9a4fa6c4a16e9701755 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta new file mode 100644 index 0000000..17ccdac --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c76974580a2e4940a22bd3504b213d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs new file mode 100644 index 0000000..d23907e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs @@ -0,0 +1,14 @@ +using Febucci.UI.Core; + +namespace Febucci.UI.Effects +{ + /// + /// Base class for animating letters in Text Animator + /// + public abstract class BehaviorScriptableBase : AnimationScriptableBase + { + public override float GetMaxDuration() => -1; //infinite + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true; + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta new file mode 100644 index 0000000..80b75c4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d77bbe0b705d24c8caed399bf26d7b97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs new file mode 100644 index 0000000..edb14f4 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs @@ -0,0 +1,38 @@ +using Febucci.UI.Core; + +namespace Febucci.UI.Effects +{ + public abstract class BehaviorScriptableSine : BehaviorScriptableBase + { + //--- BASE VALUES --- + public float baseAmplitude = 1; + public float baseFrequency = 1; + [UnityEngine.Range(0,1)] public float baseWaveSize = .2f; + + //--- EFFECTS INFO --- + protected float amplitude; + protected float frequency; + protected float waveSize; + + + public override void ResetContext(TAnimCore animator) + { + amplitude = baseAmplitude; + frequency = baseFrequency; + waveSize = baseWaveSize; + } + + public override void SetModifier(ModifierInfo modifier) + { + switch(modifier.name) + { + case "a": amplitude = baseAmplitude * modifier.value; break; + case "f": frequency = baseFrequency * modifier.value; break; + //TODO if wavesize is 0, then this never changes. Maybe + //set it directly instead of multiplying? + case "w": waveSize = baseWaveSize * modifier.value; break; + } + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta new file mode 100644 index 0000000..df89640 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Behaviors/_Core/BehaviorScriptableSine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8288d52cadf6b453591b461027037a85 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta new file mode 100644 index 0000000..551ad1a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44af3aa44863aa44f926c79c825adb59 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs new file mode 100644 index 0000000..19293d7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs @@ -0,0 +1,84 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + /// + /// Applies multiples animations, allowing user to use one tag for all of them + /// + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Composite Animation", menuName = "Text Animator/Animations/Special/Composite")] + [EffectInfo("", EffectCategory.All)] + public sealed class CompositeAnimation : AnimationScriptableBase + { + public AnimationScriptableBase[] animations = new AnimationScriptableBase[0]; + + protected override void OnInitialize() + { + base.OnInitialize(); + + ValidateArray(); + + foreach (var anim in animations) + { + anim.InitializeOnce(); + } + } + + public override void ResetContext(TAnimCore animator) + { + foreach (var anim in animations) + { + anim.ResetContext(animator); + } + } + + public override void SetModifier(ModifierInfo modifier) + { + base.SetModifier(modifier); + foreach (var anim in animations) + { + anim.SetModifier(modifier); + } + } + + public override void ApplyEffectTo(ref CharacterData character, TAnimCore animator) + { + foreach (var anim in animations) + { + if(anim.CanApplyEffectTo(character, animator)) + anim.ApplyEffectTo(ref character, animator); + } + } + + //Prevents double check + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true; + + public override float GetMaxDuration() + { + //Calculates max duration between animations + float maxDuration = -1; + foreach (var anim in animations) + { + maxDuration = Mathf.Max(maxDuration, anim.GetMaxDuration()); + } + + return maxDuration; + } + + void ValidateArray() + { + //prevents recursion + var validated = new System.Collections.Generic.List(); + + for (int i = 0; i < animations.Length; i++) + { + if(animations[i]!=this) validated.Add(animations[i]); + } + + animations = validated.ToArray(); + } + + void OnValidate() => ValidateArray(); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta new file mode 100644 index 0000000..504dc77 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1030e778d6c8678498b5860c46980fb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs new file mode 100644 index 0000000..ccd6770 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs @@ -0,0 +1,98 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + /// + /// Applies multiples animations, allowing user to use one tag for all of them + /// + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Composite With Emission", menuName = "Text Animator/Animations/Special/Composite With Emission")] + [EffectInfo("", EffectCategory.All)] + public sealed class CompositeWithEmission : AnimationScriptableBase + { + public TimeMode timeMode = new TimeMode(true); + [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve(); + public AnimationScriptableBase[] animations = new AnimationScriptableBase[0]; + + protected override void OnInitialize() + { + base.OnInitialize(); + + ValidateArray(); + + foreach (var anim in animations) + { + anim.InitializeOnce(); + } + + prev = new MeshData(); + prev.colors = new Color32[TextUtilities.verticesPerChar]; + prev.positions = new Vector3[TextUtilities.verticesPerChar]; + } + + public override void ResetContext(TAnimCore animator) + { + foreach (var anim in animations) + { + anim.ResetContext(animator); + } + } + + public override void SetModifier(ModifierInfo modifier) + { + base.SetModifier(modifier); + foreach (var anim in animations) + { + anim.SetModifier(modifier); + } + } + + MeshData prev; + public override void ApplyEffectTo(ref CharacterData character, TAnimCore animator) + { + float timePassed = timeMode.GetTime(animator.time.timeSinceStart, character.passedTime, character.index); + if(timePassed<0) return; + + for (int i = 0; i < TextUtilities.verticesPerChar; i++) + { + prev.positions[i] = character.current.positions[i]; + prev.colors[i] = character.current.colors[i]; + } + + float weight = emissionCurve.Evaluate(timePassed); + foreach (var anim in animations) + { + if(anim.CanApplyEffectTo(character, animator)) + anim.ApplyEffectTo(ref character, animator); + } + + for (int i = 0; i < TextUtilities.verticesPerChar; i++) + { + character.current.positions[i] = Vector3.LerpUnclamped(prev.positions[i], character.current.positions[i], weight); + character.current.colors[i] = Color32.LerpUnclamped(prev.colors[i], character.current.colors[i], weight); + } + } + + //Prevents double check + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true; + + public override float GetMaxDuration() => emissionCurve.GetMaxDuration(); + + void ValidateArray() + { + //prevents recursion + var validated = new System.Collections.Generic.List(); + + for (int i = 0; i < animations.Length; i++) + { + if(animations[i]!=this) validated.Add(animations[i]); + } + + animations = validated.ToArray(); + } + + void OnValidate() => ValidateArray(); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta new file mode 100644 index 0000000..6852386 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/CompositeWithEmission.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c6129e0ca01d4768b7b56e188a0001d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta new file mode 100644 index 0000000..d8ac5fe --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e775bae152dd345599f58d6360352d31 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta new file mode 100644 index 0000000..7dbe211 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 634e4c6f22807e7449881726b1bd52ab +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs new file mode 100644 index 0000000..9df2768 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs @@ -0,0 +1,72 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Uniform Curve Animation", menuName = "Text Animator/Animations/Special/Uniform Curve")] + [EffectInfo("", EffectCategory.All)] + public sealed class UniformCurveAnimation : AnimationScriptableBase + { + public TimeMode timeMode = new TimeMode(true); + [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve(); + public AnimationData animationData = new AnimationData(); + + //--- Modifiers --- + float weightMult; + float timeSpeed; + + bool hasTransformEffects; + + + public override void ResetContext(TAnimCore animator) + { + weightMult = 1; + timeSpeed = 1; + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "f": //frequency, increases the time speed + timeSpeed = modifier.value; + break; + + case "a": //increase the amplitude + weightMult = modifier.value; + break; + } + } + + float timePassed; + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + timePassed = timeMode.GetTime(animator.time.timeSinceStart * timeSpeed, character.passedTime * timeSpeed, character.index); + if (timePassed < 0) + return; + + float weight = weightMult * emissionCurve.Evaluate(timePassed); + + if(animationData.TryCalculatingMatrix(character, timePassed, weight, out var matrix, out var offset)) + { + for (byte i = 0; i < TextUtilities.verticesPerChar; i++) + { + character.current.positions[i] = matrix.MultiplyPoint3x4(character.current.positions[i] - offset) + offset; + } + } + + if(animationData.TryCalculatingColor(character, timePassed, weight, out var color)) + { + character.current.colors.LerpUnclamped(color, Mathf.Clamp01(weight)); + } + + } + + public override float GetMaxDuration() => emissionCurve.GetMaxDuration(); + + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true; + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta new file mode 100644 index 0000000..af9eee7 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/UniformCurveAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f29c16c9fe849e442b4f1bab0c32e28a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs new file mode 100644 index 0000000..fe82367 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs @@ -0,0 +1,112 @@ +using Febucci.UI.Core; +using Febucci.UI.Effects; +using UnityEngine; +using UnityEngine.Serialization; + +namespace Febucci.UI.Effects +{ + [UnityEngine.Scripting.Preserve] + [CreateAssetMenu(fileName = "Vertex Curve Animation", menuName = "Text Animator/Animations/Special/Vertex Curve Animation")] + [EffectInfo("", EffectCategory.All)] + public sealed class VertexCurveAnimation : AnimationScriptableBase + { + public TimeMode timeMode = new TimeMode(true); + [EmissionCurveProperty] public EmissionCurve emissionCurve = new EmissionCurve(); + + [SerializeField] AnimationData[] animationPerVertexData = new AnimationData[TextUtilities.verticesPerChar]; + public AnimationData[] VertexData + { + get => animationPerVertexData; + set + { + animationPerVertexData = value; + ClampVertexDataArray(); + } + } + + //--- Modifiers --- + float timeSpeed; + float weightMult; + + //--- Management --- + Matrix4x4 matrix; + Vector3 offset; + Vector3 movement; + Vector2 scale; + Quaternion rot; + Color32 color; + + public override void ResetContext(TAnimCore animator) + { + weightMult = 1; + timeSpeed = 1; + ClampVertexDataArray(); + } + + public override void SetModifier(ModifierInfo modifier) + { + switch (modifier.name) + { + case "f": //frequency, increases the time speed + timeSpeed = modifier.value; + break; + + case "a": //increase the amplitude + weightMult = modifier.value; + break; + } + } + + float timePassed; + public override void ApplyEffectTo(ref Core.CharacterData character, TAnimCore animator) + { + timePassed = timeMode.GetTime(animator.time.timeSinceStart * timeSpeed, character.passedTime * timeSpeed, character.index); + if(timePassed<0) + return; + + float weight = weightMult * emissionCurve.Evaluate(timePassed); + + for (byte i = 0; i < TextUtilities.verticesPerChar; i++) + { + if(animationPerVertexData[i].TryCalculatingMatrix(character, timePassed, weight, out matrix, out offset)) + { + character.current.positions[i] = matrix.MultiplyPoint3x4(character.current.positions[i] - offset) + offset; + } + + if(animationPerVertexData[i].TryCalculatingColor(character, timePassed, weight, out color)) + { + character.current.colors[i] = Color32.LerpUnclamped(character.current.colors[i], color, Mathf.Clamp01(weight)); + } + } + } + + public override float GetMaxDuration() => emissionCurve.GetMaxDuration(); + public override bool CanApplyEffectTo(CharacterData character, TAnimCore animator) => true; + + void ClampVertexDataArray() + { + for (int i = 0; i < animationPerVertexData.Length; i++) + { + if (animationPerVertexData[i] == null) + animationPerVertexData[i] = new AnimationData(); + } + + if (animationPerVertexData.Length != TextUtilities.verticesPerChar) + { + Debug.LogError("Vertex data array must have four vertices. Clamping/Resizing to four."); + + var newArray = new AnimationData[TextUtilities.verticesPerChar]; + for (int i = 0; i < newArray.Length; i++) + { + if (i < animationPerVertexData.Length) + newArray[i] = animationPerVertexData[i]; + else + newArray[i] = new AnimationData(); + } + animationPerVertexData = newArray; + } + } + + void OnValidate() => ClampVertexDataArray(); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta new file mode 100644 index 0000000..80b130b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/Built-in/VertexCurveAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29c51188496414c2893fff43f194d40a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta new file mode 100644 index 0000000..d9cd875 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9447a4edcc4c042219276d5c0bad1da9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs new file mode 100644 index 0000000..ea50d70 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs @@ -0,0 +1,87 @@ +using UnityEngine; + +namespace Febucci.UI.Effects +{ + [System.Serializable] + public class AnimationData + { + //--- Curves --- + //Movement + [FloatCurveProperty] public FloatCurve movementX = new FloatCurve(1, 0, 0); + [FloatCurveProperty] public FloatCurve movementY = new FloatCurve(1, 0, 0); + [FloatCurveProperty] public FloatCurve movementZ = new FloatCurve(1, 0, 0); + + //Scale + [FloatCurveProperty] public FloatCurve scaleX = new FloatCurve(2, 0, 1); + [FloatCurveProperty] public FloatCurve scaleY = new FloatCurve(2, 0, 1); + + //Rotation + [FloatCurveProperty] public FloatCurve rotX = new FloatCurve(45, 0, 0); + [FloatCurveProperty] public FloatCurve rotY = new FloatCurve(45, 0, 0); + [FloatCurveProperty] public FloatCurve rotZ = new FloatCurve(45, 0, 0); + + //Color + [ColorCurveProperty] public ColorCurve colorCurve = new ColorCurve(0); + + Vector3 movement; + Vector2 scale; + Quaternion rot; + + public bool TryCalculatingMatrix(Core.CharacterData character, + float timePassed, + float weight, + out Matrix4x4 matrix, + out Vector3 offset) + { + //Saves a bunch of performance in case user wants only color or movement + //TODO cache + matrix = new Matrix4x4(); + + if (!(movementX.enabled || movementY.enabled || movementZ.enabled + || rotX.enabled || rotY.enabled || rotZ.enabled + || scaleX.enabled || scaleY.enabled)) + { + offset = Vector2.zero; + return false; + } + + offset = (character.current.positions[0] + character.current.positions[2]) / 2f; + + //weighted rotation + rot = Quaternion.Euler( + Mathf.LerpUnclamped(0, rotX.Evaluate(timePassed, character.index), weight), + Mathf.LerpUnclamped(0, rotY.Evaluate(timePassed, character.index), weight), + Mathf.LerpUnclamped(0, rotZ.Evaluate(timePassed, character.index), weight)); + + //weighted movement + movement = new Vector3( + Mathf.LerpUnclamped(0, movementX.Evaluate(timePassed, character.index), weight), + Mathf.LerpUnclamped(0, movementY.Evaluate(timePassed, character.index), weight), + Mathf.LerpUnclamped(0, movementZ.Evaluate(timePassed, character.index), weight)); + + //weighted scale + scale = new Vector2( + Mathf.LerpUnclamped(1, scaleX.Evaluate(timePassed, character.index), weight), + Mathf.LerpUnclamped(1, scaleY.Evaluate(timePassed, character.index), weight)); + + matrix.SetTRS( + movement, + rot, + scale); + + return true; + } + + public bool TryCalculatingColor(Core.CharacterData character, float timePassed, float weight, out Color32 color) + { + if(!colorCurve.enabled) + { + color = Color.white; + return false; + } + + color = colorCurve.Evaluate(timePassed, character.index); + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta new file mode 100644 index 0000000..f696898 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/AnimationData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b417e2a805ff4c638d914f06efa1659 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs new file mode 100644 index 0000000..ab948dd --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs @@ -0,0 +1,47 @@ +using UnityEngine; + +namespace Febucci.UI.Effects +{ + public class ColorCurveProperty : PropertyAttribute + { + + } + + [System.Serializable] + public struct ColorCurve + { + public bool enabled; + + public Gradient colorOverTime; + public float waveSize; + public float duration; + + public ColorCurve(float waveSize) + { + this.enabled = false; + this.waveSize = waveSize; + this.duration = 1; + this.colorOverTime = new Gradient(); + colorOverTime.SetKeys( + new GradientColorKey[] + { + new GradientColorKey(Color.white, 0), + new GradientColorKey(Color.cyan, 0.5f), + new GradientColorKey(Color.white, 1) + }, + + new GradientAlphaKey[] + { + new GradientAlphaKey(1, 0), + new GradientAlphaKey(1, 1) + } + ); + } + + public Color32 Evaluate(float time, int charIndex) + { + time = Mathf.Repeat(time + charIndex * waveSize, duration); + return colorOverTime.Evaluate(time); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta new file mode 100644 index 0000000..5927395 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/ColorCurve.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54279f81e5b424013885578744e46a04 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs new file mode 100644 index 0000000..fc14538 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs @@ -0,0 +1,43 @@ +using UnityEngine; + +namespace Febucci.UI.Effects +{ + public class EmissionCurveProperty : PropertyAttribute + { + + } + + [System.Serializable] + public class EmissionCurve + { + public int cycles; + public float duration; + public float GetMaxDuration() => cycles > 0 ? duration * cycles : -1; + [SerializeField] public AnimationCurve weightOverTime; + public EmissionCurve() + { + cycles = -1; + duration = 1; + weightOverTime = new AnimationCurve( + new[] + { + new Keyframe(0, 1), + new Keyframe(1, 1) + }); + } + + public EmissionCurve(params Keyframe[] keyframes) + { + cycles = -1; + duration = 1; + weightOverTime = new AnimationCurve(keyframes); + } + + public float Evaluate(float timePassed) + { + if (cycles > 0 && timePassed > duration * cycles) return 0; + + return weightOverTime.Evaluate(timePassed % duration); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta new file mode 100644 index 0000000..0e3aebe --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/EmissionCurve.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a1f62454fdf64f1fa75746c09b89a39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs new file mode 100644 index 0000000..3c8814e --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs @@ -0,0 +1,39 @@ +using UnityEngine; +using UnityEngine.Serialization; + +namespace Febucci.UI.Effects +{ + public class FloatCurveProperty : PropertyAttribute + { + + } + + [System.Serializable] //TODO test + public struct FloatCurve + { + public bool enabled; + + readonly float defaultAmplitude; + public AnimationCurve weightOverTime; + public float amplitude; + public float waveSize; + + public FloatCurve(float amplitude, float waveSize, float defaultAmplitude) + { + this.defaultAmplitude = defaultAmplitude; + this.enabled = false; + this.amplitude = amplitude; + this.weightOverTime = new AnimationCurve(new Keyframe(0, 0), new Keyframe(.5f, .5f), new Keyframe(1, 0)); + this.weightOverTime.preWrapMode = WrapMode.Loop; + this.weightOverTime.postWrapMode = WrapMode.Loop; + this.waveSize = 0; + } + + public float Evaluate(float passedTime, int charIndex) + { + if(!enabled) return defaultAmplitude; + + return Mathf.LerpUnclamped(defaultAmplitude, amplitude, weightOverTime.Evaluate(passedTime + waveSize * charIndex)); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta new file mode 100644 index 0000000..b22e5db --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/FloatCurve.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 534fa2c94985d4c0f9e3f08be5643d93 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs new file mode 100644 index 0000000..ac8f73a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs @@ -0,0 +1,29 @@ +namespace Febucci.UI.Effects +{ + [System.Serializable] + public struct TimeMode + { + public float startDelay; + public bool useUniformTime; + public float waveSize; + public float timeSpeed; + + public TimeMode(bool useUniformTime) + { + this.useUniformTime = useUniformTime; + waveSize = 0; + timeSpeed = 1; + startDelay = 0; + tempTime = 0; + } + + float tempTime; + public float GetTime(float animatorTime, float charTime, int charIndex) + { + tempTime = ((useUniformTime ? animatorTime : charTime) - startDelay) * timeSpeed - waveSize * charIndex; + if (tempTime < startDelay) + return -1; + return tempTime; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta new file mode 100644 index 0000000..d21f849 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/Special/Curves/_Core/TimeMode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7da2fc6307c647549bfdba8d42c00652 +timeCreated: 1680257522 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta new file mode 100644 index 0000000..34e886d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da150bd21a2db4b87ac5eed209c5ae29 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs new file mode 100644 index 0000000..1104dbd --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs @@ -0,0 +1,54 @@ +using Febucci.UI.Core; +using UnityEngine; + +namespace Febucci.UI.Effects +{ + /// + /// Base class for animating letters in Text Animator + /// + public abstract class AnimationScriptableBase : ScriptableObject, ITagProvider + { + [SerializeField] string tagID; + public string TagID + { + get => tagID; + set => tagID = value; //TODO if playing, discard rebuild if already initialized + } + + //--- INITIALIZATION --- + bool initialized = false; + public void InitializeOnce() + { + if(initialized) return; + + initialized = true; + + OnInitialize(); + } + + protected virtual void OnInitialize(){ } + + void OnEnable() + { + //resets for enter playmode settings + initialized = false; + } + + //--- ABSTRACT / VIRTUAL METHODS ---+ + + /// + /// Resets the effect context (base variables) for every region, before applying modifiers (if any) with + /// + public abstract void ResetContext(TAnimCore animator); + + /// + /// Changes an effect' base variable based on the passed parameter. + /// + /// + public virtual void SetModifier(ModifierInfo modifier) { } + public abstract float GetMaxDuration(); + public abstract bool CanApplyEffectTo(CharacterData character, TAnimCore animator); + public abstract void ApplyEffectTo(ref CharacterData character, TAnimCore animator); + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta new file mode 100644 index 0000000..19bc48a --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationScriptableBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fdd8e5ebf6899a84f89605d743590fdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs new file mode 100644 index 0000000..b19fd63 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs @@ -0,0 +1,14 @@ +using Febucci.UI.Core; + +namespace Febucci.UI.Effects +{ + /// + /// Contains animations that will be recognized and used by Text Animator + /// + [System.Serializable] + [UnityEngine.CreateAssetMenu(fileName = "Animations Database", menuName = "Text Animator/Animations/Create Animations Database", order = 100)] + public class AnimationsDatabase : Database + { + + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta new file mode 100644 index 0000000..9870f19 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/AnimationsDatabase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 103e863f5c0347be8a512f431aaf5ec1 +timeCreated: 1677521214 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs new file mode 100644 index 0000000..e7109f9 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace Febucci.UI.Core +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] + public class DefaultValueAttribute : Attribute + { + public readonly string variableName; + public readonly float variableValue; + + public DefaultValueAttribute(string variableName, float variableValue) + { + this.variableName = variableName; + this.variableValue = variableValue; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta new file mode 100644 index 0000000..40defca --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/DefaultValueAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1aa92d7ec7964d30b8976caee1babfe7 +timeCreated: 1678706826 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs new file mode 100644 index 0000000..c641318 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs @@ -0,0 +1,34 @@ +using System; + +namespace Febucci.UI.Core +{ + [Flags] + public enum EffectCategory + { + None = 0, + Behaviors = 1, + Appearances = 2, + All = Behaviors | Appearances + } + + [AttributeUsage(AttributeTargets.Class)] + public class TagInfoAttribute : Attribute + { + public readonly string tagID; + public TagInfoAttribute(string tagID) + { + this.tagID = tagID; + } + } + + [AttributeUsage(AttributeTargets.Class)] + public class EffectInfoAttribute : TagInfoAttribute + { + public readonly EffectCategory category; + + public EffectInfoAttribute(string tagID, EffectCategory category) : base(tagID) + { + this.category = category; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta new file mode 100644 index 0000000..8d82730 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Animations/_Core/EffectInfoAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d39438ca5b9e4692916f5929b4c3ff1d +timeCreated: 1678384125 \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta new file mode 100644 index 0000000..f75844b --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b5322a2db28c4d3893673cabc2b05db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs new file mode 100644 index 0000000..7b202a1 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs @@ -0,0 +1,105 @@ +using Febucci.UI.Actions; +using Febucci.UI.Core; +using Febucci.UI.Core.Parsing; +using Febucci.UI.Effects; +using UnityEngine; + +namespace Febucci.UI +{ + /// + /// Contains global settings for Text Animator, like effects enabled status and default databases. + /// + [System.Serializable] + [CreateAssetMenu(fileName = "Text Animator Settings", menuName = "Text Animator/Settings", order = 100)] + public sealed class TextAnimatorSettings : ScriptableObject + { + public const string expectedName = "TextAnimatorSettings"; + static TextAnimatorSettings instance; + + /// + /// The current instance of the settings. If it's null, it will be loaded from the resources. + /// (Make sure to have one "TextAnimatorSettings" file in the Resources folder.) + /// + public static TextAnimatorSettings Instance + { + get + { + if (instance) return instance; + + LoadSettings(); + return instance; + } + } + + /// + /// Manually loads the settings ScriptableObject in case it wasn't loaded yet. + /// + public static void LoadSettings() + { + if(instance) return; + instance = Resources.Load(expectedName); + } + + /// + /// Manually unloads the settings ScriptableObject instance. + /// + public static void UnloadSettings() + { + if(!instance) return; + + Resources.UnloadAsset(instance); + instance = null; + } + + /// + /// Sets all the effects (both appearances/disappearances and behaviors) status. + /// + /// + public static void SetAllEffectsActive(bool enabled) + { + SetAppearancesActive(enabled); + SetBehaviorsActive(enabled); + } + + /// + /// Sets all appearances effects status. + /// + /// + public static void SetAppearancesActive(bool enabled) + { + if (Instance) Instance.appearances.enabled = enabled; + } + + /// + /// Sets all behaviors effects status. + /// + /// + public static void SetBehaviorsActive(bool enabled) + { + if (Instance) Instance.behaviors.enabled = enabled; + } + + [System.Serializable] + public struct Category where T : ScriptableObject + { + public T defaultDatabase; + + public bool enabled; + public char openingSymbol; + public char closingSymbol; + + public Category(char openingSymbol, char closingSymbol) + { + defaultDatabase = null; + enabled = true; + this.openingSymbol = openingSymbol; + this.closingSymbol = closingSymbol; + } + } + + [Header("Default info")] + public Category behaviors = new Category('<', '>'); + public Category appearances = new Category('{', '}'); + public Category actions = new Category('<', '>'); + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta new file mode 100644 index 0000000..e937fc6 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Scriptables/Settings/TextAnimatorSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9743a50feedea474dbef99517d3e30eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta new file mode 100644 index 0000000..5863d14 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0ccd8b0aa52fed49bcb7994d0e16485 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs new file mode 100644 index 0000000..a0ac156 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; + +namespace Febucci.UI.Core +{ + /// + /// Helper class. Contains methods to parse attributes/values from strings. + /// + public static class FormatUtils + { + /// + /// Tries to parse a rich text tag parameter. + /// + /// + /// Mostly used in combination with custom typewriter actions. (Manual: Writing Custom actions C#) + /// + /// list of all the attributesi in the rich text tag + /// the parameter's index in the list + /// default value, assigned if the parsing is not successful + /// result from the parsing + /// true if successful + public static bool TryGetFloat(List attributes, int index, float defValue, out float result) + { + if (index >= attributes.Count || index < 0) + { + result = defValue; + return false; + } + + return TryGetFloat(attributes[index], defValue, out result); + } + + //TODO Docs + public static bool TryGetFloat(string attribute, float defValue, out float result) + { + if (ParseFloat(attribute, out result)) + return true; + + result = defValue; + return false; + } + + /// + /// Tries parsing a float given a string, independently of the system's culture + /// + /// + /// + /// + public static bool ParseFloat(string value, out float result) + { + return float.TryParse(value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result); + } + } + +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta new file mode 100644 index 0000000..a4e8332 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/FormatUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa97b1b4f8a3bfa4b82ca06b835b4bb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs new file mode 100644 index 0000000..6c2a6fd --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs @@ -0,0 +1,216 @@ +using UnityEngine; + +namespace Febucci.UI.Core +{ + /// + /// Helper class. Contains methods (including extensions) that modify your letters positions and colors. + /// + public static class TextUtilities + { + #region Consts + + /// + /// Represents the number of vertices per character/letter. + /// + /// + /// P.S. bars/underlines have a different vertices number, but are not animated by TextAnimator. + /// + public const int verticesPerChar = 4; + + #endregion + + #region Vector Utilities + + public const int fakeRandomsCount = 25; //18° angle difference + internal static Vector3[] fakeRandoms; + public static Vector3[] FakeRandoms => fakeRandoms; + + static bool initialized = false; + internal static void Initialize() + { + if (initialized) + return; + + initialized = true; + + //Creates fake randoms from a list of directions (with an incremental angle of 360/fakeRandomsCount between each) + //and then sorts them randomly, avoiding repetitions (which could have occurred using Random.insideUnitCircle) + System.Collections.Generic.List randomDirections = new System.Collections.Generic.List(); + + float angle; + for (float i = 0; i < 360; i += 360 / fakeRandomsCount) + { + angle = i * Mathf.Deg2Rad; + randomDirections.Add(new Vector3(Mathf.Sin(angle), Mathf.Cos(angle)).normalized); + } + + fakeRandoms = new Vector3[fakeRandomsCount]; + int randomIndex; + for (int i = 0; i < fakeRandoms.Length; i++) + { + randomIndex = Random.Range(0, randomDirections.Count); + fakeRandoms[i] = randomDirections[randomIndex]; + randomDirections.RemoveAt(randomIndex); + } + } + + /// + /// Rotates a point around a 2D center by X degrees + /// + /// point to rotate + /// rotation's center + /// rotation degrees + /// + /// + /// letterVertex.RotateAround(letterMiddlePoint, angle); + /// + public static Vector3 RotateAround(this Vector3 vec, Vector2 center, float rotDegrees) + { + rotDegrees *= Mathf.Deg2Rad; + + float tempX = vec.x - center.x; + float tempY = vec.y - center.y; + + float rotatedX = tempX * Mathf.Cos(rotDegrees) - tempY * Mathf.Sin(rotDegrees); + float rotatedY = tempX * Mathf.Sin(rotDegrees) + tempY * Mathf.Cos(rotDegrees); + + vec.x = rotatedX + center.x; + vec.y = rotatedY + center.y; + + return vec; + } + + #endregion + + /// + /// Moves a char towards a direction. Equivalent to adding a vector to all the vertices. + /// + /// + /// + /// + public static void MoveChar(this Vector3[] vec, Vector3 dir) + { + for (byte j = 0; j < vec.Length; j++) + { + vec[j] += dir; + } + } + + /// + /// Sets all the vertices of character to the given position. + /// + /// + /// + /// + public static void SetChar(this Vector3[] vec, Vector3 pos) + { + for (byte j = 0; j < vec.Length; j++) + { + vec[j] = pos; + } + } + + /// + /// Lerps all the character's vertices (without checking if pct is between 0 and 1) + /// + /// + /// + /// + /// + public static void LerpUnclamped(this Vector3[] vec, Vector3 target, float pct) + { + for (byte j = 0; j < vec.Length; j++) + { + vec[j] = Vector3.LerpUnclamped(vec[j], target, pct); + } + } + + /// + /// Returns the middle position of the given array + /// + /// + /// + public static Vector3 GetMiddlePos(this Vector3[] vec) + { + return (vec[0] + vec[2]) / 2f; //bot left and top right + + //'Normal way', for arrays with any size (not happening, since Bars aren't animated) + /* + Vector3 middlePos = Vector3.zero; + for (byte j = 0; j < vec.Length; j++) + { + middlePos += vec[j]; + } + + return (middlePos / vec.Length); + */ + } + + + /// + /// Rotates all the vertices towards an angle, with their center as the rotation pivot + /// + /// + /// + /// + public static void RotateChar(this Vector3[] vec, float angle) + { + Vector3 middlePos = vec.GetMiddlePos(); + for (byte j = 0; j < vec.Length; j++) + { + vec[j] = vec[j].RotateAround(middlePos, angle); + } + } + + public static void RotateChar(this Vector3[] vec, float angle, Vector3 pivot) + { + for (byte j = 0; j < vec.Length; j++) + { + vec[j] = vec[j].RotateAround(pivot, angle); + } + } + + /// + /// Sets the color of all the vertices of the character. + /// + /// + /// + /// + public static void SetColor(this Color32[] col, Color32 target) + { + for (byte j = 0; j < col.Length; j++) + { + col[j] = target; + } + } + + /// + /// Lerps all the colors of the characters towards a given target + /// + /// + /// + /// + /// + public static void LerpUnclamped(this Color32[] col, Color32 target, float pct) + { + for (byte j = 0; j < col.Length; j++) + { + col[j] = Color32.LerpUnclamped(col[j], target, pct); + } + } + + + /// + /// Calculates the animation curve duration + /// + /// + /// + public static float CalculateCurveDuration(this AnimationCurve curve) + { + if (curve.keys.Length > 0) + return curve.keys[curve.length - 1].time; + + return 0; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta new file mode 100644 index 0000000..26fec25 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/TextUtilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 792ffbd6b25610f48800fce737481b10 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs new file mode 100644 index 0000000..f461a83 --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs @@ -0,0 +1,90 @@ +using UnityEngine; + +namespace Febucci.UI.Effects +{ + //TODO Docs + + /// + /// Helper class used to interpolate effects. + /// + public static class Tween + { + public static float EaseIn(float t) + { + return t * t; + } + + public static float Flip(float x) + { + return 1 - x; + } + + public static float Square(float t) + { + return t * t; + } + + public static float EaseOut(float t) + { + return Flip(Square(Flip(t))); + } + + public static float EaseInOut(float t) + { + return Mathf.Lerp(EaseIn(t), EaseOut(t), t); + } + + #region BounceOut + public static float BounceOut(float t) + { + /* + License of the original method/algorithm, modified later for C#. + + ------------------------Start------------------------ + The MIT License + + Copyright (c) 2010-2012 Tween.js authors. + + Easing equations Copyright (c) 2001 Robert Penner http:/robertpenner.com/ easing/ + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + ------------------------End------------------------ + */ + + if (t < (1f / 2.75f)) + { + return 7.5625f * t * t; + } + else if (t < (2f / 2.75f)) + { + return 7.5625f * (t -= (1.5f / 2.75f)) * t + 0.75f; + } + else if (t < (2.5f / 2.75f)) + { + return 7.5625f * (t -= (2.25f / 2.75f)) * t + 0.9375f; + } + else + { + return 7.5625f * (t -= (2.625f / 2.75f)) * t + 0.984375f; + } + } + #endregion + } +} diff --git a/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta new file mode 100644 index 0000000..93d140d --- /dev/null +++ b/Assets/Plugins/Febucci/Text Animator/Scripts/Runtime/Utilities/Tween.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2edcfb3709f1187429d9fda2e36df38e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset index 9dc9cd8..b6ee06b 100644 --- a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset @@ -48,8 +48,8 @@ Material: - _Stencil: 0 - _StencilComp: 8 - _StencilOp: 0 - - _StencilReadMask: 255 - - _StencilWriteMask: 255 + - _StencilReadMask: 1 + - _StencilWriteMask: 0 - _TextureHeight: 1024 - _TextureWidth: 1024 - _UnderlayDilate: 0