__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
ELF>@p�
@8@H�H����9�9������P�
P�
P�
�!�$��
��
��
�����  $$��
��
��
xxS�td���  P�td,1
,1
,1
,,Q�tdR�tdP�
P�
P�
��GNU�GNUG��KaMY,���p&y?�%�q )�@� �-L�A2*iH!�HP*��������������������������P[�mn�v��P;��櫙x�{~}�#G��4����$C�k�y2j����؝�����zB�3d���;��A��K�v��z��ҏ5��$>m�hX���|��}��\w~�q5�H��v�c�滆B���!(c�oqΚ!���zV�C:q�`����U@�Z�'*#�L�5@^<�<]�7h�D�/zCcL�&��'�:NM�2k
C�-��-�)�&�5�h/F4�I�=U ?5E�B�-�0�&�{>��1�J		��`EaIOJA5,O(qH+sF"��j6?�-�E*��A}J0�#+7�30�.�(��@�N`M�4�J�=�;4�<�8
��?�EG�'2�	IG@�M�*�?E,tG�G�A�=��>�: Q1k)��A��H|'�B�B��$z00���@�wQ
�B/�F�0CQlNo-�t(�F�E��H�:�A����G�E�CD1@�M�8|E=�=J2 ;+ZL.2Bn:�f-��;�)hE���':�F�1�,U+�0�(FpDT$5�<�>��F�	'x
�2JC`�*�H�m3�66
�0�@�D<e5pb?/+�.FD��Ic;EI >M#<4L�2�KibC}�>L8N�nc>�?��+A;�v*&�\Hv~�Hz�jT�,�*+,J}F] 2��Hv�F�;F3K�(�N}�~ SN;�I>#��,KBC=e@uA�&�#@'=HK2�*I�
6��;�"�,LE�'(|K�@t=>����)A�Lf4�%Y#$��GN�A�<, h
B+R&WI�J~
�B^;�*�/��Ik,u=�6� @/�@*�+3�:O:�AK�<�8)*�=?u2HL�3��K�N�M	GaJ=$�.8<��G��.��+@K*�>�7�:M�+U)�=.�;4*0.��%^.�D���4!N%�Mc�!�� H�8�
�!��
Z8"@<�@�(�
>"����! �
��!8�
O!@�
�$"��#! �
<!��
�7"�:[�!�)!@�$�!��
B9"=�!���J�a#	"�$��O!X�
X�!��#�N!`#
 � " ���!��#F� �
>!��
�d!��!�D��2�!��
�!��8"����!�
+O!�#
S��@�
�!��
!��
J!@�3�!P�
�!h�
�""���!�#P!��&�!�
?
"�$�s!�� __gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_ZN4cppu11OWeakObject7releaseEv_ZN4cppu11OWeakObject7acquireEv_ZN4cppu20WeakImplHelper_queryERKN3com3sun4star3uno4TypeEPNS_10class_dataEPvPNS_11OWeakObjectE__cxa_guard_acquire__cxa_guard_release__stack_chk_failrtl_uString_releasetypelib_static_type_inituno_any_destruct__cxa_begin_catch__cxa_end_catch_Unwind_Resume_ZN4cppu15supportsServiceEPN3com3sun4star4lang12XServiceInfoERKN3rtl8OUStringE__cxa_allocate_exception_ZNSt9bad_allocD1Ev_ZTISt9bad_alloc_ZTVSt9bad_alloc__cxa_throw_ZN3com3sun4star3uno8SequenceIN3rtl8OUStringEE7s_pTypeEuno_type_sequence_constructtypelib_static_type_getByTypeClasstypelib_static_sequence_type_initrtl_uString_newFromLiteraltypelib_typedescription_newStructtypelib_typedescription_registertypelib_typedescription_releasertl_allocateMemorytypelib_typedescriptionreference_newtypelib_typedescription_newEnum_ZN3com3sun4star3uno8SequenceIaE7s_pTypeE_ZN4cppu23WeakImplHelper_getTypesEPNS_10class_dataE_ZdlPvmtypelib_typedescription_newMIInterfacetypelib_typedescriptionreference_releaseosl_getGlobalMutexosl_acquireMutexosl_releaseMutextypelib_typedescription_newInterfaceMethodtypelib_typedescription_newuno_type_sequence_realloc_ZN3utl15UcbStreamHelper12CreateStreamERKN3com3sun4star3uno9ReferenceINS3_2io12XInputStreamEEEb_ZN8SvStream13remainingSizeEvuno_type_sequence_reference2One_ZN8SvStream9ReadBytesEPvm_ZN6ZCodecC1Emm_ZN6ZCodec16BeginCompressionEib_ZN6ZCodec4ReadER8SvStreamPhj_ZN6ZCodec14EndCompressionEv_ZN6ZCodecD1Evrtl_uString_acquire_ZN3com3sun4star3uno8SequenceINS1_5beans13PropertyValueEE7s_pTypeErtl_uString_new_ZTVN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE_ZN4cppu11OWeakObjectD2Evfilter_SVGFilter_get_implementationrtl_freeMemory__libc_single_threadedrtl_uString_allocmemcpy_ZTIN3com3sun4star3uno19DeploymentExceptionE__cxa_free_exception__cxa_rethrowrtl_ustr_asciil_reverseEquals_WithLengthuno_type_sequence_destroy_ZN3com3sun4star3uno8SequenceINS2_9ReferenceINS2_10XInterfaceEEEE7s_pTypeEuno_type_assignData_Znwm_ZSt20__throw_length_errorPKccppu_unsatisfied_iquery_msg_ZTIN3com3sun4star3uno16RuntimeExceptionEcppu_unsatisfied_iset_msg_ZNSt10_HashtableIN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEESt4pairIKS6_N3rtl8OUStringEESaISB_ENSt8__detail10_Select1stESt8equal_toIS6_ESt4hashIS6_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEED2Evmemset_ZNSt10_HashtableIN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEESt4pairIKS6_N3rtl8OUStringEESaISB_ENSt8__detail10_Select1stESt8equal_toIS6_ESt4hashIS6_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEED1Ev_ZN11GDIMetaFileD1Ev_ZN11SvxDrawPage14getUnoTunnelIdEvrtl_ustr_reverseCompare_WithLengthuno_any_construct_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm_ZSt28__throw_bad_array_new_lengthv_ZSt17__throw_bad_allocv_ZN3utl15MediaDescriptorC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEErtl_ustr_hashCode_WithLength_ZN11Application13GetSolarMutexEv_ZN11Application14GetFocusWindowEv_ZN3vcl6Window9EnterWaitEv_ZN10comphelper14LibreOfficeKit8isActiveEv_ZN3vcl6Window9LeaveWaitEv_ZN13GraphicFilterC1Ev_ZN7GraphicC1Ev_ZN13GraphicFilter13ImportGraphicER7GraphicSt17basic_string_viewIDsSt11char_traitsIDsEER8SvStreamtPt24GraphicFilterImportFlags_ZNK7Graphic11GetPrefSizeEv_ZN13GraphicFilterD1Ev_ZNK7Graphic20getVectorGraphicDataEv_ZN10SdrGrafObjC1ER8SdrModelRK7Graphic_ZN9SdrObject7acquireEv_ZNK7Graphic14GetPrefMapModeEv_ZNK7MapMode10GetMapUnitEv_ZN12OutputDevice12LogicToLogicEl7MapUnitS0__ZNK7SdrPage7GetSizeEv_ZNK7SdrPage13GetLeftBorderEv_ZNK7SdrPage14GetRightBorderEv_ZNK7SdrPage14GetUpperBorderEv_ZNK7SdrPage14GetLowerBorderEv_ZN9SdrObject11SetSnapRectERKN5tools9RectangleE_ZN7MapModeD1Ev_ZN9SdrObject7releaseEv_ZNK17VectorGraphicData22getPrimitive2DSequenceEv_ZN12drawinglayer11primitive2d20Primitive2DContainerC1ERKSt5dequeIN3com3sun4star3uno9ReferenceINS5_7graphic12XPrimitive2DEEESaISA_EE_ZN12drawinglayer11primitive2d20Primitive2DContainerD1Evrtl_uString_assign_ZTSN3com3sun4star3uno10XInterfaceE_ZTIN3com3sun4star3uno10XInterfaceE_ZTVN10__cxxabiv117__class_type_infoE_ZTSN3com3sun4star3uno16RuntimeExceptionE_ZTVN10__cxxabiv120__si_class_type_infoE_ZTIN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno19DeploymentExceptionE_ZTSN3com3sun4star4lang13XTypeProviderE_ZTIN3com3sun4star4lang13XTypeProviderE_ZTSN3com3sun4star8document7XFilterE_ZTIN3com3sun4star8document7XFilterE_ZTSN3com3sun4star8document9XImporterE_ZTIN3com3sun4star8document9XImporterE_ZTSN3com3sun4star8document9XExporterE_ZTIN3com3sun4star8document9XExporterE_ZTSN3com3sun4star8document24XExtendedFilterDetectionE_ZTIN3com3sun4star8document24XExtendedFilterDetectionE_ZTSN3com3sun4star4lang12XServiceInfoE_ZTIN3com3sun4star4lang12XServiceInfoE_ZTSN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE_ZTIN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE_ZTVN10__cxxabiv121__vmi_class_type_infoE_ZTIN4cppu11OWeakObjectE_ZTSN3com3sun4star2io11IOExceptionE_ZTIN3com3sun4star2io11IOExceptionE_ZN4cppu11OWeakObject12queryAdapterEv__cxa_pure_virtual__gxx_personality_v0_ZN11SvXMLExport12AddAttributeEtRKN3rtl8OUStringES3___dynamic_castrtl_uStringbuffer_insert_ZN18SvXMLElementExportC1ER11SvXMLExporttRKN3rtl8OUStringEbb_ZN18SvXMLElementExportD1Ev_ZN11SvXMLExportD2Evrtl_ustr_valueOfUInt64_ZN11SvXMLExportC2ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEEN3rtl8OUStringEsN6xmloff5token12XMLTokenEnumE16SvXMLExportFlags_ZN11SvXMLExport13SetDocHandlerERKN3com3sun4star3uno9ReferenceINS2_3xml3sax16XDocumentHandlerEEE_ZN10comphelper17SequenceAsHashMapC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEE_ZN6xmloff5token11GetXMLTokenENS0_12XMLTokenEnumE_ZN17SvXMLNamespaceMap3AddERKN3rtl8OUStringES3_trtl_bootstrap_get_ZN11GDIMetaFileC1ERKS__ZNK11GDIMetaFile13GetActionSizeEv_ZNK11GDIMetaFile9GetActionEm_ZNK8BitmapEx11GetChecksumEv_ZN8BitmapExC1ERK6Bitmap_ZN9AlphaMaskD1Ev_ZN6BitmapD1Evrtl_ustr_valueOfInt32rtl_math_doubleToUStringrtl_uString_newFromStr_WithLengthrtl_uString_ensureCapacity_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_rtl_ustr_valueOfInt64_ZN8FractionC1Ell_ZNK8FractioncvdEvrtl_math_roundrtl_math_approxEqual_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_basertl_uString_newFromAsciirtl_ustr_lastIndexOfAscii_WithLength_ZN11SvXMLExport30getInterfaceToIdentifierMapperEv_ZN10comphelper36UnoInterfaceToUniqueIdentifierMapper17registerReferenceERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEE_ZNK10comphelper36UnoInterfaceToUniqueIdentifierMapper13getIdentifierERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEErtl_uString_newReplacertl_uString_newConcatAsciiL_ZN9salhelper21SimpleReferenceObjectnwEm_ZN6xmloff18AnimationsExporterC1ER11SvXMLExportRKN3com3sun4star3uno9ReferenceINS5_5beans12XPropertySetEEE_ZN6xmloff18AnimationsExporter7prepareERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE_ZN6xmloff18AnimationsExporter16exportAnimationsERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE__cxa_guard_abort_ZN9salhelper21SimpleReferenceObjectdlEPv_ZN10comphelper26getProcessComponentContextEv_ZNSt10_HashtableIN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEES6_SaIS6_ENSt8__detail9_IdentityESt8equal_toIS6_ESt4hashIS6_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev_ZNSt10_HashtableIN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEES6_SaIS6_ENSt8__detail9_IdentityESt8equal_toIS6_ESt4hashIS6_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb1ELb1EEEED1Ev_ZN7MapModeC1E7MapUnit_ZN12OutputDevice12LogicToLogicERK4SizeRK7MapModeS5__ZNK7MapMode9GetOriginEv_ZN12OutputDevice12LogicToLogicERK5PointRK7MapModeS5__ZNSt10_HashtableIN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEESt4pairIKS6_N3rtl8OUStringEESaISB_ENSt8__detail10_Select1stESt8equal_toIS6_ESt4hashIS6_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNSD_10_Hash_nodeISB_Lb1EEEm_ZNSt8__detail9_Map_baseIN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEESt4pairIKS7_N3rtl8OUStringEESaISC_ENS_10_Select1stESt8equal_toIS7_ESt4hashIS7_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixERS9_rtl_uString_newTrimrtl_uString_new_WithLength_ZN13INetURLObject12setAbsURIRefESt17basic_string_viewIDsSt11char_traitsIDsEENS_15EncodeMechanismEtb9FSysStyle_ZN12SvtSysLocaleC1Ev_ZNK12SvtSysLocale16GetUILanguageTagEv_ZN9Translate6CreateESt17basic_string_viewIcSt11char_traitsIcEERK11LanguageTag_ZN9Translate3getE11TranslateIdRKSt6locale_ZNSt6localeD1Ev_ZN12SvtSysLocaleD1Ev_ZNSt10_HashtableIjSt4pairIKjSt10unique_ptrI11GDIMetaFileSt14default_deleteIS3_EEESaIS7_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS9_10_Hash_nodeIS7_Lb0EEEmrtl_ustr_compare_WithLength_ZN9SdrObject22getSdrObjectFromXShapeERKN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEE_ZN15SdrExchangeView13GetObjGraphicERK9SdrObjectb_ZNK7Graphic7GetTypeEv_ZNK7Graphic14GetGDIMetaFileEv_ZN11GDIMetaFileC1Ev_ZNK7Graphic11GetBitmapExERK27GraphicConversionParameters_ZN20MetaBmpExScaleActionC1ERK5PointRK4SizeRK8BitmapEx_ZN11GDIMetaFile9AddActionERKN3rtl9ReferenceI10MetaActionEE_ZN7MapModeaSERKS__ZN7GraphicC1ERKN3com3sun4star3uno9ReferenceINS2_7graphic8XGraphicEEE_ZN7GraphicaSEOS_rtl_uString_newConcatrtl_str_compareIgnoreAsciiCase_WithLengthrtl_uStringbuffer_newFromStr_WithLengthrtl_uStringBuffer_makeStringAndClearrtl_uStringbuffer_insert_ascii__cxa_atexit_ZNK8Outliner11GetLanguageEii_ZN17SvNumberFormatterC1ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEEN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date14setDateFromDMYEtts_ZN12SvxDateField12GetFormattedERK4Date13SvxDateFormatR17SvNumberFormatterN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date6SetDayEt_ZN4Date8SetMonthEt_ZN3utl12TempFileFastC1Ev_ZN3utl12TempFileFast9GetStreamE10StreamModeuno_type_any_construct_ZN3utl20OOutputStreamWrapperC1ER8SvStream_ZN8SvStream4SeekEm_ZN9SvmReaderC1ER8SvStream_ZN9SvmReader4ReadER11GDIMetaFileP16ImplMetaReadData_ZN3utl12TempFileFastD1Evrtl_string_newrtl_convertUStringToStringrtl_string_allocrtl_string_releasertl_string_acquire_ZN17MetaCommentActionC1EN3rtl7OStringEiPKhj_ZN18MetaBmpScaleActionC1ERK5PointRK4SizeRK6Bitmap_ZNK6Bitmap12GetSizePixelEv_ZN14SvMemoryStreamC1Emm_ZN3utl14OStreamWrapperC1ER8SvStream_ZN8SvStream11FlushBufferEvrtl_crc32_ZN6ZCodec22SetCompressionMetadataERKN3rtl7OStringEjj_ZN6ZCodec8CompressER8SvStreamS1__ZN14SvMemoryStreamD1Ev_ZNK8SdrModel15GetDrawOutlinerEPK10SdrTextObj_ZNK8SdrModel18GetActiveOutlinersEv_ZN3utl15UcbStreamHelper12CreateStreamERKN3rtl8OUStringE10StreamModeRKN3com3sun4star3uno9ReferenceINS8_3awt7XWindowEEEb_ZNK7GraphiceqERKS__ZN7GraphicC1ERKS__ZNK8SdrModel13IsUndoEnabledEv_ZN8SdrModel10EnableUndoEb_ZN10SdrGrafObjC1ER8SdrModelRK7GraphicRKN5tools9RectangleE_Z21GetXShapeForSdrObjectP9SdrObject_ZNK7Graphic11GetChecksumEv_ZTI11SvXMLExport_ZN11SvXMLExport17SetBodyAttributesEv_ZN11SvXMLExport11ExportMeta_Ev_ZN11SvXMLExport14ExportScripts_Ev_ZN11SvXMLExport16ExportFontDecls_Ev_ZN11SvXMLExport25CreateTextParagraphExportEv_ZN11SvXMLExport17CreateShapeExportEv_ZN11SvXMLExport19CreateAutoStylePoolEv_ZN11SvXMLExport16CreatePageExportEv_ZN11SvXMLExport23CreateFontAutoStylePoolEv_ZN11SvXMLExport15GetViewSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport24GetConfigurationSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport27GetDocumentSpecificSettingsERSt6vectorINS_13SettingsGroupESaIS1_EE_ZN11SvXMLExport17collectAutoStylesEv_ZN11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZN11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport6cancelEv_ZN11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZN11SvXMLExport7getNameEv_ZN11SvXMLExport7setNameERKN3rtl8OUStringE_ZN11SvXMLExport21getImplementationNameEv_ZN11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZN11SvXMLExport24getSupportedServiceNamesEv_ZN11SvXMLExport12addDataStyleEib_ZN11SvXMLExport16exportDataStylesEv_ZN11SvXMLExport20exportAutoDataStylesEv_ZNK11SvXMLExport16getDataStyleNameEib_ZN11SvXMLExport20exportAnnotationMetaERKN3com3sun4star3uno9ReferenceINS2_7drawing6XShapeEEE_ZN11SvXMLExport14DisposingModelEv_ZThn40_N11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZThn40_N11SvXMLExport6cancelEv_ZThn48_N11SvXMLExport21getImplementationNameEv_ZThn48_N11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZThn48_N11SvXMLExport24getSupportedServiceNamesEv_ZThn56_N11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZThn64_N11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZThn72_N11SvXMLExport7getNameEv_ZThn72_N11SvXMLExport7setNameERKN3rtl8OUStringE_ZN5tools11PolyPolygonC1Et_ZNK12OutputDevice14GetTextOutlineERN5tools11PolyPolygonERKN3rtl8OUStringE_ZN5tools11PolyPolygon5ScaleEdd_ZNK12OutputDevice16GetTextBoundRectERN5tools9RectangleERKN3rtl8OUStringEiiimSt4spanIKdLm18446744073709551615EES7_IKhLm18446744073709551615EEPK15SalLayoutGlyphs_ZNK12OutputDevice12GetTextWidthERKN3rtl8OUStringEiiPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZN5tools11PolyPolygonD1Ev_ZN16VclReferenceBase11disposeOnceEv_ZNSt8_Rb_treeIN3rtl8OUStringES1_St9_IdentityIS1_ESt7greaterIS1_ESaIS1_EE16_M_insert_uniqueIS1_EESt4pairISt17_Rb_tree_iteratorIS1_EbEOT__ZNSt8_Rb_treeIN3rtl8OUStringESt4pairIKS1_St3mapI10FontWeightS4_I10FontItalicSt3setIS1_St7greaterIS1_ESaIS1_EESt4lessIS6_ESaIS2_IKS6_SB_EEESC_IS5_ESaIS2_IKS5_SH_EEEESt10_Select1stISN_ESC_IS1_ESaISN_EE24_M_get_insert_unique_posERS3__ZNSt8_Rb_treeIN3rtl8OUStringESt4pairIKS1_St3mapI10FontWeightS4_I10FontItalicSt3setIS1_St7greaterIS1_ESaIS1_EESt4lessIS6_ESaIS2_IKS6_SB_EEESC_IS5_ESaIS2_IKS5_SH_EEEESt10_Select1stISN_ESC_IS1_ESaISN_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorISN_ERS3__ZNK3vcl4Font13GetFamilyNameEv_ZNK3vcl4Font9GetWeightEv_ZNK3vcl4Font9GetItalicEvrtl_uString_getToken_ZN13VirtualDeviceC1EPK12OutputDevice12DeviceFormat10OutDevType_ZN12OutputDevice12EnableOutputEb_ZN12OutputDevice4PushEN3vcl9PushFlagsErtl_uString_newFromSubString_ZN3vcl9unohelper19CreateBreakIteratorEv_ZN11Application11GetSettingsEv_ZNK11AllSettings14GetLanguageTagEv_ZNK11LanguageTag9getLocaleEb_ZN12OutputDevice3PopEv_ZN3vcl4FontC1ERKS0__ZN3vcl4Font11SetFontSizeERK4Size_ZN3vcl4Font12SetAlignmentE9TextAlign_ZN12OutputDevice10SetMapModeERK7MapMode_ZN12OutputDevice7SetFontERKN3vcl4FontE_ZN3vcl4Font9GetWeightEv_ZN3vcl4Font9GetItalicEv_ZNK12OutputDevice13GetFontMetricEv_ZN10FontMetricD1Ev_ZN5tools11PolyPolygonC1ERKNS_9RectangleE_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base_ZN3vcl4FontD1Ev_ZN3vcl4FontC1Ev_ZN3vcl4Font13SetFamilyNameERKN3rtl8OUStringE_ZN3vcl4Font9SetWeightE10FontWeight_ZN3vcl4Font9SetItalicE10FontItalic_ZTVN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEE_ZN3vcl4Font8GetPitchEv_ZN3vcl4Font13GetFamilyTypeEv_ZNK3vcl4FonteqERKS0__ZN3vcl4FontaSERKS0__ZNK3vcl4Font13GetFontHeightEv_ZNK3vcl4Font12GetUnderlineEv_ZNK3vcl4Font12GetStrikeoutEv_ZN3vcl4Font13SetFontHeightElrtl_ustr_shortenedCompare_WithLengthrtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength_ZN11SvXMLExport20GetRelativeReferenceERKN3rtl8OUStringE_ZNK5tools7Polygon7GetSizeEv_ZN5tools7PolygonC1Et_ZN5tools7PolygonaSEOS0__ZN5tools7PolygonD1Ev_ZN5tools7PolygonixEt_ZNK5tools7Polygon8GetPointEt_ZNK5tools7Polygon8GetFlagsEt_ZN5tools7Polygon8SetFlagsEt9PolyFlags_ZN5tools7PolygonC1Ev_ZN5tools11PolyPolygonaSEOS0__ZNK5tools11PolyPolygon5beginEv_ZNK5tools11PolyPolygon3endEv_ZN5tools11PolyPolygon6InsertERKNS_7PolygonEt_ZN9SvmWriter11GetChecksumERK11GDIMetaFile_ZNK8LineInfo9IsDefaultEv_ZN5tools11PolyPolygonaSERKS0__ZNK5tools11PolyPolygon5CountEv_ZNK5tools11PolyPolygon12GetBoundRectEv_ZNK8Gradient12GetBoundRectERKN5tools9RectangleERS1_R5Point_ZNK8Gradient8GetAngleEv_ZN5tools7Polygon6RotateERK5PointN4o3tl10strong_intIs11FractionTagILi10EEEE_ZNK8Gradient13GetStartColorEv_ZNK8Gradient11GetEndColorEv_ZNK8Gradient8GetStepsEv_ZNK8Gradient15GetEndIntensityEv_ZNK8Gradient17GetStartIntensityEv_ZNK8Gradient9GetBorderEv_ZNK8Gradient7GetOfsYEv_ZNK8Gradient7GetOfsXEv_ZNK8Gradient8GetStyleEv_ZN7basegfx9BGradientC1ERKNS_11BColorStopsEN3com3sun4star3awt13GradientStyleEN4o3tl10strong_intIs11FractionTagILi10EEEEtttttt_ZN7basegfx9BGradient27tryToApplyStartEndIntensityEv_ZN7basegfx9BGradient16tryToApplyBorderEv_ZN7basegfx9BGradient15tryToApplyAxialEv_ZN7basegfx9BGradient15tryToApplyStepsEvlroundfilter_SVGWriter_get_implementation_ZN5tools7PolygonC1ERKNS_9RectangleE_ZNK5tools7Polygon12GetBoundRectEvhypot_ZN8GradientD1Ev_ZN3vcl4FontC1EOS0_memmove_ZN3vcl4FontaSEOS0__ZNK3vcl4Font14GetOrientationEv_ZN7MapModeC1Ev_ZN7MapModeaSEOS__ZNK3vcl4Font12GetAlignmentEv_ZN5tools11PolyPolygonC1ERKNS_7PolygonE_ZNK12OutputDevice12GetTextArrayERKN3rtl8OUStringEPSt6vectorIdSaIdEEiibPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZNK3vcl4Font8IsShadowEv_ZNK3vcl4Font9IsOutlineEv_ZNK3vcl4Font9GetReliefEv_ZNK8BitmapEx7IsEmptyEv_ZN8BitmapExC1ERKS__ZN8BitmapEx4CropERKN5tools9RectangleE_ZN10comphelper6Base646encodeERN3rtl14OUStringBufferERKN3com3sun4star3uno8SequenceIaEE_ZTI11SdrMediaObj_ZTI9SdrObject_ZNK11SdrMediaObj10getTempURLEv_ZN7GraphicC1ERK8BitmapEx_ZN16GraphicConverter6ExportER8SvStreamRK7Graphic17ConvertDataFormat_ZN8BitmapEx5ScaleERK4Size12BmpScaleFlag_ZNK7Graphic14GetBitmapExRefEv_ZNK8BitmapExeqERKS__ZNK7Graphic10GetGfxLinkEv_ZNK19BinaryDataContainer7getSizeEv_ZNK7GfxLink7GetDataEv_ZN8SvStream10WriteBytesEPKvm_ZNK3vcl6Region16GetAsPolyPolygonEv_ZN3vcl6RegionD1Ev_ZN5tools7PolygonC1ERKNS_9RectangleERK5PointS6_9PolyStyleb_ZNK12OutputDevice12PixelToLogicERK4Sizertl_str_shortenedCompareIgnoreAsciiCase_WithLength_ZN5tools7PolygonaSERKS0__ZN14SvMemoryStreamC1EPvm10StreamMode_ZN14SvtGraphicFillC1Ev_Z18ReadSvtGraphicFillR8SvStreamR14SvtGraphicFill_ZN17VersionCompatReadC1ER8SvStream_ZN8SvStream10ReadUInt16ERt_ZN8SvStream10ReadDoubleERd_ZN17VersionCompatReadD1Ev_ZN16SvtGraphicStrokeC1Ev_Z20ReadSvtGraphicStrokeR8SvStreamR16SvtGraphicStroke_ZNK16SvtGraphicStroke13getStartArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke11getEndArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke7getPathERN5tools7PolygonE_ZNK16SvtGraphicStroke12getDashArrayERSt6vectorIdSaIdEErtl_convertStringToUString_ZNK14SvtGraphicFill7getPathERN5tools11PolyPolygonE_ZN8GradientC1ERKS__ZN5tools11PolyPolygonixEt_ZNK5tools7Polygon7IsEqualERKS0__ZN12OutputDevice15AddHatchActionsERKN5tools11PolyPolygonERK5HatchR11GDIMetaFile_ZN8Gradient18AddGradientActionsERKN5tools9RectangleER11GDIMetaFile_ZN8Gradient13SetStartColorERK5Color_ZN8Gradient17SetStartIntensityEt_ZN8Gradient11SetEndColorERK5Color_ZN8Gradient15SetEndIntensityEt_ZN7basegfx11BColorStops17reverseColorStopsEv_ZN7MapModeC1ERKS__ZN12OutputDevice13EnableMapModeEb_ZN11GDIMetaFile5ScaleEdd_ZN11GDIMetaFile4MoveEll_ZNK7MapMode9GetScaleXEv_ZNK7MapMode9GetScaleYEv_ZN8FractionmLERKS__ZN7MapMode9SetScaleXERK8Fraction_ZN7MapMode9SetScaleYERK8Fraction_ZN7MapMode9SetOriginERK5Point_ZTSN3com3sun4star3svg10XSVGWriterE_ZTIN3com3sun4star3svg10XSVGWriterE_ZTSN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEE_ZTIN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEElibi18nlangtag.solibuno_salhelpergcc3.so.3libuno_cppuhelpergcc3.so.3libuno_cppu.so.3libuno_sal.so.3libmergedlo.solibstdc++.so.6libm.so.6libgcc_s.so.1libc.so.6GCC_3.0UDK_3_0_0GLIBC_2.2.5GLIBC_2.35LIBO_UDK_3.9GLIBC_2.32GLIBC_2.4GLIBC_2.14GLIBCXX_3.4.18GLIBCXX_3.4.29CXXABI_1.3.9GLIBCXX_3.4CXXABI_1.3LIBO_UDK_5.1LIBO_UDK_4.0UDK_3.8LIBO_UDK_5.3UDK_3.1LIBO_UDK_3.6LIBO_UDK_4.1UDK_3.3LIBO_UDK_4.4$ORIGIN	



			
			iP P&y�P�O �})�P_P0ui	�P���
�PP0YQ��P�})	�PwPP����Pii
�Pui	
�P����PPP`h���Py���Pyѯ�Pt)�QӯkQ
1P�QS�QPT�&QH&�	3QSS�;QF&�	UQA&�	HQVQ�PQQT�]QC&�	jQ�})�P PTT�rQA&�	HQC&�	jQ�})�PP�
ЇX�
��`�
`�h�
P�
p�
��
x�
 �
��
��
��
/��
�5��
@z��
6��
�<��
 >��
��
��
 /��
�5��
px��
6��
�;��
`=�
�
�
`/�
0 �
v(�
pA0�
P:8�
;@�
`
H�
 
P�
 �X�
 
`�
�
h�
�
p�
�
x�
 
��
`
��
�
��

��
@
��
`
��
���
���
@���
����
����
`���
���
��
���
�y�
n�
c �
`S(�
�B0�
�58�
`%@�
 H�
�P�
��X�
�`�
��h�
�lp�
�Qx�
@=��
 1��
�"��
���
 �
��
 �
��
��
��
`�
��
�
��
��
��
�
��
�
��
�v
��
 m
��
``
��
�S
��
�E
�
�7
�
 )
�
�
�
 �	 �
��	(�
��	0�
��	8�
�	@�
�	H�
@�	P�
y	X�
@e	`�
 R	h�
F	p�
�9	x�
�*	��
�	��
	��
	��
 ���
���
@���
���
 ���
����
 ���
����
�v��
f��
`Y��
`G��
�6�
@%�
 �
��
�� �
@�(�
`�0�
@�8�
@�@�
�H�
��P�
`�X�
�r`�
�^h�
Op�
�>x�
�3��
�&��
��
@
��
@���
 ���
`���
����
`���
���
����
@���
 ���
�z��
 l��
�^��
�L�
�=�
 2�
%�
  �
�(�
@�0�
��8�
�
@�
x�
H�
��
P�
p�
X�
�
`�

h�
�.
p�
�.
x�
@
��
/
��
 /
��
@/
��
�
��
�/
��
� 
��
� 
��
�/
��
 !
��
0
��
�
��
p
��
�
��
�/
��
�/
��
�/
�
0
�
0
�
 0
�
00
 �
@0
(�

0�

8�
�
@�
P0
H�
�
P�
p0
X�
�0
`�
�0
h�
�0
p�
�
x�
�
��
@�
��
X�0�
�8�
@@�
``�
@
h�
�	��
p��
���
���
�
��
�	��
���
���
���
0��
��
� �
�(�
p0�
�P�
�X�
``�
���
P��
P��
p��
��
��
���
@��
`��
 ���
����
@
��
�	�
��
��
��
�� �
��(�
0�0�
�8�
@�H�
��
P�
pX�
�`�
�h�
�
p�
�	��
��
��
���
���
���
��
 ���
��
��
0��
���
���
P���
��
��
���
p�
��
P��
��
 �
�(�
`0�
�8�
�H�
��
P�
PX�
P`�
ph�
0�p�
��x�
���
���
����
����
��
��
���
��
��
0���
��
��
`��
��
�
���
��
(�
��
0�
�.H�
�/h�
��
p�
�.x�
�5��
6��
��
��
`���
���
���
�8��
�9��
����
��
��
� �
0�(�
 ���
@��
��
�
 ��
��
0 �
`�(�
p�8�
��
@�
��H�
�P�
 p�
��
x�
����
���
��
��
��
@���
���
��
��
��
����
���
��
��
�
� �
�(�
���
�#
��
���
�
���
н�
�(�
�0�
�8�
�@�
`�H�
p�`�
@�h�
�p�
���
����
���
�
��
��
���
�
����
�D��
�E�
н�
��
p��
�> �
�>(�
�>8�
��
@�
�H�
�P�
�X�
`�`�
p�p�
��
x�
@���
���
���
����
��
��
����
���
�
�D��
�D��
�F��
��
��
@��
���
���
0��
 �
`X�
@h�
 x�
���
����
����
`��
����
 ��
`��
o��
o��
o��
���
��
��
��
�
 �
8�
P�
��
�
��
��
��
��
��
�
@�
��
��
���
��
�(�
���
���
���
�x�
� �
���
���
��
��
�0�
�H�
�`�
�P�
���
��
�(�
�@�
�X�
�h�
NX�
Np�
���
�p�
���
���
���
���
���
���
���
���
��
�(�
�x�
���
���
��
�H�
�x�
��
�H�
{��
{��
{��
{��
{��
;��
;�
;8�
;h�
;��
;��
;��
;8�
;@�
;��
;x�
;��
;��
;��
;��
���
���
��
��
S0�
�8�
�@�
hH�
#P�
_X�

`�
�h�
�p�
�x�
.��
{��
3��
���
i��
��
4��
x��
��
���
���
l��
��
���
zX�
Q`�
$��
J��
Y��
���
��
�0�
8�
!H�
�`�
���
���
���
� �
�X�
���
�X�
`�
)h�
�p�
C��
s��
t��
z��
}��
���
���
���
���
#��
���
���
S��
��
�0�
��
�
�
�
 �
(�
0�
8�
	@�

H�
P�
X�
`�
h�
p�
x�
��
��
��
��
��
��
��
��
��
��
��
��
 ��
"��
%��
&��
'�
(�
*�
+�
, �
-(�
/0�
08�
1@�
2H�
4P�
5X�
6`�
7h�
8p�
9x�
:��
;��
<��
=��
>��
?��
@��
A��
B��
D��
E��
F��
G��
H��
I��
J��
K�
L�
M�
O�
P �
R(�
T0�
U8�
V@�
WH�
XP�
ZX�
[`�
\h�
]p�
^x�
_��
`��
a��
b��
c��
d��
e��
f��
g��
h��
j��
k��
l��
m��
n��
p��
q�
r�
u�
v�
w �
x(�
y0�
|8�
~@�
H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
���
���
��
��
��
��
��
�
�
�
�
	 �

(�
0�
8�

@�
H�
P�
X�
`�
h�
p�
x�
��
��
��
��
��
��
��
��
 ��
!��
"��
$��
%��
&��
'��
(��
)�
*�
+�
,�
- �
.(�
/0�
08�
1@�
2H�
3P�
5X�
6`�
7h�
8p�
9x�
:��
<��
=��
>��
?��
@��
A��
B��
C��
D��
E��
F��
G��
H��
I��
K��
L�
M�
N�
O�
P �
Q(�
R0�
T8�
U@�
VH�
WP�
XX�
Y`�
Zh�
[p�
\x�
]��
^��
`��
a��
b��
c��
d��
e��
f��
g��
i��
j��
k��
m��
n��
o��
p�
q�
r�
s�
t �
u(�
v0�
w8�
y@�
|H�
}P�
~X�
`�
�h�
�p�
�x�
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
���
��
��
��
��
� �
�(�
�0�
�8�
�@�
�H�
�P�
�X�
�`�
�h�
�p�
���H��H���H��t��H����5��%�@��h���f���h����f���h����f���h���f���h���f���h���f���h���f���h�r���f���h�b���f���h	�R���f���h
�B���f���h�2���f���h�"���f���h
����f���h����f���h��f���h���f���h����f���h����f���h���f���h���f���h���f���h���f���h�r���f���h�b���f���h�R���f���h�B���f���h�2���f���h�"���f���h����f���h����f���h��f���h ���f���h!����f���h"����f���h#���f���h$���f���h%���f���h&���f���h'�r���f���h(�b���f���h)�R���f���h*�B���f���h+�2���f���h,�"���f���h-����f���h.����f���h/��f���h0���f���h1����f���h2����f���h3���f���h4���f���h5���f���h6���f���h7�r���f���h8�b���f���h9�R���f���h:�B���f���h;�2���f���h<�"���f���h=����f���h>����f���h?��f���h@���f���hA����f���hB����f���hC���f���hD���f���hE���f���hF���f���hG�r���f���hH�b���f���hI�R���f���hJ�B���f���hK�2���f���hL�"���f���hM����f���hN����f���hO��f���hP���f���hQ����f���hR����f���hS���f���hT���f���hU���f���hV���f���hW�r���f���hX�b���f���hY�R���f���hZ�B���f���h[�2���f���h\�"���f���h]����f���h^����f���h_��f���h`���f���ha����f���hb����f���hc���f���hd���f���he���f���hf���f���hg�r���f���hh�b���f���hi�R���f���hj�B���f���hk�2���f���hl�"���f���hm����f���hn����f���ho��f���hp���f���hq����f���hr����f���hs���f���ht���f���hu���f���hv���f���hw�r���f���hx�b���f���hy�R���f���hz�B���f���h{�2���f���h|�"���f���h}����f���h~����f���h��f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h���f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h���f���h����f���h�����f���h�����f���h����f���h����f���h����f���h����f���h��r���f���h��b���f���h��R���f���h��B���f���h��2���f���h��"���f���h�����f���h�����f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h����f���h����f���h����f���h���f���h���f���h���f���h���f���h��r�f���h��b�f���h��R�f���h��B�f���h��2�f���h��"�f���h���f���h���f���h����f���h���f���h���f���h���f���h��f���h��f���h��f���h��f���h�r�f���h�b�f���h	�R�f���h
�B�f���h�2�f���h�"�f���h
��f���h��f���h���f���h���f���h���f���h���f���h��f���h��f���h��f���h��f���h�r�f���h�b�f���h�R�f���h�B�f���h�2�f���h�"�f���h��f���h��f���h���f���h ���f���h!���f���h"���f���h#��f���h$��f���h%��f���h&��f���h'�r�f���h(�b�f���h)�R�f���h*�B�f���h+�2�f���h,�"�f���h-��f���h.��f���h/���f���h0���f���h1���f���h2���f���h3��f���h4��f���h5��f���h6��f���h7�r�f���h8�b�f���h9�R�f���h:�B�f���h;�2�f���h<�"�f���h=��f���h>��f���h?���f���h@���f���hA���f���hB���f���hC��f���hD��f���hE��f���hF��f���hG�r�f���hH�b�f���hI�R�f���hJ�B�f���hK�2�f���hL�"�f���hM��f���hN��f���hO���f���hP���f���hQ���f���hR���f���hS��f���hT��f���hU��f���hV��f���hW�r�f���hX�b�f���hY�R�f���hZ�B�f���h[�2�f���h\�"�f���h]��f���h^��f���h_���f���h`���f���ha���f���hb���f���hc��f���hd��f���he��f���hf��f���hg�r�f���hh�b�f���hi�R�f���hj�B�f���hk�2�f���hl�"�f���hm��f���hn��f����%F�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fD���%N�fD���%F�fD���%>�fD���%6�fD���%.�fD���%&�fD���%�fD���%�fD���%�fD���%�fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%��fD���%~�fD���%v�fD���%n�fD���%f�fD���%^�fD���%V�fDU�H����H��H�5L�H��H�2�H��H������H��H��H��H�H�E�dH+%(uH���H�5������L���I��H�]�H�{�H���D�L9�u�H�E�dH+%(uL���(����H�E�dH+%(���:���H�E�dH+%(u�&��������L��H�����H��X���H��tH��P0H�E�dH+%(uH���������H��H�(�H��H�H�E�dH+%(uH���H�5�����H����Y��T�H���H��H��H���L���F�H���H��H��H��p�I�$L��PH�����L����H�E�dH+%(uH�=y��������H�}�I��H��tH��PH�H��L��PH�E��(uH�=��tiH�5��H�}�L����H�}�H��uoH��0���H��PH��8���H��PH�}�H��tH��PH��(���H��PH�E�dH+%(u2H���W�H�=W�t%H�5N�H�=_�����u���H��P���H�!��H�=������H���k���H�}�H��tH��PH�}����H�}�H���0���H��P�%���H�5��L�������	�H��8���I��H�H�}��PH�=�����H�u�L��L��H�E�I����L���v�H��8���H��PH�E�dH+%(uH�5��H���L������/���L��H���0�H��8���H��PL�����������H����H�}���H�}�H��u8I�L���PH�H��PL��H�E��(t!I�L���P���H�}�����H��P�H�\�H�8�H�K�H�}�L��H�0����H�E�dH+%(uH�=�����b���I��H���p����t������1�H�=i�H�}�I��ttH�=Y����H�U�H�u�L��H�E�I����HL����H�E�dH+%(uRH�5b�H�3�L���k���H��H�}�H���M���H��P�B���H����H�=���d��o�������L��H����L���S��L��L��������H��8���H��H�H�}��PH�=�����H��X���L��H��H�E�I�����nL���6�H��8���H��PH�E�dH+%(uH�5{�H�L�H�������H�}�H������H��P������L��I�����H��8���H��PH��L���������I������H������H�� ���L���������H�H�=)�H�0���������1�H�=��H�M�I����H�=l���H�U�H�u�L��H�E�I����[L���#�H�E�dH+%(��H�5q�H�B�L���z�H��`���H�5���H�}�H��tH��PH��X���H��PH�}�H��tH��PI�EL��PM��t	I�L���PH�E�dH+%(u/H������H��H�}�H��tH��PH�}�H��t�H��P��Q�H�r��H�=n������/���L��H���0�L������H��p�����H��h�����L���H�E�dH+%(��H�����H��x����(u4I�>u���L��H�0�c�H���I�6H��x���H����H��X���L��uL�������鼸��H��I�<$�{�H��h���H���]���H��P�R����K��H�E�dH+%(��H�=���K�H��������H�����H����H�������#�H���H��tH��P0M��H�����H��PH����H��tH��PI�L��M��PH�����H��tH��PH��L����H������1�H��P H�E�dH+%(��H����L���T��P������V����`���I��M��t	I�L���PH��t	H�H��PL��H�����H��tH��PH������H��u<H������H��PI�$L��PH��p����Q���H��p���H��P�?������H��P�H��0������H�����H���h���H��P�]���H��p�������H��h���H���������2���H�{L�e�H�����H����H�����H��tH��PL��H������H��PL�m�M��t`I�}M�eH��tH��PL��M���?���M���kH������L��H��u�_���z���H��P�p���I���u���H��x���H��p���1�H����H��p���1�H��h���H�U�H��x���H�U�H9������H����������I������H������t
H������H��PH��x���H�����L�����������H������H�������H������H��P���H�E�dH+%(uH�=���'�H�H��L��P��������H������@���H������H�E�dH+%(u�/�����I���.��<���I�$L��P���H��p�����H����������H�E�dH+%(uH�=����]�H��h���L���n������H�������-��H����������H������������L��L���C������L��L���3������H������L��������M����������H�}����H�E�dH+%(uH�������UH��ATSH�� dH�%(H�E�1�������L�%�L���@�����1�H�}�1ɺ$H�5��H�E�H�]��'�1�H�U��H�U�E1�E1�H��H��H����H�����H�}�������1�H�UؾH�H��H���{�H�}���H�k�H�E�dH+%(uH�� L��[A\]�<�H�E�dH+%(t���H�� [A\]ÐH�}���H�}���H�E�dH+%(uH�������U�H�����H���H�5�H��H���H��H����UH�������L������H�E�dH+%(uVH���5�H�}��,�H�E�dH+%(u1H����H�}���H�}���H�E�dH+%(uH������������������I��$��L�����H�����I��$��L������H��������H����H������I�]H��t`H�{L�#H��tH��PH�߾L���p��������H���\��������L���E������H�����I�EI�}1�H���;��1�I�EI�EM��tI�}I�uI��0L9�u�F���H���J�H�����H�������ܐH�}���H�}���H�}���H�}���H�E�dH+%(uAH����H�}���H�}��y�H�E�dH+%(uH���b�H�}��Y���B���=���H��x����@�H�E�dH+%(uH���)����H�}�t
H�}�H��PL��I��uK�U���p��FH�{M�u(H��tH��P�H������H�E�dH+%(uL��������H�E�dH+%(u�����H��t	H�H��PL��I��u�������0IH�E�dH+%(u+�l�����H���j��H�E�dH+%(u
���1���,����H����H�E�dH+%(uH�������I�}L��M�}�$��I�}��L��8M�����M��u�H�E�H�}�1�H�����1�H�}�H�u�H�E�H�E�H�E�H9�t	H�����H����H������H�E�dH+%(u,L����L��M���u�H�}��l�L�m�L�5���q����G��H�}��N�H�E�dH+%(uH���7��"���XL���5��H�;H��tH��PL������XL�����I�}H��tH��PH�����L��X����H������H�}��+�L���s�H�E�dH+%(uH��������H�}���L���E�H�E�dH+%(u0H���~�H�}����L����H�E�dH+%(u
H���V��A���<��H�}��C��I�L���PH�E�dH+%(uH���#����H��������H���������H���������H������t
H������H��PH�E�dH+%(u5H������H������H���������H�E�dH+%(�����H������H���������w���H������q���L���t���Y���H������S��L�������4���H������:��H������.����H�E�dH+%(�z������H�E�dH+%(�b����l����g�����H�����H�������H�������������H���������H����������H���������H���������H��x������H�E�dH+%(u:H���u��H�E�dH+%(u�����L��H�E�dH+%(u����3���.��H�������2��H�������&���H����������L������n���H�E�dH+%(u�b�����H���N��������H�E�dH+%(uc�<���L���D��H������8��H��0������L�����H��(������H�E�dH+%(uH�����H��`����u�����^���Y��H��`����]���H��8����O�����H���H��`����8���o����H�}��)��L�����H�E�dH+%(uVH���
��H�}����H�E�dH+%(u1H������H�}�����H�}�����H�E�dH+%(uH��������������H��������H�� ������H�E�dH+%(uyH�����H������w��H����k��H��������H�E�dH+%(uH���H��H�������<�����%��H������)��H�E�dH+%(u
H�����������H�� ������H�E�dH+%(uOH������H���������H�� �������H���������H��`����5��H�E�dH+%(u
H�����������H��������H�� ����|��H�E�dH+%(uH���e���P����H��H�������M��H����������o���H�E�dH+%(u������H�E�dH+%(u������L��H����������H�� ��������H�� �������H�����������u���H������������H�� ������H�������������H��������H�� ������H���������H�����������H�� ����e����H������W���ʐH�������H��I�L���PH�������3��H��h������H�E�dH+%(uH�����H������d��L����������H�����������H����������H��������H�E�dH+%(u+H�����H�������H�E�dH+%(u
H���������{��H��������;���H�}��q��H�H��PH��p�������H�E�dH+%(u(L���E��H�}��<��H�E�dH+%(u;H���%�����H�}����H�}����H�E�dH+%(uH��������������H�5�H�����H�E�dH+%(uL����������H�;���H�E�dH+%(uL��������H�;���I�$L��PH�E�dH+%(uL���s���^��UH��ATSH�� dH�%(H�E�1��������L�%��L����������1�H�}�1ɺ$H�5C�H�E�H�]�����1�H�U��3�H�U�E1�E1�H��H��H����H���n��H�}��E����[��1�H�UؾH�H��H���"��H�}����H��H�E�dH+%(uH�� L��[A\]����H�E�dH+%(t�_��H�� [A\]�UH��AWAVAUATSH��xdH�%(H�E�1�������SL�%��L���������<E1�1ɺ#1�H�}�L�]�E1�E1�H�5X�����H�]�H�]����W�1�H�}�H��4H�5Q�)E�L�m�L�m�H�E��|��H�U��L�����1�H�}��0H�5Q�L�u��P��H�U�H�}������H�E�AWH�u�AUE1�E1�1�j1�H��Pjj����H��0H������H�}��D��H�}��;��H�}��������H�U��H��1�H�H�����H�}����H�}����H�}�����L��H����E��H����=/�H��h����\�E��H�8H���J���=��7������H�=��uH����H�=���/��H�=��uH�ή�H�=���
��L�U�L���1�1�L��L�޺!H�E�L��`���L�}�L�u�H��x���L�m�L��x�������H�E�1�1�H�U�H�5x��L��H�E����1ɺ4L��H�M�H�5`�1����AUL�M�1�jH�M�A�L��j�j����H�� L���8��H�}����H�}����H�}����1�1�H�}�H�u��-H�5e��0��1�1ɺ(H�}�H�5��H�}����E1�1ɺ!L�z�H��`���L�E�L������H�U�E1�1��~E�H�5^�L��L�M�H�U��E�)E����E1�1ɺ0H�5��L��L�U����AUL�M�1�jH�M�A�L��j�j����H�� L���?��H�}����H�}����H�}����H�}����H�}����H��x�������H�;���H�E�dH+%(t�J��H��h���H�e�[A\A]A^A_]�H�5m�H���U����{��I��H�����H�H�}��PH�= ��[��H��L��L��H��X���I������L������H�����t
H�����H��PH�E�dH+%(��H�5�H���L���&����L��H�����H�������L���A��H��8���H�5�����I�L���PH�����H��PH��H���H��tH��PH��(���H��P�	H�}��.��H��@���H��tH��PH��������H�E�dH+%(uH�����H�����H��P�^���������H���U������I�L���PH�����H��PH�����H��P�;�����H��������I���f��������1�H�U�I������H�8�.��H��8���H��L��H�E�I�������L���H��H�E�dH+%(uH�5��H�k�L����������H�������H�����L��H�����L�����H��X���H������H��P������H����H�5��H����������H�����I��H�H�}��PH������H�8����H��8���H��L��H�E�I���	���L���l��H�����H��PH�E�dH+%(uwH�5��H���L�����L��蒡H��L�����H��X���������H������������H����������9���H�}�����H�}�H��������������H�}�����H�}�����H�E�dH+%(u:H�������L��H�����H�����H��PL���G��������H�����d������1�H�M�I�����H�8���H��8���H��L��H�E�I������f�L���.��H�E�dH+%(uIH�5��H�Q�L�����H�}����H�E�dH+%(uH������H�}�����������������L��H������L���z��H��X���H���E���H��P�:�����H������H����H�5��H����������L�}�L��I��I��PI�>���H��8���H��L��H�E�I������n�L���6��I�L���PH�E�dH+%(u#H�5�H�P�L�����L��� ������������H�������L��H������I�L���PL������m�����H����H�}����H�}�����~���H�}�����p����H�;H��tH��PH�E�dH+%(uL���q���\��H�}��c��H�}�H��tH��PI�EL��PH�E�dH+%(uH���3��H�}��*�������H�}�����H�������H��0������1�H��P���H������H������L������H������I9���I�<$H��tH��P(I����H��p���L�-ϡ���H�����H����H��p���L�=�L��0������H��8���L��0����=�H����L�����*�H�����L�������G��H������L��������H������(��I�$L��PH��������H������H��tH��PH������H��P����H��P�I���H��P���H������H)�H��tH������H������H�������H��0����!��H��8������H�E�dH+%(uH���~���i��H�E�dH+%(uH�=ܙ�n����H�����=��H�����A��H��0����5���H�����'��H��0�������u���H�����
��H��0�������X���H��(����������H�5�L�����H��(���L�-���������H��(������������tH�� ������H�����H��tH��PL�-������H��(����v���H��0����h������H�����W��H��0����K�����H��0����:������H�����)������H��p����������H��0������H��������
�����H��H��p��������4���H�E�dH+%(uH�=A�����H�������H��������H�E�dH+%(uM�����H��p���L�-���~��H��(����r������H��(����a�����������������:��H�����>��1�H��P���H������H�������9���H��(���L�-4����H��p�������T���H�E�dH+%(uH�=a���������H������H�ݿ������������H��0������H�����������H��0������H�E�dH+%(uH������j��H��0����n��H�������b��H������t
H������H��PH�������?��H�E�dH+%(uH���(�����L���XI���#���I�}H��tH��PL��L���������L��L���e�H�������Y����r�����I����H��裾��L���;���H��������H������H���{�������H���+���H���e���H�E�dH+%(u!L���n��H�E�dH+%(u����E����@���H�������D��H��0����8�������H��`���uTH��P���L��H��ul�c����~�����H�}����H�}����H��H����k���H�E�dH+%(u5H������H��`���H��P�H����H��h���L��H��t<H��������H���H�}����H�}����H�E�dH+%(uH���p��軼�������V��L���H�}��S���N���H�}��E��H�E�dH+%(u H���.��H�}�H���!���H��P��������H�H��P�G����H��������H��(����j���H������H��tH��PH��x�������H��p������H��h������H��8���t
H��8���H��PH���������H��`������H��X����y��H��P����m��H��@���H��PH�E�dH+%(uH���I��H������=�����&���H�� ���uDH�����H��H��u,�g�������
�M���H��0���H��H���H���c���H�� ���H��P�L���Q�������H��������H�� ����������L���'���I�EL��P����H������������H�����H������r��H�����f������H�� ����U����H������G�����H������6���G���H������%���T���H�� ���H���D���H��P�9���H���������o���I�$L��P����0����K���Q�H�� ���H������H��P����H��������H�� ���������H�� ���������H��������H�� ����u���z���H�� ����d������L���׺�����H�� ����F���u���H�� ����5���F���H��0���褺���H����������H��������H�� �����������H�}�H��tH��PH�E�dH+%(uH������軼���L���B���H��x������H��P����*���H��h������H�E�dH+%(usH�����H�}��~����L��聹���H�}��f���H�}��]����H��x����O���L���ǹ��H��p����;���M��t�L��讹���L���1����f�������H�}�����H�}������>���H�� ���t
H�� ���H��PH�����L��H��uG�$����?���Z�H�}����H�}����H�H��L��P���H��ueH��@���L��H��t`H��������H������H�}��u�������H�}��g�������H�}��Y���H�}��P�������H�}��B����{���H�H��P��}����������H��h�������H�}��
���H��H���聸��H��@����u���H��`������H�E�dH+%(uH������M��t�I�$L��P�謺��H��h���谿���H�}�西��H�}�蜿���H�}�葿���H�}�膿���H�}��{���H�}��r����l���H�}��d����^����H��H����R���H�}��I���H�����轷��H��@����1���H�����襷��H����虷��H�E�dH+%(u6H������H�}�����H�}������H�}����H�E�dH+%(t�迹��H�}��ƾ��H�}�轾��H�E�dH+%(t���H�}�裾��I�EL��P�o���H�}�苾��H�}�肾���L���H��H����q����#���L�����H��@����X���H������̶��H��8����@���H�����贶���H������F��L���N�����H��p����
������H�}����H�}�����N���H�}�����H��H����ڽ��H�}��ѽ���t���H�}��ý���Z���H��H���貽���I����H�}�����L���K���H������H��H���H��H�����H������E��H������9��H�����H��PH��(���H��P�L���ŏH��x���H��t��H�E�dH+%(uH����������H���������H������H��tH��PI�L���P�H���������u���H������R�� L���մ���3�������� L��辴��H�E�dH+%(u\���H��@����X虴��H�����������H������H��P���H��`���H������贎������H�������.�����H��袿�����H��h���H��t�|�E1�H�}��p���L��踿��E��tL������L���������A�����H����L��赳���[�����H������H�H��PH�E�dH+%(u/L��褼��L����럾XL��蝳��M��t�I�L���P��h���L���P����p����XL���n���M������I�L���P�����荷��H��H���H��H�H�E�dH+%(uH�^�H�5��芻����H����������H������XL����M���b���I�EL��P�S���L���@��F���H��`���H���B���H��P�7���L���x��������H�}�H��tH��PH�E�dH+%(uH���l����W����H�E�dH+%(uw������H��H�}��B���H�}��9���H�}��0���H�E�dH+%(uAH������M��uBH�E�L��H��u"�R����m����!H��p����h����H����˴����H���I�$L��P�L����ɱ��H��豺���L���賱��H��蛺���L���蝱��H��腺���H��L����VH��H�5��L��腯��H��`����Y���H���H��t8H��P�0H������H����L��轻��H����!���H���������H��p���H��PH��X�����H��`������H������贽��H������t
H������H��PH�E�dH+%(uH��趹��H������H��t����莳��H�������r���L���j����d������F���H���������L��臵���-����XL���e���M���+���I�EL��P����L��L��0���A����H�=��M�n�����H����A��0M�����M9�����I��0H�5!�I�}����I�}�߷������H�����H������H�������H��P���H��L���+�H��p�������������޳��H��H��H��H�H�E�dH+%(uH���H�5���۷����H����=�����H��L�m�I��0H�5g�I�}�N���I�}�%���M9�u�L������L������H���H��tH��PA�����H�����G���H��L��茺������XL���ڮ��M������I�EL��P����H��H����Ƴ�����H��@���L�`M��tL���Y����XL��茮��H��@�����{����E���H����H��������0����XL���T�������H��H����S����
���H��������������H�}�����H�}�H��tH��PH�}�H��u[I�L���PH�E�dH+%(uKH���۶��I�L���PH�E�dH+%(u0H��軶��H�}�H�5��˫��H�}�袵���H��P�胰���~���I�L���PM��u��H�E�dH+%(��H�=ܝ�o�����H��M��u�H�}��H���I�L���PH�E�dH+%(uH���(�������H�}�����H�}�H��PH�}�H��t�H��P맾XL������L���j�됾 L��������į��I�$L��PH�E�dH+%(uH��賵����H���
蕯��L���m���H�}�H��tH��PH�E�dH+%(u)H���w����«��L�cXM��u1�H�CX�η��E1���`�A���L���ɬ���L���L����ѿ耰��H��H���H��H�H�E�dH+%(�FH�M�H�5���y���1�H�����H���8���L�{XM����1�H�CX�@���E1��~g1�H�������L��腷��L���ݹ��H�E�dH+%(uH��薴��1�H�������v�����H��H�����裹���L���9���H��(���H��tH��PL���o����H��0����(tL���H�;tXH�3H��0���H�T��o�����H��(���衵��H������տ���L���{����L�����������H���t����蓶��H��H�0�h����豭��1�H���������I�L���PH��0���H���C���H��P�8����L���V���H�}�M���z���M��t
I�EL��P0H�}�H��tH��PH�E�dH+%(uH���E����0���H�}�H��tH��PM���H�E�dH+%(u���������H���L��L������H�%H��H������L��L�����H�����H��PH��@���H��tH��PH������S����H������u����������H��8���H��tH��PH��x���H��t���H��h���H��t���H��0���H��tH��PH��X���H��t��H��(���H��uTI�L���PH�� ���H��tH��PH�����L���+���H�E�dH+%(u#H����H������1�膨���I���H��P��ī��H��謨��H�����L��蝨��L��蕨������H��p���褰���;���H��p���蓰���M���H��L���c���L���[�������H�}��m����<���H�������\���H����P���L�����H�E�dH+%(u>H���1���H�������%���H�����������H����������H��������������<���H�-�H�5v�H��H�\�H��H��H���H�;���L��踰��H�}�误��H�E�dH+%(uH��蘰��胪���H��X����葧��H�E�dH+%(uOH���j���H�}��a���H�}�H��tH��PH�}��I���H��X���H��h���H�E��2�H�E�dH+%(t�����H��X���H�HP�H�����H�E�dH+%(t���H�}�����H���������L���x���H�������̮��H���������H��8����4���H��`����(���L��L�����H��x���荮��H��p���聮��H��@������H�E�dH+%(u%H���^���H�������R���H����F����a����,���H�������0���H����$����G���H�����������6���H����������H���������L���n�������I�H�x�L���H�E�dH+%(uH���î��H���跭�����蝨��H���衭�����H���萭��H�E�dH+%(u&H���y���L���Q������H����`�������F���H�������J���H�������>���L��趶���Y���H����%����H���H��������7���H��������&���H��������H�������	����L������6����L���F���H�E�dH+%(uH��语��蚧��U�H�����H�݊H�5&�H��H��H��H����U�H��躨��H���H�5�H��H�ڊH��H��Ƭ���茨��H��H���H��H�H�E�dH+%(uH�]�H�5��艬������H�}�H����H�E�dH+%(uH���ݬ���Ȧ��UH��ATSH�� dH�%(H�E�1��P�����L�%A�L���Q�������1�1�H�5ƈ�!H�}�H�E�H�]��8���1ҿH�U��(���H�U�E1�E1�H��H�����H���֬��H�}�譪����á��1�H�UؾH�H��H��芭��H�}�����H���H�E�dH+%(uH�� L��[A\]�K���H�E�dH+%(t�ǥ��H�� [A\]�UH��AWAVAUATSH��xdH�%(H�E�1��X����SL�%I�L���A������<E1�1ɺ#1�H�}�L�]�E1�E1�H�5���#����H�]�H�]�����W�1�H�}�H��4H�5��)E�L�m�L�m�H�E����H�U��L��胬��1�H�}��0H�5��L�u�踱��H�U�H�}���V���H�E�AWH�u�AUE1�E1�1�j1�H��Pjj�1���H��0H���E���H�}�謲��H�}�裲��H�}��
����� ���H�U��H��1�H�H�����H�}��n���H�}��e���H�}��\���L��H�
�譨��H����=��H��h����\譥��H�8H��貭���=s��7�f��1���H�=a�uH���H�=L�藥��H�=�uH�6��H�=��u���L�U�L��1�1�L��L�޺!H�E�L��`���L�}�L�u�H��x���L�m�L��x����A���H�E�1�1�H�U�H�5�x�L��H�E�����1ɺ4L��H�M�H�5Ȏ1�����AUL�M�1�jH�M�A�L��j�j�L���H�� L��蠩��H�}�����H�}����H�}����1�1�H�}�H�u��-H�5͎蘯��1�1ɺ(H�}�H�5$�H�}��{���E1�1ɺ!L��H��`���L�E�L���W���H�U�E1�1��~E�H�5�{L��L�M�H�U��E�)E��%���E1�1ɺ0H�5�L��L�U�����AUL�M�1�jH�M�A�L��j�j�S���H�� L��觨��H�}�����H�}�����H�}����H�}���H�}����H��x����N���H�;����H�E�dH+%(t財��H��h���H�e�[A\A]A^A_]ÿ��H��H� �H��H�H�E�dH+%(uH�ÄH�5�����Z�����H�}�H���Z���H�E�dH+%(uH���C����.���H��x����2���H�E�dH+%(uH����������H�E�dH+%(u�X��������H�}�H�����H�}����H�E�dH+%(uH���ͦ��踠��L���˝��H��賦���H�}�詥��H�E�dH+%(u(H��蒦��H�}�艥��H�E�dH+%(u
H���r����]����X���H��8����\���H��0����P���H�E�dH+%(u$H���9���H��8����-�����H��8������������H�}�����H�E�dH+%(uH���������H��0������H�E�dH+%(uH���ϥ��躟��L��L���ߚ�������H��I�L�u�L���PH��x���H�8���H�u�L��H��H�E�I�������L���s���M��t	I�L���PH�E�dH+%(�XH�5��H���H��輤���肠��1�H�U�I���V���H�8�ܜ��H�u�L��L��H�E�I��薹�)���L�����H�E�dH+%(��H�5G�H��L���P��������H��1�H�E�������H��H�}�H��tH��PI�EL��PH�E�dH+%(��H���}�����L��I���n���M��t	I�L���PH������H�E�dH+%(uOL���A�����I����H�}�H��t�H��P돿�m���H���c���L���ݟ��H�E�dH+%(�u������I�L���P�E�����L��H���آ��L��萨��������H����H�}�蹢��H�}�谢��H�}�H��tH��PH��H���H��P�!H�}�H��tH��PH�}��z���I�L���PH��x����e���H��p����(tlH��@���H��PH��8���H��PH��P���H��PH��h���H��tH��PH��`���H��tH��PI�$L��PH�E�dH+%(uEH�����L�-=�I�}tI�uH��p���L�������n�����|���L��H�0�Q�����蚜��H��X���L��軗��H�}�蒡���O���H�}�脡���N���H��X���H�5��茗��H�E�dH+%(u1H���U���H�}��L���H�}�H����������H�}��1����s��������H��0�������H��8�������H�E�dH+%(u$H������L�����H�E�dH+%(t��ƛ��H��8����ʠ��H�E�dH+%(t��ސH�}�诠��H�}�覠��H�E�dH+%(uUH��菡��H�}�膠��H�E�dH+%(u0H���o���H�}��f���L���ޘ��H�E�dH+%(uH���G����2����-����(���L��萖��H�E�dH+%(uH����������H�E�dH+%(u�����H�E�dH+%(u�o�H�E�dH+%(u
�[�辚��蹚����H������H��趟��H�E�dH+%(uH��蟠��芚��H�}�H��t
�ouH��PL���L���H�E�dH+%(uH���e����P���H�������T���H�����H���H�E�dH+%(uCH���1���H�����%���H��h�������H��(���荗��H�E�dH+%(u
H���������ܙ��H���������H�����Ԟ���H�����ƞ��H��p���躞��H��P����.����H���������L���H����z���H��x���臞��뿐H������x���H�E�dH+%(��H���]���H�� ����Q���H�E�dH+%(u+H���:���H�� ����.���H�E�dH+%(u
H�������������H�� �������H�E�dH+%(u+H�����H�� ����ޝ��H�E�dH+%(uH���Ǟ��貘��識��記��H�����謝��H�E�dH+%(��H��葞��H�����腝��H�E�dH+%(u+H���n���H������b���H�E�dH+%(u]H���K����6���H������:���H�E�dH+%(u+H���#���H����������H�E�dH+%(ubH���������������H��������H�E�dH+%(u+H���Ν��H������œ��H�E�dH+%(uH��諝��薗��著��茗��H�����萜��H�E�dH+%(��H���u���H�� ����i���H�E�dH+%(u+H���R���H�� ����F���H�E�dH+%(u
H���/�����������H�� �������H�E�dH+%(u+H������H�� ������H�E�dH+%(uH���ߜ���ʖ���Ŗ�����H��p����ě��H�E�dH+%(u+H��譜��H��p���衛��H�E�dH+%(u
H��芜���u����p���H��p����t���H�E�dH+%(u+H���]���H��p����Q���H�E�dH+%(uXH���:����%���H��p����)���H�E�dH+%(u+H������H��p�������H�E�dH+%(uH������ڕ���Օ���Е��H�}��ך��L���o���H�E�dH+%(uH��踛��H�}�诚��H�}�覚����菕���H��8���蒚��L���
���H��0����~���H�E�dH+%(u,H���g���H��8����[���H��`����O����L���Œ����.����L���A���H��p����%���H�E�dH+%(uH������H��x�������������H�E�dH+%(u5�n���H�}�H���֙��H�}��͙��H�E�dH+%(u
H��趚��衔��蜔��H�E�dH+%(u���胔��H�}�芙��H�E�dH+%(uH���s����^���H�E�dH+%(ujH�=�h�c���H������G���L��蟏��H�����賑��H��`����'���H�� ���蛑��H�E�dH+%(uH������H�E�dH+%(t������cH������ۘ���H�=Kh�ݘ��H�����H��(���H)�H��t���H���H�����H)�H��t觐��H��8��������G���H�7wH��H��H�谕��L���h���H�wH��H��H�蒕��I�$L��PH������L���8���H��X���L���I�����o���L�e�L��H��X���I�$�PI�>�R���H��P���H��X���L��H�E�H���u���H���ؗ��I�$L��PH�E�dH+%(��H�5vH��X���H���!���H��X���L��貍����ؓ��L�e�L��H��X���I�$�PI�>転��H��P���H��X���L��H�E�H���ެ�q�H���A���I�$L��PH�E�dH+%(uH�5�uH��X���H�S�莗���������H���(��H��I�����I�$L��PL��H��X���蓜��I�EL��PI�$L��PH�E�dH+%(ucH��託����H��I��虖��I�$L��PL��H��X����@���H��h���H��tH��PH��H���H��P���H������H�����8�����H���]���H��P����@iH��x����$���H��p���H��t�H��P됾L������I�L���P�,���H�}������H��L��H��H��X����������I��I�EL�m�L��PH�=_����H��x���L��L��H��x���I������L��聕��M��t
I�EL��PH�E�dH+%(uH�5�sH���L���͕���8�����H��L�����H��X���H��P����F���H�E�dH+%(uH��������H��H�1�H��X���������L��H�����M��t
I�EL��PH���H��X����H��X���L���֊������L�e�L��I��I�$�PH�=L��ߟ��H��P���L��L��H�E�I������L���i���I�$L��PH�E�dH+%(��H�5�rH�~�L��趔��H��X���L���G�����m���L�e�L��I��I�$�PI�>�T���H��P���L��L��H�E�I���{���L���ޓ��I�$L��PH�E�dH+%(uH�5&rH���L���/���蚎��蕎����L��H��薓��I�$L��PL���D��������H������H�������������H�}��U����M���I�L���PH��@����#�����H��H��x���H��t�H��P�ٿ�f���1�H�u�I���:�H�8���H��P���L��L��H�E�H���w��
�H���ڒ��H�E�dH+%(uH�5,qH���L���5���蠍����I��H��衒��L��L���V����]�����H����H�}�����H�}��v����n����跎��I�����H�}�H�������H��P�~���H�}��>����f���H�}��0������H�}��"������L��������H�}��������H�E�dH+%(uf�D�H��������H�������6���H�������ʑ��H��p���L��H������OH��h�������H��`�������H�E�dH+%(t�x�����H���H���w���H������k���H��p�����j���1�H��p����v�����H���j���H�E�dH+%(u���H������ ����E���1�L�����H��p����0���H�E�dH+%(�f����D�H�E�dH+%(�N����,�H�E�dH+%(�6�����H�E�dH+%(������H�����蚐��H�����莐���/���H�E�dH+%(������H�E�dH+%(������H������M���1�H��p����i�����H��������������E1�L�����L��p����/���H���������1�H��p�������H��p�������1�H��p������H�}��Ϗ��H�}��Ə��H�E�dH+%(u1H��诐��H�}�規��H�}�蝏��H�E�dH+%(u-H��膐���q���H�}��x���H�E�dH+%(u
H���a����L����G����H��8����J���H��P����>���H��@����2���H������ƅ��H�E�dH+%(uH������H��P������������H��P������H��P�������H��P����Ԏ���H��P����Ǝ���H�E�dH+%(uH�=�x蹎��蔉�����a��}�t
H�}��E�����H�E�dH+%(uH���q����\���L�����H�E�dH+%(uH���M����8���H�}��?���H�}��6���H�}��-���H�E�dH+%(uZH������H�}��
���H�}�����H�E�dH+%(u,H������L����H�E�dH+%(uH���Ɏ��贈��诈��誈��H�E�dH+%(����H������薍��H������芍��H�E�dH+%(u+H���s���H�������g���H�E�dH+%(u
H���P����;����6����L���I���H�E�dH+%(u+H���"���H����������H�E�dH+%(uH��������������H���h���H�E�dH+%(uL���э��輇��H��(������H�����4���H������(���H�����蜌��H�����萌��H������脌��H����x���H��������H�E�dH+%(u9H���U���H��(����I���H�� ����=���H������1���L���ɂ���d�������H��p�������H����������H�E�dH+%(uH����H����������7����ʆ��H�������΋���H��p������H������贋������H������裋�����H������蒋�������L������H���x���H���l���H���`���H����T���H����H���H����XH����0���H�{x�IH�{p�HH�{h�HH�{PH��tH��PH�{HH��tH��PH�{@H��tH��PH�{8H��tH��PH�{0�Њ��H�{(H��tH��PH�CH��tH�HB�H����L��衋���H��0����H�� ����H���|���H���p���H���d���H����X���H����L���H����WH����4���H�{x�HH�{p�HH�{h�GH�{PH��tH��PH�{HH��tH��PH�{@H��tH��PH�{8H��tH��PH�{0�ԉ��H�{(H��tH��PH�CH��tH�HB�H����L��襊����L��见��H�}��~�H����bGL��M�����L���SH�{�GH�{�=GH�E�dH+%(u_L���F���L������L�u�L������H���H��t�H�HB�H����{���L���R��S���H�E�dH+%(u
�O����ڃ���Ճ����I���I���L���!���H�C0H�{(H�4��̀��1�H�C(H�C0H�E�dH+%(u���艃����I���������H�HX�H���Y�I���M���I���H��tH�HB�H���2�I����6�I����FI�~x豏��I�~(��QI�~�?FI�~�EL������H��0�������H��P������L���n���H�E�dH+%(uH���׈��H��(����ˇ��L���C�����謂��H��P���谇��H��(���複���L��������H��P���茇��H��0���耇���H��0����r���H��P����f����L�������a���H��P���H���Q���H��P�F���H��h���H�5^��I}��H�}�� ���I�L���PH�}�����H�E�dH+%(uH�����I�L���P���ׁ���H�����چ��H��0����Ά��H�����†��H��x����6��H���H�����H)�H��t�~��H��p�������H�E�dH+%(uH���x���L����~����Y���H��0����]���H�����Q���H����H��t�H��P�x�����H���x���H�E�dH+%(ueH�=�n�#���H��0��������4���H��0�������#���H��0�������*���L���X~���v���L���k|��H�������|�����襀��H��0���詅���G���H��0���蘅������L���+|���H��0����}������H�E�dH+%(u���L����}������B���H��0����F��������L��踎��H�E�dH+%(uH���!�������H��x���H��t�{�M��tI�(�]���L��襈���`L���|��H�����H����H���������H������ ���H�������d���H�E�dH+%(��H��虅��H�����荄��H�������}��H�������|��H��������|��H�����]���H�������(�A���H�cH�8tNH�cH������H�Z�H�0�r�������H���������H��p��������s����k�������~���觇��H�=�bH�0�x������H��H�������{��H���跃��H�E�dH+%(uRH��蠄��H��0���蔃��H��p���H��tH��PH�����H��tH��PI�L���P�z�����H���n����A~��H��p����E���������I��H���1���L���Z���H�E�dH+%(ul�k��H�E�dH+%(uB�W����G��H��H�uaH��H�H�E�dH+%(uH�aH�5aa�D����}���}����H������}��H��p���蝂������H��p���茂������H��0����{���H��p����o������H��0����^���H��p����R�������H��p����A�������H��0����0���H��p����$������H��������y��H������H�������n�����H��0�������f���H��0����܁���n���H��P����ˁ��H��0���迁�����H��h����.���H�����袁��H�E�dH+%(uH��苂��H��h���������h|��H�H��PH�E�dH+%(u7L���X���H��h����̈��H������@���H�E�dH+%(u
H���)����|���|��1�H��H���H��8���H��h�����{��H��p����'���H��H���H��8���H)�H��tH����x��H�E�dH+%(ucH�����H��x�������H��p����Z���H�E�dH+%(uH��蓁���~{��H��h��������1���E1�L��H���L��8����d����R{��H��x���趂��H��p������H�E�dH+%(��H���/���H�߾PL���/x��H��h����v��H�}�H��ubH��8����v��H��p����"���H�E�dH+%(uBH���ۀ��H���������H���������H�E�dH+%(��H��言������z����H�����H��h�������H������x��H�E�dH+%(�H���]���H�߾PL���]w��H��0����u��H��8�����u��H��H�����u��H��8���H��H���H)�H��u{H������u��H������u��H��h����Ou��H��p�������H�E�dH+%(uFH������H��p����`u��H��h����u��H�E�dH+%(uH������y���v���{����yy��H��p����M���H�E�dH+%(uH���f���Qy���Ly��H�E�dH+%(uH�=�M�Q~���,y��H��x���萀��H��p����ԁ��H�E�dH+%(u+H���
��H��p����t��H�E�dH+%(u
H����~����x����x��H��p����tt��H��h����(t��H�E�dH+%(u7H���~��H��x�������H��p����I���H�E�dH+%(u
H���~���mx���hx��H��h����t��H��p���� y��H�E�dH+%(uH���I~���4x���/x��H��h���賄�����H��h���袄��H�E�dH+%(u0H���~���w��H��h����z���H�E�dH+%(u
H����}����w����w���L�����L��蘁��L���@u��H�������|��H��8����(u��H��(����u��H��x����|��H��0����u��H�E�dH+%(u@H���m}��H��P����a|���H��P����S|���H��P����E|���H��P����7|���� w��H��0����$|���O���H��P����|���r���H��0����|��H��P����{���I���H��P�����{���8���H�E�dH+%(u�"���v����H��H������{��H�E�dH+%(u|H���|��H�E�dH+%(u�����tv��H��`���H��p���H)�H��t�ys��H��L���>~��H������q��H�������s��H������s��H������.{���i����v��H��`����{����H��X����
{��H��@�����r��H�E�dH+%(uH����{��H��8����������u��E1�L�u�L��L�m��8E��t	H�}��z��H�E�dH+%(uH���{���u��E1�L�u��H�}��z���L��L�u�E1��r��렐L���Dr��L���<r��H�E�dH+%(uH���E{��L���r�����&u��H�H��PL��L����~��L���J���H�E�dH+%(uH���{��H����}������t��@H�=�eH��eH9�tH�&XH��t	�����H�=�eH�5�eH)�H��H��?H��H�H�tH�]XH��t��fD�����=meu+UH�=�WH��tH�=�c�io���d����Ee]������w���f.�f.�f.�f���Ðf.���H��gH��H��ff.���H��H�r���f���UH��ffHn�H�HfH��AUATSH��(H��V�~�BdL�,%(L�m�I��H�E�H�3fl�)E�H��tYL�e�L��x�L��L���.����������H�]�H�{�H���Ex��L9�u�H�E�dH+%(u+H��(L��[A\A]]����{��H��H�0�v��H�3���r�����H��H�#����f�U1ɺ H�5�OH��AWAVH�����AUATSH��dH�%(H�E�1�HDž����h��H�����1ɺH�5HHDž����C��H����1ɺH�5�GHDž�����H����1ɺH�5WFHDž���~��H���1ɺH�57FHDž���~��H������1ɺH�5CKHDž�����~��H�����1ɺH�54FHDž����~���Kc����L��NL�����L�� ���H��(���L��@���L��1ɺ L��HDž����;~��1ɺL��H�5�EHDž ����~��1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E��^r��H���&w��H��(����t����l��H������H�H��H����w��H�� ����Vu��H������Ju��H������>u��H�������2u��H����&u��H�����u��H�����u��H������u��H������t��H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=IaL���ip���������L��LH�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž����&|��1ɺL��H�5oCHDž���HDž����{��1ɺ
L��H�����H�5ICHDž ���H��@�����{��1ɺH��H�� ���H�5(CHDž(���H��H����{��M��1�H��(���H�����L��0���H�����H�����H��P���H��cDž8���H��0�����s��H������u��H�������r����i��H������H�H��H������u��H��(����;s��H�� ����/s��H������#s��H������s��H�����L��H��_�ar��L�������]�����m�����ff.���H��aH��H��ff.���UH��ATL�&SH��M��t
I�$L��PH�{`L�c`H��tH�[A\]H�@��fD[A\]�ff.����l���fD��UH��ATL�&SH��M��t
I�$L��PH���L���H��t
H�[A\]H�@��[A\]Ðf.���UH��ATL�&SH��M��t
I�$L��PH���L���H��t
H�[A\]H�@��[A\]�ff.���UH��ATL�&SH��M��t
I�$L��PH�{PL�cPH��tH�[A\]H�@��fD[A\]Ðf.�UH��AWAVAUATSH��8H�}�H���
H�E�H�@H�E�H����H�E�H�@H�E�H����H�E�H�@H�E�H���JH�E�L�`M����M�l$M��t{I�]H����L�sM����M�~M��t0I��\���M��M�I�y L�M��p��H�}��`�h��M��u�I�~ M�~�p���`L���h��M����M���I�|$ I�\$�np���`L���qh��H��t3I���R���@I�} I�]�Cp���`L���Fh��H��t�I���1���L�u�I�~ I�^�p���`L���h��H��t=H�]����DH�SH�{ H�U���o���`H����g��H�U�H��t�H������L�}�I� I�_�o���`L���g��H��t	H�]��u���L�u�I�~ I�^�o���`L���g��H��t	H�]��4���L�}�I� I�_�`o���`L���cg��H��t	H�]���H��8[A\A]A^A_]�fDUH��AWAVAUATSH��dH�%(H�E�1��uH��GI��H�8t�W��u(H�E�dH+%(�MH�Ę[A\A]A^A_]�H��MH�3H����M�fL�-�nL��nL��L���l������|��I�F�@A9Fu�I�6H��X�����y��H��X���H���o����Zg��L��X���A�P8��x���?tI�L��P0�E���DMc~H�3I9�LG�H����H�
BnL��L��L��H����@w������{��L��H���I�FL��H�pL���r��L��X���A�FA�@8���'����?�y���I�F�x�(A�~��I�FIcvH��H��H��Hƅ��FH��H)�H��H����H���0D�z<�^�z<�]�z<�nH��H9��h�:<u�H9���H�zH9��v�zs�EH�JH9��b�zv�.H�JH9��K�zg�A�FDM����������f����H����p��H��H�0�Uk��H�3��H������I�F�xtA�~�H�������x	�����L��`�������L���s����L���q��A�FH�3��H���H����H�
dlL��L���iu�����z��I�F��H���L��H��X���H�P�4n��A�FL���c��A�FL�����^�x��L��X����*���H��H��H)�H���H����H��u	�9<�H��H9�A�F�����H��H)�H��H���WH���-f��xD�m�xD�~�xD�}H��H9��'�8Du�H9���H�PH9����xO��H�HH9����xC��H�HH9����xT��H�HH9����xY��H�HH9��F�xP��H�HH9����xE��H�HH9�to�x uuH�HH9�t`�xsufH�H	H9�tQ�x	vuWH�H
H9����x
guDH9�A�F����L��H����n��H��H�0��h��H�3L��H����,���H����A�F�H�����H��H��H)�H��twH��thH��uр:Du�H�����H�����H�����H�����H�����H�����H�����H���E����9<t&H���9<tH������:Dt�H���:Dt�H���H���`���H�������{d���Vv��L��X��������0m��H��H�0�h��H�3�"������gw������w��ff.�UH��AWAVAUATSH��HdH�%(H�E�1��^U��tB�=�UH�TU�~H�E�dH+%(��H�e�H��[A\A]A^A_]�f�H�UH���qd����t�1ɺL�m�HDž���H�5�@H������Tp���HDž���L������8l��f�1ɺ3H�H�����)E�H�5�@)E�)E�H��P���H�E�HDž�����o��H������L���j��1�H�� ����1H�5h@HDž ����o��H�� ���H�}���Sj��1�H��(����1H�5f@HDž(����~o��H��(���H�}���j��1�H��0����:H�5d@HDž0����Do��H��0���H�}����i��1�H��8����=H�5j@HDž8����
o��H��8���H�}���i��H��@���1ɺ:H��H�5m@HDž@�����n��H��@���H�}���hi��H��H���1ɺ=H��H�5p@HDžH����n��H��H���H�}���+i��H��P���1�1�H��E1�E1�L��AUH�����jPjj�_��H��0L���h��H�}��yo��H�}��po��H�}��go��H�}��^o��H�}��Uo��H�}��Lo��H�}��Co��H������e����\��H������H�H��I���h��H��H����f��H��@����e��H��8�����e��H��0�����e��H��(�����e��H�� �����e��H������e��H������e��H��L�%�Q�e���=RRH��Q�����ff.���a��H�8I���j���="RtI�?�d���\���f.��R��Q����H��@���H����H��H���H����H�OBH�����H�=�Q��H�=�Q��H�=�QL�5?��H�=�Q�aH��8���H�����1ɺ!H��H�����L���HDž�HDž8����Pl��H��8���1�H�����#H�5?HDž@���H�E�� l��H����1ɺ3H�5s<HDžH����k��H�M�1ҾH�����L��@���A�L��QH��H���jjj�6m��H�� L���e��H��H�����c��H��@�����c��H��8�����c��H������1ɺ
H�53HDž�����qk��H�����1ɺH�54HDž����Lk��H�����1��~����D�-�SI��H�5�2������L��L������E��E�fD�m�HDž�����j��H�p71�L�����H��L�ߺL������HDž����j��H�����1��~����I�Һ+fD�m�H�5�<L������L������E��E�HDž����pj��H�� ���1�H�5�<HDž ���I�Ӻ(L��L�������>j��H��(���1�L��I�к*HDž(���L��P���L��L�������	j��H��0���1�H�5�<HDž0���I�Ѻ(L��L��������i��H�����1�H�����HDž8����!�i��H��8���1��~�(����~����H����H�5+1HDž@����0���H��p����� ���)�`���)�P����Si��H����1ɺ1H�5�9HDžH����.i��AVL��@���1�jH��H���E1�L������j�rj��H�� L����b��H��H����*a��H��@����a��H��8����a��H��0����a��H��(����`��H�� �����`��H�������`��H�������`��H�������`��H������`��H�������`��H������1ɺH�5�/HDž����Mh��H������1ɺH�5�0HDž ����(h��H������1��~� ����+H�5:fD�m������E�E�HDž(�����g��H������1ɺ(H�5o:HDž0����g��H�����1�H�����HDž8����!�g��H��8���H�41��~�(���H��H����HDž@���H��`�����0���)�P����Ng��H����1ɺ1H�58HDžH����)g��AVL��@���1�jA��L�����H��H���j�jh��H�� L���`��H��H����"_��H��@����_��H��8����
_��H��0����^��H��(�����^��H�� �����^��H�������^��H������1ɺ
H�5.HDž����uf��H������1ɺH�5/HDž����Pf��H������1��~�����	H�5�-fD�m������E�E�HDž����f��H��81�H������H�ƺ*HDž �����e��H������1��~� ����+H�5�7fD�m������E�E�HDž(����e��H������1ɺ(H�5+8HDž0����{e��H�����1�H�����HDž8����!�Ve��H��8���1��~�(���H����H�5�,HDž@����0���H��`����)�P����
e��H����1ɺ:H�56HDžH�����d��AVL��@���1�jH��H���E1�L������j�,f��H�� L���^��H��H�����\��H��@�����\��H��8�����\��H��0����\��H��(����\��H�� ����\��H������\��H������\��H������\��H������1ɺ
H�5�+HDž����d��H������1ɺH�5�,HDž����c��H������1��~�����	H�5�+fD�m������E�E�HDž����c��H��61�H������H�ƺ*HDž ����c��H������1��~� ����+H�5�5fD�m������E�E�HDž(����Jc��H������1ɺ(H�5�5HDž0����%c��H�����1�H�����HDž8����!�c��H��8���1��~�(���H�����H�5|*HDž@����0���H��`���)�P����b��H����1ɺ=H�5�3HDžH����b��AVL��@���1�jH��H���E1�L������j��c��H�� L���*\��H��H����Z��H��@����Z��H��8����vZ��H��0����jZ��H��(����^Z��H�� ����RZ��H������FZ��H������:Z��H������.Z��H������1ɺH�5e)HDž�����a��H������1ɺH�5p*HDž����a��H������1��~�����	H�56)fD�m������E�E�HDž����`a��H��41�H������H�ƺ*HDž ����8a��H������1��~� ����+H�5+3fD�m������E�E�HDž(�����`��H������1ɺ(H�53HDž0�����`��H�����1�H�����HDž8����!�`��H��8���1��~�(���H����H�5+(HDž@����0���H��`����)�P����a`��H����1ɺ:H�5�1HDžH����<`��AVL��@���1�jH��H���E1�L������j�a��H�� L����Y��H��H����8X��H��@����,X��H��8���� X��H��0����X��H��(����X��H�� ����W��H�������W��H�������W��H�������W��H������1ɺH�5'HDž����s_��H������1ɺH�5(HDž����N_��H������1��~�����	H�5�&fD�m������E�E�HDž����
_��H�+21�H������H�ƺ*HDž �����^��H������1��~� ����+H�5�0fD�m������E�E�HDž(����^��H������1ɺ(H�5)1HDž0����y^��H�����1�H�����HDž8����!�T^��H��8���1��~�(���H�����H�5�%HDž@����0���H��`���)�P����^��H����1ɺ=H�5�/HDžH�����]��AVL��@���1�jH��H���E1�L������	j�*_��H�� L���~W��H��H�����U��H��@�����U��H��8�����U��H��0����U��H��(����U��H�� ����U��H������U��H������U��H������U��H�����T���
�L�%BL���Q��H��@���H����H��H���H����H�
v2H���������H����1ɺ!H�5R2HDž@�����\���HDžH����X��E1�E1��L����H�H��@���L���S��L���YV��H��H����-T����CK��H��@����H�H��I���W��H��@����T��L��L�-A��S���e�DH��.�H�=�A�Q����L��H�=1A��P���X��H�).�H�=�@��P����H��-�H�=�@�P�������N��ff.���Uf�H��'H��AUATSH��H��H�H�GfHn�H��h�~�fHn�H��`�Gfl�fHn�G �~�fl�G0�~�fl�G@H�>H�{PH��tH��PL�%
2f��Cx�C|����I�4$ƃ�CXCh����H����H���L�&S1�1���[��ƃ�f��H���Hǃ�ǃ�Hǃ�ƃ�Hǃ�Hǃ������P��H��0f����CH��H��pH��@H���H��xH���H���H��H���H��(HǃHǃHǃHǃ(HǃHHǃPHǃXHǃhHǃpHǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ��� �0��`������HǃHǃHǃǃ(Hǃ0H��8H��@HǃHHǃ`HǃhHǃpHǃxHǃ����PH��[A\A]]�@�=��t%H��<L��H�0�O��I�4$�V���f.�L�-�<L���L����t��X��L��H��<�O�����I����^��ff.���UH��$fHn�H��hfHn�H��`H��AVfHn�AUATI����SH��0�~7�~7�~%7fl�fl�fl�)U�)]�)e��BF��H��M���.I�$L��PfoU�fo]�f�H�7#foe�H�L��CS [0c@I�$�CL�cP�PL�-.f��Cx�C|����I�uƃ�CXCh����H����1�1�H���L�(O��W��ƃ�f��H���Hǃ�ǃ�Hǃ�ƃ�Hǃ�Hǃ������!L��H��0f��H��H��H��p��?H��@H���H��xH���H���H��H���H��(HǃHǃHǃHǃ(HǃHHǃPHǃXHǃhHǃpHǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ�Hǃ��� �0��`������HǃHǃHǃǃ(Hǃ0H��8H��@HǃHHǃ`HǃhHǃpHǃxHǃ����P�
V��M��t
I�$L��PH��0H��[A\A]A^]�fDfom�fou�f��@fo}�@H� H�H�CPk s0{@�������8��t%H��8L��H�0�J��I�u��f.�L�5q8L���G����t����L��H�^8�9K�����I���Z����I���Z���ff.���UH��AWAVAUATSH���H��P���H��PH��H���dH�<%(H�}�H��x����iH��x���H�}�H��(���H�pH�@�P@H�u�H���H�E�H��@���H��H����H�}�H��8���H����\��H��PH�}�H��tH��PH�=�7H��7�.	H��8���L�e�H��L��H��H�E��x��Z��H�]�L�-�JL��H�E�L��H��0�����@��H���
H��0���H�}�H��PH�u�H��@���H��P`H�u�H�
:H�}�L��A�H�H�@ H�M�H�M�H�E�H��X�����H�}�H��tH��PH�}��*J��H�}�H��tH��PH�E�H�M�H��h���H�XHc@H��L�<u��D��I��H��I9���H�3L��H��PH�}��!u�H���!H�5(%��@��H�}�A���I��E��t�H�u�H��X���H��H��P8H�=�6L�u��M��t�I�H�}6L��L��H�E��x��L��L���l?��H�}�H���T���H�H���PI9��N���ff.��H��P���H���H9���5H��H���H��8���H�H�E��(uH�55H���:H�}�L���M��H�}�H��tH��PH��0���H��PH�}�H��tH��PH��(���H��PH�E�dH+%(��	H��H���H�e�[A\A]A^A_]�DL��L��L�u�H�E��q>��H�}�H��tH��PM���N���H��&H�0H���&H��h���L�8H1�1���P��I�L��L��P H��&H�0H����H��H�M�H��h���L�
�GAUH�U�L�=O�(S��L��L�爅`�����=����`���YH�U�^�����*tI�L���P���fDH�)&H�0H���uH�}�L���K�����H��"�H�=]4�C��M��������f.����J��H�=�%H�0�E��H��%H�0�������J��H�=�%H�0�E��H��%H�0����H�=4H�4�H��8���H��L��H��H�E��x�
Y��H�]�L��L��H�E��<��H����H�H��L��P H��P���L���L;���^H�E�I��I�F�L���H�H��P�.���H��H���H��z���DHcBH�JH��H�H��`�����H��h����^f�L��L���<�����H��P���H���H���H9���H�H��H���H��h���H��h���H9�`����tH��h���H�=�2H��tH����H�H��2H��L��H�E��x�c���L��L��H�]�H�E��\;�����H��H����H�H��L��H�E��xtNL��L���+;��L��P���I���I���H9��=H�H�H��PI���H�H��P����L�}�L��L��H�E���:��M��t�I�H��@���L���PH�}�H��tvH�H�
�3L��H�@(H�M���H�}���tC�oD��I�L��L��H�
_3H��X���H�@(H�M���H�E��x��L��L���U:��H�}��,D��H�}�H��tH��PI�L���P�����H���H�=E1�@��H���t�������H��P���H���H9�������H��ff.�f�H��P���I��H��������H���I)�L��H��H9���T��H���HE�H���H��������H9�HG�H��H�� ���H��H�����L�����H������<��L�����H��I��H�����H�����J�t%H�H�����H��H������PH�����H�����H9���H)�H�z�H���qH�AI9��dH��1�H��H��H��H���oAH��H9�u�@��tH��H��I��I�TH��P���H��H�����H���H��H�����H)��l:��H�����H��P���H�� ���L���I�H���L���H���M����q����H�U��*��I�L���P���@��E��H�=� H�0�@��H�� H�0�c����1�����f�H���H���\>������H�5�.H���kH�=�-�$@��H�5�-����H�E�L��L����� ����x7��H�}��OA���� ���H�}�������H��tH��PI�L���PH�H��P�j���H��H�0H���|H�}�L���KE�����L���L��H��������L)�H��H��H9���O��H���HE�H��H��������H9�HG�H��H��`���H��H��h����o9��I��H��h���H�E�H�E�I�M9���L��L)�H�F�H���WI�OI9��JH��H�x1�H��H��H����AoAH��H9�u�@��tH��I��I��M�t4H��P���L��H���H��H��h���L)���7��H��`���H��P���H�}�L�L���L���H���H���n���H��P�c���H�}�H���@<��������AC��H�="H�0�>��H�H�0�\���L�H��L��f.�H�>H��H��H�x�H9�u�H��H���������L����H�H�=,�;��H�5,�q���L��L��H�H��H��H�Q�L9�u�L�L�vM������H��`���H��P���L�L���L���H����k���L����H��������H��`���H�����y9��H��������H�� ���H���"���H��P���H���H9�������1�H��P���H�H�������I���UM�����"N����H���N�����%M����I���N����I���1O����I���N����I���N�����pO����H���%M������O����H���3M����H����N���&P����H���P������P����H����L����M����H���L����I����P����I���yN��f���UH��AWAVL�5�AUATI��SH��H��dH�%(H�E�H�L�hHc@H�@H��M�|u
�Bf�I��0M9�t7I�}�
u�H���
L���4����t�I�E�xt4ff.�1�H�E�dH+%(�H�e؉�[A\A]A^A_]�I�E�8t�H��x���H�sP�![L��x���H�E�H��P���H��I�FI�v�P@H�u�H���	H�L�}�L�����L�m�M����O��I�EL��PH�}�H��tH��PH�}�H��tH��PH�=')H�
 )��H�E�H��L��H��h���H��I�E�H�E��xt-H��h���H�5<1���1��I�EL��PI�L���P���H�E�H��h���H�5�;H�E�H��`����1��H��`���H�E�H����H�=�(H����=H��t7H�H��h���H��(H��H�E��x�eH��h���H�5c;�N1��HDžX���H��X���L��H��PH���L���H��L)��zH��tMI�GH��H���H9�t=I��I�?H��tH�H��`����QH��`���I��L9�u�H��H���L���H���H�u�H�E�1�H��`���H��H��P0H�E�H��'�x�LH����1�I�?I�H��tH��PH��`���H�5}:L����a0��H�u�H��h���H��P H�5�'H���H��H�E:H�M�L��PH�U�L�
":L�kA�VE��H��h���H�5:A���0��XZE��uR���u61�H�}�H��tH��PH��X���H��PH�}�H������H��P����H��P���H�����t�L��H���L����H�1�H�=�&�6�����H�=c&t1����H���H�=G&1���5���d���H�E�H���H�������L�H��h���H�T&H��A�H�E��xtCH��h���H�59�/���n���H�E�H��h���H�5�8H�E�H��X�����.�����H�E�H��h���H�5�8H�E�H��H����.��H��H�������H;����H�H��H������H�
d%H���H��H��h�����4��H��h����#���H�V�H�=b%H��`����4��H��`�������H��H�=G%�4��H�5;%����H��`����0��H��`���H�H��L�@L9���H�B�L)�H����I�wH9���H��H�p1�H��H��H��ff.�f��AoH��H9�u�@��tH��I��H��H���L��H��H���L��`���L)��;/��H��H���L��`���H���I��L���L����Z���H���H�==$H��H����3��H��H������L��H��H�8H��H��H�~�H9�u�M��t��f����1������1����H����J����H���K����H���J����H���J������J����H���J����H���J����H���`J���fD��UH��AWAVL��h���L��p���AUL�m�ATI��L��SH��dH�4%(H�u�H���;5��H�=�%H��h�����0��H��h���L��HDžh���H��p����G3��H��p����wH����6��L��L�x����]H��p���H���5��H��h����5��H��x�{1�I�$L��H��h�����2��H��h�����L��p���L�5I�6H����H��x���L�L51�1���=��1�L��H�E�@f�E������}��#H��$I�<$I�$��4��L������}�H��x�����HcM�����H�BH�4H��H)�H��H��H����H���1fD�xx���xx���xx��H��H9��}�8xu�H��H9���H�AH9��~�ymu�H�yH9��k�yl�x���H�yH9��T�yn�a���H�yH9��=�ys�J���H�yH9��&�y:�3���H�yH9���yo����H�yH9����yo����H�yH9����yo���L���x���}�H��x�����HcM�����H�BH�4H��H)�H��H����H���5f.��xo���xo���xo��H��H9����8ou�H��H9��KH�AH9��>�you�H�yH9��+�yo�w���H�yH9���y:�`���H�yH9����ym�I���H�yH9����ye�2���H�yH9����yt����H�yH9����ya����H�yH9����y_���H�y	H9����y	s����H�y
H9�tw�y
l����H�yH9�td�yi�����H�yH9�tQ�yd�����H�y
H9�t>�y
e�����H�yH9�t+�ys�w���H�#!I�<$I�$��1��fDH��x����*�'H��h���H��tH��PL�m�H��1M��t;ff.�f�M��H��M�mI�~�'��I�~�1���8L���)��M��u�H�E�H�}�1�H���,��H�}�H�E�H�E�H�E�H�u�H9�t	H���A)��H�E�dH+%(��H�ĈL��[A\A]A^A_]�f�H�=�H�[��H���j���H�H��H��L���H��p����xtcH��0L��H����&���4����I�6H����H��0H��x���H����4��������64��L��H�0�/��I�6�)���H�E�H��0L��H�E�H��H��X����^&��H��X������H���H�=���,���'������3��L��H�0�.��I�6�\���H��H)�H��tFH��t3H�������8x������^���H�H�X���H�H�O���H�H�F����8x�:���H���8x�-���H���H��H��H)�H��tFH��t3H��������9o������=���H�H�4���H�H�+���H�H�"����9o����H���9o����H����*����H���D����H��X���I���$D����H����C����H��@����f���UH���~4�H��AVAUATSL��XH��H�H�L��PfHn�H��hfl�fHn�H��`G fHn��~�fl�G0�~�fl�G@M9�t'@I�<$H���sH�I���PM9�u�L��PM��tH��`L��L)��F&��L��0M��t-I�|$M��譼��I�} M�d$�.���`L���&��M��u�L���M��u�?�M��M�l$M�4$M��tL���2���XL����%���L����%��M��u�H���H���1�H����(��H���H��HǃHǃ�H���H9�t	H���j%��H����RH��x��QH��@�QH��8H��tH��PH���YH����-��L���L���M9�t,f�I�<$H���H�I���PM9�u�L���M��tH���L��L)���$��H���H��tH��PH���H��tH��PH����(��H���H��tH��PH���H��tH��PH���H��tH��PH�{`H��tH�H��,H�@H9����F$��H�{PH��tH��PH��
H��H��H�[A\A]A^]�9)��f�I��M9��s������fDI��M9�������fDL�%y
I�4$H��t'H���H��+��/����������c�������tH��L��H�0�*��I�4$�L�-�L���'����t��^���L��H���*��뿐ff.����UH��SH��H���+���H��H�]����.��ff.���UH��AWAVAUATSH��H��H������H������dH�%(H�E�1��5���H��H������H�H��P(�3��H������H���nH���~,��H����XH��0���H������H���)��H�=SL�����HDž���H�����L��p����>%��H�����L��HDž���H��p����'��H��p����wH���:+��L��H�߉�x����QH��p���I����)��H�������)��I�H�|�x�JH����H�����HDž���H���H��PL�����M���H������H�=�L�����H�=�M���I�H��L��L��H��p����x�-L�=n)L��L���S��1��@H������1��A��H������H�L�hHc@H�@H��M�t��ƅ���L�%��H�k�Dž���������@��tCI��0M9��I�}�G��
u�H���
H���������I�}�G��u�DH���L�������t�I�EI�U�@�����a
���Q���Q�A��������h���H������H��������1�H������H������1�H��P H�E�dH+%(�m!H�e؉�[A\A]A^A_]�DI�EE1��x��I�E�8��������@HDžp���E���lH������H���H9�����������H������H���H���H������H�M�H�E�H��h���H��p���HDžx���H�E��E��?H�E�H�E�H9�������H�����H�E�H��`����.H�5	'H������H�����H�����H9�������H�����H�=�L� ��M��t�I�$H��0���H��L��H��H��0����xu�L��@���L�=�&H��HDž@���L��L�������f��M���l���H������H�����H��PH�}���L�����1�L��H��x���H��p���L�,�H������H������M���#M�eI�L$�9fDI�4$H���H�N1�M��H��H��x���H������H9���I��I9�u�I�L$H�����H��x���H������H9�����3)��H������H����
H������H��H��H��0����x�r	L��H���W�����(��H��x���H��tdHDž����H��x���H��H��H��0����x��L��H���
��H��������x���H������H��tH��P��x������I�}��L�����M��t
I�$L��PH������H��P���f�M�vH���/
M�������I�H�L��L��H��p����x��L�=p$L��L���U���o���1�H�������B&������DL�u�L�==$L��H�E�L�����M�������I�H����L���PH����H����H��P(��t.H����1�L��H��P0H������x�eL��L�����1�H����H��tH��PI�L���PL�����M��t	I�L���PL��@���L�=�#M��t2@M��L��M�$$I�}�]��I�}�4#���8L���7��M��u�H��8���H��0���1�H���5��H��0���H��`���HDžH���HDž@���H��8���H9�t	H������H��������������f�H�=��`H��p���t=H��p���L��p���H��L��H��H��p����x��H�5�"L���{��H������H���H���H��������ƅ���Dž��������f�L��p���H������L���Z��H��p���H��p����k����������A�� ���L�����1�L��H��x���H����������H�����H�H��H�xH��tH��PH�U�H��x���H�}��L�e��)������I��H���C
H��H��<�J
L�<�L���-��L��1�H��I���m��H�u�L��`���1�H�E�H��u$�aff.�fDI�H�H�H�H��t?H��1�H�6H�AI��I��L�M��u�L�E�L�H�M�L�H�9tI��H��H��u�@H��p���H��h���H��x���H9�t	H�����L��1�L��x���I��L��p���H�������L�m�M�������fDL��H���u����$��H��M�������E1�I�L��H��H��0����x��L��H���5��M��A��M��t
I�$L��PE���E���M�mM���	���M�uL�����M9��+�����#��H��M����I�$L��H��H��0����x�B���L��H��L��@���HDž@��������;#��H��M���3����U���f.�H��@���L��H��HDž@���H�������\��H������I9�A��H������H�H��P�	�������"��H��M��������D���DL��p���H������L�sI��H�H��tBH�H�H�H�H�E�L���������DH�1��H�=��H�����H�E�H�]�H�H��tH�@1�H��x���I��H�E�H��fDL�=�L��L�u�H�E�L���b��H�����L�����H�������fDH������L�u�L��XL��PL��L)�H��H��L9��qI9�s2K��I��L9�t&I�<$H��tH��PI��M9�u�H������H��XL�}�1�L��0���L�5�
M����H������L��PI�GI�H�=�
��H��t*H�L��H��L��H��0����xtH�5�L���k��1��6�H��@���H�5bL��HDž@���H������8��H�����I�<$I�$H��tH��PM�?H��M���Q���H������H��������L�e���M��u�/fDM��I�|$M�,$H��tH��P�L�����M��u�H��x���H��p���1�H�����H��p���H��h���H�E�H�E�H��x���H9�t	H���_��H��p����u���H��p���H��P�c����H��@���L��H��HDž@���H��x����$��H��x���H9�������x���H������H�H��R����H��@���L��H��HDž@���H������������b��H��x���H���|������@1������H��H��`L��H)�H�����L)�H��H9��KH��1�L��H������p��H�����I�D�H��X�n����H����H�=�����B�1��t���f���A�������������ƅ���H������Dž��������HDžp���H�=�L�����M���
	I�$L��p���H��L��L��H��p����x��H�5�L���v��H������H�=�H�����
H�����H�=rE1�H�H��H��L��H��p����x��H�51L�����M����I�$L��P�p�H�]�L�=L��H�E�L������H������H���_���L���H�H��L��P H�5�H����H��H��p���L��L�
�AWH��x���L�� ��$��L��L��A���x��H�YH��^�PE�����H������H���H��P(����H���H������H������H��������H)�H9���1��H9�H��H��������H������HC�H�����H�H9�HG�H��H�����H�����H������1�I��H��H�<H������M9���I�U�L)�H����I�D$I9���H��1�H��H��H��H��ff.�fD�AoAH��H9�u��tH��I��I��H������L��H��`H��H�����L)����H������K��L��PI�H��XL��`�&���H�=!H���H������q��M��H������M�1��.��`��H��x���H���z����H�C��H�=�H��������H���������A���������1����H����H�=�������H�E�L��h�������I��=��H�E�dH+%(���Q��E�����H������H���H���H������H9���H�]�H�E�H��h���H��p���HDžx���H�E��E��?H�E�H�E�HDžp����x�H������L��XL��PM9��c���E1��]���1�����H����H�=?������H�E�L�=JL��H�E�L��H������� ��M���6	H������I�$H����H������L��PH�H�����H��PH������H����H��P(����H�����H����H��P(����H�����H��P(��x��������������H��0���Dž����H��������`����y������H��������H��0����x��H������L���8���ӫ��H������H���H9����1�H��H�z�H���������������9�x�����H�����������H�H�@09������g�����`����Z�����L���H��p����x��L��L���
��H������H���H���H9���HDž����H������H��H��������H���H)�H��H��H9���-��H���HE�H�rH��������H9�HF�H��H��P���H��H��X���H��h������H������H��P���I��H��X���H��H�<0t
H��PH��X���H9��d
H��H)�H�A�H���X
H�rI9��K
H��1�H��H��H��H���o2A6H��H9�u�tH��H�4�I�4�L��H�H�XH��t#H������H��H���H��H��X���H)��/��H��h���H������L�H������L���H���H�������H������H��P��H�����H��tH��PH������H��tH��PH������H��P���H�5�L��L�e�H�E����H������H�=��H����dH�=��H���5����^���H�E�dH+%(�&��	��H�=��H�� ����?H���}�H�H�g�H��L��H��p����x��L��L������J��H���H�=3����H�5'��:���L��L��H�H��H��H�J�I9�u�M��������w���f�H����H�=��8�����H������H�=��H�����L��p���H�=��H���)������H�E�L��L��H�E�H������M��H�����L��L��H�����4��H������m�H������7I��H���&H�xp�H���H�������[��H�����H�����H��H�������G��L�����jL���1�L��jH������A���H�
�����AYAZ��u2L���F��H������H��x���H������H��tH������H����1�L�����M��tCI�L$I�T$H�H9���H����8��A�D$�P�A�T$���m	H����������H���H��tH��P0H�����H��P�$�L���s��H�8H��t
�����	M�p�X� ��L��I��H��H���������H����������ƅ����H������L��H��H���������I��1�H��H��PH������A���&����A8�t9H��x���D�∅�����
��������H������D��H����������H������L�����L��H������I���<
��H������f��f�L���*��H*��^���x������������f���x���������L���*��^��X��������8��f��f�L���I*��*���x����^��X���������������f���x���H������f���*�H������H��^�f���H*��X������Y��Y��
��Y�f/��0f/�H��������s	�X��H,�I��I��I��L��H������L������H�H�@H��x���H��L��p����Ѐ�������f�H����)�p���M��t�H�����HO�I�L��H������H�E�H����H��t�H�����HO�H�H��L��L������H�E�L�����I�H��L��L���P(H����������H������H��tH���u������1���H�������B�H������H��P�0�H�=�H����H�������2	��H��H�������H���H�=��H��@�����H���(���H�H���H��L��H��p����x��L��L���A��H������L���2���͢�����H�1��H�==��������H����H�=(�H������|��H��������H�=�H����H������L��p����J��H��H�������c���L��L��H�]�H�E����H������L���������H��H���;���H�H��L��H��p����xtcL��L���K��H������H���H���H9��$H�E1�H�H��PH������H���M��t	I�L���PH�H��P���L�u�L��L��H�E�����M����I�H�����L���PH�����H����H�H�
��L��H�@(H��p�����H��p�����tL�i
��I�L��L��H�
Y�H������H�@(H��0�����H��p����x��L��L���I��H��0����
��H�����H��tH��PH������H���H���H9�tH����E1�H������I��H��������H���I)�L��H��H9��^��H���HE�H��SH��������H9�HG�H��L��H���H��H��P���H��X���H��h����J��L��H���H��H������H��X���H��P���J�tH�H��PH��X���H��P���H9��uH��H)�H�F�H���'L������H�yI9��H��H�P1�H��H��H���oAH��H9�u��tH��H������H��H��H������H�D0H��P���H������H��H���H��H��X���H)����H��P���H������H������H���H��h���H���H�H���M��t	I�L���PH���\����Q�H��x���L��L����������=���H��0������������H����������H��tH��PI�L���PH�H��P���H������H���H���H9����������H�H������H��H�����H�}��2L��L��H������I�����H������H���H���H9���L�0L��M��t�I��PH������H����L��������5���I�$E1�H�
+M�D$H�PH9���H�PH�
>L��H9����P���H������H��L�H��H��L�G�H9�u�H������H�H��H���4������H�����������H��?f/������\��H,�����L���V����\��H�%��H�=��������E1�1��_���L�����H��L��H�8H��H��H�~�H9�u�����	���������H��L���d��L�M�H�M�L9���H�E�L�E�H�pI9�tdH�9H��tCH�H��p���H������L������L�������P ��=L������L������H������H��p���u:H��I9�u�H�H��L���L���F���1�ƅ����M�pH���������L���%������H��������������O���L���I�$�#�����I��������I������������I�������I���2����I���4����H�������H�������I���(����H��H�������H���@���������H��x���I�������I��H������������H�������I���E����H������I�������H���6����H���<�����+����I�������I���=����I���Z����H���B����H�������I���|����I�������I��������I��������I���W����I���W����I���i����H���H����H���R����I���U����H�������I���>����I�������I��������H���*����I��������H��������H�����@��UH��AWAVAUATI��SH��(H���dL�,%(L�m�I��LJ�t4H�E�dH+%(��H��(L��L��[A\A]A^A_]����H����BI�EL�5��H�XHc@H�@H��L�<u*�ff.�ff.�f�H��0I9�t7H�;�	u�H���	L���M�����t�H�C�x�@ff.�I�EH�XHc@H�@H��L�<����L�5���&ff.�ff.�H��0I9����H�;�
u�H���
L��������t�L�u�H�E�L������H�C�x�H�}��G����������t9��tZ�[�����fD1�H�U�dH+%(�(H��([A\A]A^A_]�H���H�5S��7�������H�}��G�H���H�5=�����H�}���t�AƄ$��{���H�C�8A��$����H���H�5��������uEH�}��G�.���H���H�5�������uIH�}��G����H�CL��H�0������AƄ$�L��L���T��H�}��E��H���E���AƄ$�L��L��������AƄ$�L��L�����������H�����f���H��(������f.����H��`fD��H��`fD��H��`fD���������H��H�����H��@�����H��8�����H��0�����H��(�s�����H�� �c������W������H��H�C�����H��@�3�����H��8�#�����H��0������H��(������H�� �����7�����H��H�#����H��@�����H��8�����H��0������H��(������H�� ������UH��AVAUATI��SH��H��dL�,%(L�m�I���0���t<H�-�I��H��L��L���D
��H�E�dH+%(u@H��L��[A\A]A^]�DL�5��L�������t�H�f�L��H����'���������UH��AVAUATI��SH�^�H��dL�,%(L�m�I�������t;H���I��H��L��L���	��H�E�dH+%(u?H��L��[A\A]A^]�@L�5I�L������t�H���L��H�4�����������UH��AVAUATI��SH�^�H��dL�,%(L�m�I�������t;H���I��H��L��L���	��H�E�dH+%(u?H��L��[A\A]A^]�@L�5��L���Q�����t�H�&�L��H��������p�����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���O���t;H�L�I��H��L��L���c��H�E�dH+%(u?H��L��[A\A]A^]�@L�5	�L�������t�H���L��H����G����������UH��AVAUATI��SH�^�H��dL�,%(L�m�I�������t;H���I��H��L��L������H�E�dH+%(u?H��L��[A\A]A^]�@L�5i�L��������t�H���L��H�T������0�����UH��AVAUATI��SH�^�H��dL�,%(L�m�I������t;H��I��H��L��L���#��H�E�dH+%(u?H��L��[A\A]A^]�@L�5��L���q�����t�H�F�L��H�������������UH��AVAUATI��SH�^�H��dL�,%(L�m�I���o���t;H�l�I��H��L��L�����H�E�dH+%(u?H��L��[A\A]A^]�@L�5)�L��������t�H���L��H���g���������UH��SH��H��H�H��tH��PH�;H�]������@��H�=��H���t�f.�UH��H����H���H���H�y�]�f.�D��H�=T�H�M�t�f.�UH��H����H�����H�!�]�f.�D��H�=��H���t�f.�UH��H�m��H�����H���]�f.�D��H�=��H���t�f.�UH��H�=��H���X���H�q�]�f.�D��UH��ATSH��0H�u�dH�%(H�E�1�H��t,H�H�]�H��H�U�H��H�EЃxt4H�5u���H���]�E1�H�E�dH+%(uEH��0L��[A\]��H�5A���H��L�e�H�E����H��t H�E�dH+%(t�����H��H����� ��;��������@��UH��SH��H��H�H��tH��PH�;H�]�����@��UH��ATL�%O�SH��I�4$H��t"H��L�����1�1��/��H��[A\]�������L��H�0����I�4$��D��UH��ATL�%��SH��I�4$H��t"H��L�(���1�1�����H��[A\]������L��H�0�{���I�4$��D��UH��ATSH��dH�%(H�]�H�������t.H�5��H�����H�E�dH+%(u;H��H��[A\]�@L�%q�L�����t�H���L��H�\������8����UH��ATSH��dH�%(H�]�H������t.H�5�H������H�E�dH+%(u;H��H��[A\]�@L�%��L�����t�H�^�L��H�������������UH��AWAVAUATSH��xdH�%(H�E�1������tA�=r�H�����H�E�dH+%(�bH�e�H��[A\A]A^A_]��H���H������t�1�H�}�L�u��H�E�H�5��L�m������L�e�H�E����f�1�L��H��))E�L�u�H�5��H�E�H�E�����H�U��L������1ɺ4L��H�5��H�E��P���H�U�H�}�����H��H�E�E1�AVH�u�E1�1�j1�L��Pjj���H��0L������H�}��B���H�}��9���H�}�����H�U��H�H��I���{���H�}���H�}���H�}����H��L�%F��A�=��H�3��`���ff.�f��;�H�8I���@����=��tI�<$����,���f����������L�u�L�m�L���L�]�L��1ɺ!L��L��h���L�}�L��p���H�E�H�E���H�E�1�L���H�5v�H�E�H�E�����1�L��)H�5��H�E����H�E�L�M�1�PH�M�A��H��x���L��jjj��H�� L���D�H�}���H�}���H�}���H��h���1�H��p����!H�E��7���H�U�1�L��H�5��H�E�H�U������1�L��4H�5@�H�E���L�M�H�M�1�H��x���A��L��Pjjj�8���H�� L����H�}����H�}����H�}����H�}��H��,���L�=a�L�u�L��L�m��i�L������?���L��1ɺ!L��L��p���H�E��I����H�E��7���H�U�E1�E1�H��L���
�L�����H�}������H�U��H�H��H��x�����H�}���H��x���L��H����d�L��p�����������UH��AWAVAUATSH��dH�%(H�E�1������t>�=o�L�5���
H�E�dH+%(�H�e�L��[A\A]A^A_]�DH���H���!���t�1�L�u�L�m��H�5��H��p���HDžp��������L�e�HDžx������f�1�H�}�H��5)E�H�5��H�E�H�E�H�E����H�U�L����P�1ɺ/L��H�5��H�E����H�U�H�}��� �1�L��8H�5��H�E�L��x����K���H�U�H�}�����H��H�E�E1�AVH��p���E1�1�j1�L��Pjj��H��0L�����H�}��:���H�}��1���H�}��(���H��x��������H��p����H�H��I���d�H�}����H�}����H�}����H��p������H��L�%����=o�L�5������f.���H�8I��� �=A�tI�?������f.��!�������H���L�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E�����H�E�1�L��H�E�H�E�H�d�H�����1�L��5H�5O�H�E����L�U�L�M�1�ARH�M�A�H��L��H����jjj����H�� H����H�}��}�H�}��t�H�}��k�H��p���1ɺH�5��HDžp�������H���1�H��x���H�ƺHDžx������H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E���H�U�1�L��H�5;�H�E�H�U���s�1�L��/H�5Z�H�E��U�H�U�L�M�H��RL��H���A�1�jH�M��ARj���H�� H�����H�}��Q�H�}��H�H�}��?�H��x����3�H��p����'�H��X���1�H��P����!H�E����H�U�1�L��H�5o�H�E�H�U����1�L��8H�5��H�E���L�M�H�M�1�L��H���A��H��ARjjj���H�� H����H�}���H�}��w�H�}��n�H��h����������DH���L�m�H��L�e����H�
r�H��X��������1ɺ!L��H�E�H�5J����H�E���H�U�E1�E1�H��L����L���i�H�}��@���V�H�U��H�H��H��P�����H�}���H��P���H��H�-�����?����n�f.�@��UH��ATI��SH��H�>H�;�T�I�<$H�{H��tH��P[A\]���I��H�;�-�L���%�D��UH�$�H��H��H�H�@H9�uQH����8t5�G�P��W��t��DH�H�
�H�PH9�u-H�@��fD�������G��@H�}���H�}��@��f.���H�H�WH9�t9H�"��8t�G�P��W��tO�fDH�O���������f�H�H�
F�H�GH�PH9�uH�PH�
Z�H9�u=�`f����UH��H��H�}���H�}�H�
/�H�H�PH9�u
H�@��@������UH��ATSH�� dH�%(H�E�1��C���t'H�E�dH+%(��H�� H�)�[A\]�@H��H���!���t�1�H�}�L�e�!H�5��H�E��
�H�E���H�U�E1�E1�H��L�����L����H�}��}�����H�UؾH�H��I���X�H�}����H��L�%u��0��$�����f.�f.�f���UH��AWAVI��AUI��ATSH��8H�H�H�H�H�H�HcPH�FH�Hc@L�|AD����I�E��uH��8[A\A]A^A_]�I�UH��L�`M�MH�L�BH�L�hH�L�RH�HH�H�0HcFH�H���yH�DH�yI�H�t<H9�s+H9�s&1�@f�<fA�<DH��H��u��kf.��of��fd�fo�f`�fh�f��@�~AH�D(fd�fo�f`�f`�fp�Nf�f�@f�AfA�D$0f�AfA�D$2I�J	H�DNH9�sqI9�slfA�
fA�L$4fA�JfA�L$6fA�JfA�L$8fA�JfA�L$:fA�JfA�L$<fA�JfA�L$>fA�JfA�L$@fA�JfA�L$BfA�J�2D�A~f��fd�fo�f`�f`�fp�Nf�f�FfA�JfA�L$DH���I9�s@I�MH9�s71�ff.�f.�fA�TfA�TDFH��H��u��@�AoEf��fd�fo�f`�fh�f��@�A~EH�Dnfd�fo�f`�f`�fp�Nf�f�@fA�EfA�D$vfA�EfA�D$xfA�EfA�D$zfA�EfA�D$|fA�I�1I��$�fA�D$~fA�@fA��$�HcFH�H��uhI�D�x1�fA���H��8[A\A]A^A_]��H��L��H�M�L�U�L�E�L�M�H�U����H�M�L�U�L�E�L�M�H�U��N����H��H�������f.�f.�fD��UH��AWAVI��AUATI��SH��H�H�H�H�D�xA��?D�����I�E��uH��[A\A]A^A_]�f�I�$H��H�xI�L$H�L�BL�hH�H�0HcFL�$H���J�'J�T#I�}J�t#<H9�s'I9�s"1�fA�|f�<PH��H��u��kf��AoEf��fd�fo�f`�fh�f��B�A~EJ�T#(fd�fo�f`�f`�fp�Nf�f�BfA�Uf�P0fA�Uf�P2I�x	J�T#NH9�s`I9�s[fA�0f�p4fA�pf�p6fA�pf�p8fA�pf�p:fA�pf�p<fA�pf�p>fA�pf�p@fA�pf�pBfA�p�1@�A~f��fd�fo�f`�f`�fp�Nf�f�FfA�pf�pDJ��#�H9�s2H�qH9�s)1��f�4f�tPFH��H��u��yf.��of��fd�fo�f`�fh�f��B�~AJ�T#nfd�fo�f`�f`�fp�Nf�f�Bf�Qf�Pvf�Qf�Pxf�Qf�Pzf�Qf�P|I�D�z1�f�P~H��[A\A]A^A_]�DH��L��L�E�H�M����L�E�H�M�H������f.�f���UH��AWAVH��h���AUATSH��H���dL�$%(L�e�I��H�H��H�� ���I�4$H��P L��h���H���L�m�1�H��L��H��0���I�L�z�H�E���H�E�L��L��H�����L��H��A��H�=��H�E���H��t7H�H�}�H���H��H��@����H�E�H��@����xt}H�5�����E1�H�;H��tH��PH�}�L�;H��tH��PH�}��U�H��h���H��tH��PH�;�H�E�dH+%(��H���H��[A\A]A^A_]ÐH�59�L�}�H�E�����u���H����H�=��H��@������H��@�������H�}�H��tH��PH�}����H��h���H���]L��H���fIn�L��X���fHn�H�E�fIn�fHn�H��fl�fHn�H��p����0���fHn�H��fl�fHn�fl�I���}I����)����)� ���)�0���)�@����X���I���K��L��1ɺ*I��H�57�1�H��X�����L�}�1�H�E�fo����fo� ���L��`���H�u�fo�0���L��H�E�fo�@���H��`���)�p���)U�)M�)E�����L��L��L��L��`�����������L���W��H��X����K��H�E�dH+%(���#����y��1ɺ*H�5k�H�M�H�M�I��I��1�L�����fIn�H���1��0���fHn�L�� ���H�y�)E�fIn�fHn�fl�H��h���L��H�u�)E��~����fl�)E��r���L��L��L��L��h����������L���{��H�}��r��H�E�dH+%(�'���H�5��H�Q�L��������I��I�������I��I���f�����I���*��H��H���L�m�I��H��0����g�����I���L������H�}�����L����H�;H��tH��PH�E�dH+%(�����L��������H�E�dH+%(�f�����I�����I���AH�5$�H�}�L�������I�������L���^��H��X����R��L���
�����a���H��P���D��UH��AUI��ATSH��H�_H��u�1�L��H�{L�#���H�{H��tH��P� H�����M��u�I�EI�}1�I��0H�����I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]���DH��[A\A]]�D��UH��AVI��AUATSH�_H��u�HL��L�cL�+M��tL�����XL���L��H�{H��tH��P� H���0��M��u�I�FI�>1�I��0H���1��I�~�I�v�I�F�I�F�L9�t[H��A\A]A^]����[A\A]A^]����UH��AVAUI��ATSH�_H��u�WL��L�sL�#M��tL���Y���XL�����H�{H��tH��PH�{H��tH��P�(H���a��M��u�I�EI�}1�I��0H���a��I�}�I�u�I�E�I�E�L9�t[H��A\A]A^]���[A\A]A^]����UH��AVAUI��ATSH�_H��tDL�5���ff.�I��L��H�I�|$����I�|$����8L�����H��u�I�EI�}1�I��0H�����I�}�I�u�I�E�I�E�L9�t[H��A\A]A^]�X���[A\A]A^]����UH��ATSH�� H�=��dH�%(H�]�H���H��t/H�L�e�H���H��L��H�EЃxt>H�5��L������E1�ff.��H�E�dH+%(��H�� L��[A\]ÐH�]�H�5���L��H�E����H��t�H�L�`����H��H��A��I��H�H��P�DH���H�=�������8���H�H��PH�E�dH+%(t�����I����L���
��f.���U1�H��AWI��AVAUATI��SH��LcnL��H�wH�L�4�L��M����I�I��H�K0�)@H�3H����H�N01�I��H��I�t$I9�unH��I9�u֋CA9Gu�I�?H�S�w;ru�L�M�H9�tH��H����L�E��r��L�E�L�Mȅ�u�M�6M��tI��H��L��[A\A]A^A_]���8L�E�����L��H��H�I�I�L�sH�C�n��A�G1�1�H�
���L���C�d��I�T$I�t$I�|$ �M�|$(������u2M�<$L�E�L�k0M�I�H����H�H�I�H�I�D$�F���I��H���0H��H��<�H��L�M�H��H�U��.��H�U�1�H��I���m��L�M�M�T$0I�t$E1�I�|$I�D$H��t0H��1�H�6H�A0I��I��L�M����I�H�H�H�H��u�I�<$I�t$L9�tH��L�M�����L�M�L��1�M�L$I��M�<$L�k0L��M�I�H������I�D$I�\$H�H��tH�@01�I�t$I��I�D$I����M�\$L�I�L$H�8H�9tK��I���0���I��=t���I�D$0M�T$0M�����������I��M�|$(H�5E��L���-��H�{���H�߾8���L������f.�D��UH��ATSH�� H�=�dH�%(H�]�H��twH��t/H�L�e�H��H��L��H�EЃxtH�5���L�����1��"�H�5���L��H�]�H�E��}��H�E�dH+%(u+H�� H��[A\]�f�H����H�=}������l������f.�@��UH��AVI��AUATSL�gM�����I�\$ M�,$H��tf�H��H������H��u�I�D$I�|$1�H������I�|$I�D$@I�D$(I�D$ I�t$H9�t	H�����I�|$�y���PL���|��M��tM���o����I�FI�>1�H���r��I�FI�F[A\A]A^]�f���UH��AUI��ATSH��H�_H��u�K�L��H�{L�#���H�{H�C@H�sH9�t	H������H�{H��tH��P�PH������M��u�I�EI�}1�I��0H������I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�{��H��[A\A]]�f.���H���
H��H��ff.���H��
H��H��ff.���H���
H��H��ff.���H�u�
H��H��ff.���H��
H��H��ff.���H���
H��H��ff.���UH��ATSL�e�H�� H�dH�%(H�]�H��H��L��H�{�
H�U�L���H�E�H�����H�}��:��H�}��1��H�E�dH+%(u	H�� [A\]������H���J����UH��1�H��SH��H��H�5i�H���h��1�H��t	�@@9C@��H�]�����U1ɺ H�5i�H��AWAVH�����AUATSH��dH�%(H�E�1�HDž����8��H�����1ɺH�5ߠHDž������H����1ɺH�5��HDž������H����1ɺH�5'�HDž������H���1ɺH�5�HDž����H������1ɺH�5�HDž�������H�����1ɺH�5�HDž����Z��������L�d�L�����L�� ���H��(���L��@���L��1ɺ L��HDž������1ɺL��H�5�HDž �������1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E��.��H�����H��(������������H������H�H��H�����H�� ����&��H��������H��������H���������H������H��������H��������H���������H���������H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=�L���9���������L�Z�H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž������1ɺL��H�5?�HDž���HDž�������1ɺ
L��H�����H�5�HDž ���H��@������1ɺH��H�� ���H�5��HDž(���H��H����l��M��1�H��(���H�����L��0���H�����H�����H��P���H���Dž8���H��0������H���������H�������������H������H�H��H��������H��(������H�� ������H���������H���������H�����L��H�f��1��L�������]������H�H�ыPH������L�I��H�w�~��ff.���U1�H��H��SH��H��H�5��H�����1�H��tH�{@H�P@�w;rtH�]�����f��H9�t�H��H�����G��H�]�Ʌ������f.���UH��AVAUL�u�L�m�ATSH��H��0H�dL�$%(L�e�I��H��L���H���
L��L���H�E�L�����H�}����H�}����L��L��H�u�
A�A�L��H�E��m��H�}��t��I�|$pH�s@H��P8L������H�E�dH+%(u
H��0[A\A]A^]��,����H�������H�������H�����UH��AWAVAUATSH��(H�}�H����H�E�H�@H�E�H���cH�E�H�@H�E�H���.H�E�L�xM����M�gM����M�l$M��taI�]H��twH�SH����L�rM��t'I�~H�U��d���L��M�v�(�s���H�U�M��u�L�r�(H���Y���M��tdL���I�\$�(L���=���H��t&I���v���I�]�(L������H��t�I���b���I�_�(L������H��t2I���-���@H�S�(H��H�U�����H�U�H��t�H���#���H�}��(H�_���H��t	H�]�����H�}Ⱦ(H�_���H��t	H�]����H�}��(H�_�x���H��t	H�]��h���H��([A\A]A^A_]Ðf.���UH�Ԟ�~T�H��ATI��SH�H�fHn�H��xfl�fHn�H��`G fHn��~#�fl�G0�~�fl�G@H�pH��P I��$�H��tH�{���H��H�[�(躿��H��u�[L��A\]������H�����ff.����UH���~��H��ATI��SH�H�fHn�H��xfl�fHn�H��`G fHn��~c�fl�G0�~[�fl�G@H�pH��P I��$�H��tH�{���H��H�[�(���H��u�L�����[L��A\]�����H�����@��UH�ԜH��AUI��ATSH��H�_H�H��u�.�L��H�{L�#H��tH��P�H���~���M��u�I�EI�}1�I��8H���~���I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�.���fDH��[A\A]]Ðff.����UH��H��AUI��ATSH��H�_H�H��u�.�L��H�{L�#H��tH��P�H��辽��M��u�I�EI�}1�H������I�}I�E8I�E I�EI�uH9�t	H���x���H��L��H[A\A]]�a������UH���H��AUI��ATSH��H�H�@�)��I�]H�>�I�EH��u�*L��H�{L�#H��tH��P�H�����M��u�I�EI�}1�I��8H�����I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]鮼��fDH��[A\A]]Ðff.����UH�ԚH��AUI��ATSH��H�H�@�Y��I�]H�n�I�EH��u�*L��H�{L�#H��tH��P�H���.���M��u�I�EI�}1�I��8H���.���I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�޻��fDH��[A\A]]Ðff.����UH��H��AUI��ATSH��H�H�@���I�]H���I�EH��u�*L��H�{L�#H��tH��P�H���^���M��u�I�EI�}1�H���b���I�}I�E8I�E I�EI�uH9�t	H������H��L��H[A\A]]�������UH�D�H��AUI��ATSH��H�H�@����I�]H�ޘI�EH��u�*L��H�{L�#H��tH��P�H��螺��M��u�I�EI�}1�H��袽��I�}I�E8I�E I�EI�uH9�t	H���X���H��L��H[A\A]]�A����UH��AWI��AVAUL��@���ATL��I���SH��dH�%(H�]�H�Ӻ
萻���E�H�M�tD���~���I�E��u.H�E�dH+%(��H�ĨL��[A\A]A^A_]�fD�-�@bgK�$f�HH�HM��u3HcE�H��.f�H�{L�$H��u>I�D�p1�fB�D#�DH��H��H��8����Ƹ��H��8���H���f.�L��L��襸�������ff.�UH��AWE1�AVAUI��ATSH��H��H�?��H�[H�����赹��H�{H�I��H�xH��tH��PH�C1�I�MM�uI�FI�uI�EH��L�#M��u�`M�$$M��tWI�޿�Z���I�|$H�H��H�xH��tH��PI�D$1�I�H�CI�uI�EH��H�8u�L�0M�$$M��u�H��[A\A]A^A_]ÐH�WH��t2H��H��<u7L�$�L���ݸ��L��1�H��I������M�}���H�G0L�0��H��=t�+����v�����H���'����H���P����H���[��f���UH���
H��AWAVL�u�AUL��I��ATL�e�SL��H��XdH�%(H�]�H��H�E����H�s�
H�E�H�����H�}�L�}��:���H�}��1���H�U�H�E�H��H�U�虼��L��H�E�艼��A�E@H�U��tH���u���A�E@����H�E�HcPH�E�Hc@L�|D���l���H�E�I��E����H�M�L���H��H�v�
H�E��m��H�}�蔾��L��H��H�b�
A�A�L��H�E��Z���H�}��a���L���ٶ��H�}��P���H�}��G���H�}��>���H�E�dH+%(��H��X[A\A]A^A_]�@L��萻���"���H�u�H�xHcFH�H��u3H�u�H�� f�H�yHcFH�H��u21�E�}f�D����f�H��H�U��3���H�U�H���f.�H��H�M�H�U�����L�m�H�M�H�U���l�����H�������H��������H������U1ɺ)H�5��H��AWAVH��x���AUATSH��dH�%(H�E�1�HDžx�������H�E�������	�=
�H����mH�1�H�}��<L�e�H�5�H�E�H�E�H�]�H�E��g��H�U��L������H��H�E�E1�ATH��x���E1�1�j1�H��Pjj�ܵ��H��0H����H�}��W��H�}�辻����Բ��H��x����H�H��H��薾��H�}�����H��x�������H�E�dH+%(�VH�e�H��[A\A]A^A_]�@H���H��艷�������1�H�}�L�u��%H�E�H�5c�L�m��j���L�e�H�E��T���f�1�L��H��5)E�L�u�H�5L�H�E�H�E��#��H�U��L���½��1ɺ2L��H�5Q�H�E�����H�U�H�}��蒽��H��H�E�E1�AVH�u�E1�1�j1�L��Pjj�k���H��0L������H�}�����H�}�����H�}��D�����Z���H�U��H�H��I������H�}�覺��H�}�蝺��H�}�蔺��H��L�%2�����=��H�����������H�8I�����=y�tI�<$�~����l���f��Y��ʦ����L�u�L�m�L�S�L�]�L��1ɺ!L��L��X���L�}�L��`���H�E�H�E����H�E�1�L���H�5(�H�E�H�E��}���1�L��5H�5��H�E��_���H�E�L�M�1�PH�M�A�
�H��h���L��jjj���H�� L����H�}��[���H�}��R���H�}��I���H��X���1�H��`����!H�E����H�U�1�L��H�5��H�E�H�U�����1�L��2H�5�H�E����L�M�H�M�1�H��h���A��L��Pjjj���H�� L���<���H�}�裸��H�}�蚸��H�}�葸��H�}�����,���L�=�L�u�L��L�m�����L������?���L��1ɺ!L��L��`���H�E�����H�E����H�U�E1�E1�H��L��轶��L��蕹��H�}��l����肮��H�U��H�H��H��h����C���H�}��ʷ��H��h���L��H�Y�����L��`������蓲����H���K���UH��AWAVAUATSH��dH�%(H�E�1������tB�=�L�5���H�E�dH+%(�H�e�L��[A\A]A^A_]�f�H�Q�H�������t�1�L�u�L�m��H�5W�H��p���HDžp���蠾���L�e�HDžx���臺��f�1�H�}�H��5)E�H�5*�H�E�H�E�H�E��Q���H�U�L�����1ɺ/L��H�5'�H�E��"���H�U�H�}�����1�L��8H�5'�H�E�L��x������H�U�H�}��艸��H��H�E�E1�AVH��p���E1�1�j1�L��Pjj�_���H��0L���s���H�}��ھ��H�}��Ѿ��H�}��Ⱦ��H��x����,�����B���H��p����H�H��I������H�}�苵��H�}�肵��H�}��y���H��p����m���H��L�%��辴���=�L�5�������f.�軱��H�8I������=�tI�?�O�������f.����������H�+�L�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E��i���H�E�1�L��H�E�H�E�H��H���@���1�L��5H�5�H�E��"���L�U�L�M�1�ARH�M�A�H��L��H����jjj�b���H�� H��趵��H�}�����H�}�����H�}�����H��p���1ɺH�5\�HDžp���覻��H�[�1�H��x���H�ƺHDžx����~���H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E��9���H�U�1�L��H�5ۃH�E�H�U������1�L��/H�5��H�E����H�U�L�M�H��RL��H���A�1�jH�M��ARj�6���H�� H��芴��H�}���H�}����H�}��߲��H��x����Ӳ��H��p����Dz��H��X���1�H��P����!H�E��e���H�U�1�L��H�5�H�E�H�U���?���1�L��8H�5V�H�E��!���L�M�H�M�1�L��H���A��H��ARjjj�e���H�� H��蹳��H�}�� ���H�}�����H�}�����H��h����r�������DH���L�m�H��L�e�葭��H�
�H��X��������1ɺ!L��H�E�H�5��m����H�E��[���H�U�E1�E1�H��L���1���L���	���H�}��������H�U��H�H��H��P���跳��H�}��>���H��P���H��H�͝舰���?�������ff.�UH��AWAVAUATSH��HdH�%(H�E�1��.���tB�=��H�$��~H�E�dH+%(��H�e�H��[A\A]A^A_]�f�H��H���A�����t�1ɺL�m�HDž���H�5x�H������$����HDž���L���������f�1ɺ3H�H�����)E�H�5P�)E�)E�H��P���H�E�HDž������H������L���]���1�H�� ����1H�58�HDž ���舷��H�� ���H�}���#���1�H��(����1H�56�HDž(����N���H��(���H�}�����1�H��0����:H�54�HDž0�������H��0���H�}��诱��1�H��8����=H�5:�HDž8����ڶ��H��8���H�}���u���H��@���1ɺ:H��H�5=�HDž@���蝶��H��@���H�}���8���H��H���1ɺ=H��H�5@�HDžH����`���H��H���H�}�����H��P���1�1�H��E1�E1�L��AUH�����jPjj�Χ��H��0L�����H�}��I���H�}��@���H�}��7���H�}��.���H�}��%���H�}�����H�}�����H������w����荤��H������H�H��I���O���H��H����ӭ��H��@����ǭ��H��8���軭��H��0���语��H��(���裭��H�� ���藭��H�����苭��H���������H��L�%ř�Ь���="�H��������ff.���˩��H�8I���б���=�tI�?�_����\���f.��ҙ�������H��@���H����H��H���H����H��H�����H�=����H�=����H�=��L�5���H�=ϙ�aH��8���H�����1ɺ!H��H�����L���HDž�HDž8���� ���H��8���1�H�����#H�5ԆHDž@���H�E���H����1ɺ3H�5C�HDžH����˳��H�M�1ҾH�����L��@���A�L��QH��H���jjj����H�� L���Z���H��H���辫��H��@���貫��H��8���覫��H������1ɺ
H�5�zHDž�����A���H�����1ɺH�5�{HDž�������H�����1��~����D�-g�I��H�5�z������L��L������E��E�fD�m�HDž����ò��H�@1�L�����H��L�ߺL������HDž���葲��H�����1��~����I�Һ+fD�m�H�5|�L������L������E��E�HDž����@���H�� ���1�H�5p�HDž ���I�Ӻ(L��L����������H��(���1�L��I�к*HDž(���L��P���L��L�������ٱ��H��0���1�H�5i�HDž0���I�Ѻ(L��L������觱��H�����1�H�����HDž8����!肱��H��8���1��~�(����~����H����H�5�xHDž@����0���H��p����� ���)�`���)�P����#���H����1ɺ1H�5��HDžH������AVL��@���1�jH��H���E1�L������j�B���H�� L��薪��H��H������H��@������H��8������H��0����֨��H��(����ʨ��H�� ���辨��H�����貨��H�����覨��H�����蚨��H�����莨��H������肨��H������1ɺH�5�wHDž�������H������1ɺH�5�xHDž ������H������1��~� ����+H�5�fD�m������E�E�HDž(���贯��H������1ɺ(H�5?�HDž0���華��H�����1�H�����HDž8����!�j���H��8���H��{1��~�(���H��H����HDž@���H��`�����0���)�P�������H����1ɺ1H�5�HDžH������AVL��@���1�jA��L�����H��H���j�:���H�� L��莨��H��H�����H��@������H��8����ڦ��H��0����Φ��H��(����¦��H�� ���趦��H�����誦��H������1ɺ
H�5�uHDž����E���H������1ɺH�5�vHDž���� ���H������1��~�����	H�5�ufD�m������E�E�HDž����ܭ��H�̀1�H������H�ƺ*HDž ���购��H������1��~� ����+H�5�fD�m������E�E�HDž(����p���H������1ɺ(H�5�HDž0����K���H�����1�H�����HDž8����!�&���H��8���1��~�(���H����H�5�tHDž@����0���H��`����)�P����ݬ��H����1ɺ:H�5�}HDžH���踬��AVL��@���1�jH��H���E1�L������j���H�� L���P���H��H���贤��H��@���訤��H��8���蜤��H��0���萤��H��(���脤��H�� ����x���H������l���H������`���H������T���H������1ɺ
H�5�sHDž������H������1ɺH�5�tHDž����ʫ��H������1��~�����	H�5\sfD�m������E�E�HDž���膫��H�w~1�H������H�ƺ*HDž ����^���H������1��~� ����+H�5Q}fD�m������E�E�HDž(�������H������1ɺ(H�5�}HDž0������H�����1�H�����HDž8����!�Ъ��H��8���1��~�(���H�����H�5LrHDž@����0���H��`���)�P���自��H����1ɺ=H�5�{HDžH����b���AVL��@���1�jH��H���E1�L������j覫��H�� L�����H��H����^���H��@����R���H��8����F���H��0����:���H��(����.���H�� ����"���H���������H������
���H��������H������1ɺH�55qHDž���虩��H������1ɺH�5@rHDž����t���H������1��~�����	H�5qfD�m������E�E�HDž����0���H�Q|1�H������H�ƺ*HDž �������H������1��~� ����+H�5�zfD�m������E�E�HDž(����Ĩ��H������1ɺ(H�5O{HDž0���蟨��H�����1�H�����HDž8����!�z���H��8���1��~�(���H����H�5�oHDž@����0���H��`����)�P����1���H����1ɺ:H�5�yHDžH�������AVL��@���1�jH��H���E1�L������j�P���H�� L��褡��H��H�������H��@������H��8�����H��0������H��(����؟��H�� ����̟��H��������H�����负��H�����訟��H������1ɺH�5�nHDž����C���H������1ɺH�5�oHDž�������H������1��~�����	H�5�nfD�m������E�E�HDž����ڦ��H��y1�H������H�ƺ*HDž ���貦��H������1��~� ����+H�5�xfD�m������E�E�HDž(����n���H������1ɺ(H�5�xHDž0����I���H�����1�H�����HDž8����!�$���H��8���1��~�(���H�����H�5�mHDž@����0���H��`���)�P����ۥ��H����1ɺ=H�5�wHDžH���趥��AVL��@���1�jH��H���E1�L������	j���H�� L���N���H��H���貝��H��@���覝��H��8���蚝��H��0���莝��H��(���肝��H�� ����v���H������j���H������^���H������R���H���趜���
�L�%щL�����H��@���H����H��H���H����H�
FzH���������H����1ɺ!H�5"zHDž@���蚤���HDžH���腠��E1�E1��L����H�H��@���L���Q���L���)���H��H�����������H��@����H�H��I���՞��H��@����Y���L��L�-�誛���e�DH��v�H�=U��ؘ����L��H�=�輘���X��H��u�H�=��蘘����H��u�H�=���x������讖��ff.�UH��AWAVAUI��ATSH��XH�u�dH�%(H�E�1�H��VL�&1�L��H�wH�L�4�H�U�H�U�M���^I�H�K�-�H�3H���HH�N1�I��H��I�uH�E�H9��+H��L9�u�H�M�H�CL�9H�E�L�}�L9����蹞��H��M����H�u�L�}�L��H��H�E��x��H�5����L�������v���H�}�H��tRH�E�H�u�L��H��H�E��x��H�5����L��蛐��H�}�A��H�}�H��tH��PE���
���I�>tX@H�E�dH+%(�5H��X[A\A]A^A_]�fDL�gM����ff.�H�E�1�L� L��I�uH�U���Ғ��H�H��H�E�H�8H�{H��tH��PI�UI�uI�} �M�u(������I��H���YH��H��<�`H��H��H�U��b���H�U�1�H��I��衔��M�M0I�uI�EE1�I�}H��t0H��1�H�6H�AI��I��L�M����I�H�H�H�H��u�I�}I�uL9�t	H������L��1�M�}I��M�uH�U��bfD�覜��H��H����H�L�}�H��L���H�E��x��H�5��L���Ύ����d���H��M���H���1�I�L��L���H�E��x��H�5����L��莎��H��A��H��t	H�H��PE������M�$$M���3���H�E�M�t$H�I9��>�������f�H�5I���L��H�]�H�E��%����軛��H��M���Y���H��A���|���H�E�H�5���L��H�E�H�E����H�E�H9�A��H���F���H�H��R�8����M�uH�E�L�cI��H�H����H�H�H�H�I�E����fDM�UL�I�MH�8H�9tK��I���������H��M������L�}�����H�E�H�5E���L��H�E�H�E��!����跚��H�}�H���E����i���@I�EI�]H�H��tH�@1�I�uI��I�EH��F���fDH�E�L��H�5Җ��H�E�H�E�豌��H�M�H�E�H9�A��H������H�H��R�����!���H�}�H�������L�}����M�M0I�E0M������I��=tH�E�dH+%(u�|���H�E�dH+%(u踍������������I��I���Ƴ����I�������I��I���)�����H��I���+�����H��I��顳����H���9����@��UH���A�E1�H��AWAVL�u�AUI��L��ATSH��H��xdL�$%(L�e�I��1�H�E��ß��H�}��J���H��kL��H���~]dH�H�ǃxfHn�H��xfl�fHn�H��`Hǃ�C fHn��~ dH��xH���fl�H���C0�~dHǃ�fl�C@�C���H�{pH��PL��L������H��L�u�H��H�E�臏��L�}�L��H�E���I�GA�wH��H��x���茕��H�}�A���.
L�e�M��u� M�$$M���E9l$u�I�T$A�w;ru�L9�tH��x���H�����'�����u�L�����H�}���I�D$�x��
1���fH�=D��ϓ��H��H��H�E�輎��L�}�L��H�E��(���I�GA�wH��H��x������H�}�A���cL�e�M��u��
DM�$$M����
E9l$u�I�T$A�w;ru�L9�tH��x���H�����W�����u�L���+���H�}��"���I�D$�x�����gH�=Q����H�%�H��H�E����L�}�L��H�E��U���I�GA�wH��H��x������H�}�A����L�e�M��u�	f�M�$$M����	E9l$u�I�T$A�w;ru�L9�tH��x���H����臍����u�L���[���H�}��R���H�={��F���I�D$�x��ƃh��f�ƃjH��H��H�E��	���L�}�L��H�E��u���I�GA�wH��H��x�������H�}�A����L�e�M��u�b	f�M�$$M���S	E9l$u�I�T$A�w;ru�L9�tH��x���H����觌����u�L���{���H�}��r���I�D$�x�;���iH�=!��L���H�ՄH��H�E��9���L�m�L��H�E�襎��M�uA�uL���E���H�}�A����L�e�M��u�yf�M�$$M���cE9|$u�I�T$A�u;ru�L9�tH����L���ۋ����u�L��诐��H�}�覐��I�D$�x�s1���kH�=�胐����L��������0I������H�ƹL��L�������!L������� I���ԓ��H�ƹ
L��L�������L���谓����
I��裓��H�ƹL��L��谔����
L���������
I���r���H�ƹL��L������H�]�L�-��H��t>ff.�@I��L��H�I�|$譅��I�|$胏���8L��膇��H��u�H�E�H�}�1�H��芊��H�}�H�E�H�E�H�E�H�u�H9�t	H���@���H�E�dH+%(��H��x[A\A]A^A_]�fDLc�1�L��H�u�H�E�L��I��M���hM�!I�L$0�/fDI�4$H���KH�N01�M��H��H�u�I9��2I��L9�u�E;|$u�I�D$A�u;pu�L��p���L��x���I9�t2H�P��L��L��h���草��L��h���L��x�����L��p����x���L��M�!�E���H�}��<���M�������I�D$�x�����I�D$ �8������@Lc�1�L��H�u�H�E�L��I��M����M�!I�L$0�/fDI�4$H���sH�N01�M��H��H�u�I9��ZI��I9�u�E;l$u�I�D$A�w;pu�L��h���L��p���I9�t6H��x���H�P��L��`���葈��L��`���L��p�����L��h����t���L��M�!�I���H�}��@���M������I�D$�x����I�D$ �8������H���H��H�E����L�}�L��H�E��i���I�GA�wH��H��x�������H�}�A����L�e�M��u�VfDM�$$M���CE9l$u�I�D$A�w;pu�L9�tH��x���H�P��藇����u�L���k���H�}��b���I�D$�x�	���jH�=1��<��������Lc�1�L��H�u�H�E�L��I��M���M�!I�L$0�/fDI�4$H����H�N01�M��H��H�u�I9���I��I9�u�E;l$u�I�D$A�w;pu�L��h���L��p���I9�t6H��x���H�P��L��`���豆��L��`���L��p�����L��h����t���L��M�!�i���H�}��`���H�=��T���M���hI�D$�x����I�D$ �8��h����Lc�1�L��H�u�H�E�L��I��M���`M�!I�L$0�/fDI�4$H���CH�N01�M��H��H�u�I9��*I��I9�u�E;l$u�I�D$A�w;pu�L��h���L��p���I9�t6H��x���H�P��L��`���衅��L��`���L��p�����L��h����t���L��M�!�Y���H�}��P���M���4���I�D$�x�%���I�D$ �8�������Lc�1�L��H�u�H�E�L��I��M����M�!I�L$0�/fDI�4$H����H�N01�M��H��H�u�I9���I��I9�u�E;l$u�I�D$A�w;pu�L��h���L��p���I9�t6H��x���H�P��L��`���衄��L��`���L��p�����L��h����t���L��M�!�Y���H�}��P���M���d���I�D$�x�U���I�D$ �8���G����L������H�}������'���f.�L�����H�}����H�=}���L��L�%i�
H�E��L���1�L��L���ߎ����L����h讈��H�}�襈���p���L��蘈��H�}�菈���w���f.�L���x���H�}��o�������f.�L���X���H�}��O������f.�Lc�1�L��H�u�H�E�L��I��M����M�!I�L$0�/fDI�4$H����H�N01�M��H��H�u�I9���I��I9�u�E;l$u�I�D$A�w;pu�L��h���L��p���I9�t6H��x���H�P��L��`������L��`���L��p�����L��h����t���L��M�!�y���H�}��p���M����������f�L���X���H�}��O������I�D$ �8������%�����I���~�����I��鱦����H��麦����I��酦���@��f��@��UH��AUI��ATSH��H��H�>H�;H��tH��P�X���L��H��I���0���L�cH��[A\A]]���I���p�����I���W�������UH��AUI��ATSH��H��H�>I�}H��tH��PL�cM��t�X�$��H�sH��I��赅��M�eH��[A\A]]���H��������H������ff.���UH��AUATSH��H��H9�tlL�.I��M��t
I�EL��PH�;L�+H��tH��PM�l$M��t�X�~��I�t$H��I������L�cL�kM��tL���X����XL���}��H��H��[A\A]]���H���w������UH��ATS1�H��pdL�$%(L�e�L�fL�����H��t H�E�dH+%(unH��pH��[A\]�D1�L��覑��H��tыP��ut��xu�H�x�k�������L�e�H�pL�����L���H���H�}�������L���e���������H���Τ��f���UH��AUATSH��xL�bdH�%(H�]�H�^H���"���H��t$1�H�U�dH+%(��H��x[A\A]]�@L����H��u�1�H���А��H��t{�P��utC��xunH�x蕅����1�L��詐��H��t\�P��ut\��xuOH�x�n���A��A9����v���L��p���H�pL���݆��L���E���H�}�������L���b����1��@E1��L��p���H�pL��蝆��L������H�}�A���م��L���!�������W~����H��鵣����H���ѣ���ff.���UH��AWAVAUATSH��HL���L+��dL�$%(L�e�I��I��A�����tA�|$x�PA�D$|1�H�M�1�L�m�H�M�E��y+��DH�5�L����x��H��A�D$|A9��������I��$�L�<�M��t��x��L��L��H��I��H�E��xu�L�}�H�5����L��H�E��ux��M��t�I�H�
FqL��L��H�M�H�U��P(H�E�H�5Z���L��xtY�<x��H�}�����I�H��L���PA�D$|A9��Q���������H�U�dH+%(uEH��H[A\A]A^A_]�@H�E��8t���w��H�}�豁��A�\$|�f.�A�D$|����|����H���9����@��UH��AWAVAUATI��SH��X������H�=�o������������D������dH�%(H�E�H�G`H�@pH�������H�������$H������H�����H�/oH��H��H������x�VH��H�5����v��I�|$`HDž����H���
L���H�پ��H�����L��H���
H����d���H���舀��H������|���I�|$`��ftDH��
H��L�����H�����H��
H�������H����6���H������*���L������HDž����L���}��A��$���
A��$��bH�E��������
H��H�����������������
�E�H��0���H��H���������HcUĉ�t���H�H�L��H�������1x��H������I�ƅ���H������L�������l��������H�������
腄���������
H�������E��k���HcUĉ�t���H�L�tE����I�|$`L��H�ھ��H�J�
H������Ή��H�������~��I�|$`H��L��H���
���H�����H�ݓ
H���葉��H����~��H������~��I�|$`H��L��H�7�
���H�����H�D�
H����H���H����l~��H������`~��H��M�l$`1�A�.�1�H����nA�HDž���jjj�w��H�����H�� H���[���H���L��H��L��H�f�
���H�����赈��H�������}��H�����}��I�|$`H��L��H�ˑ
���H�����H�ؑ
H����l���H����}��H������}��I�|$`H�ھ��H�`�
H�
�HH������-���H������Q}��I�|$`H��L��H���
���H�����H���
H�����H����}��H������}��I�|$`H��L��H��
���H�����H�3�
H���觇��H�����|��H������|��I�|$`H��L��H�ݎ
���H�����H�J�
H����^���H����|��H������v|��I�|$`H��L��H��
���H�����H�a�
H�������H����9|��H������-|��I�|$`H��L��H�+�
���H�����H���
H����̆��H�����{��H�������{��I�|$`H��L��H�B�
���H�����H���
H���胆��H����{��H������{��I�|$`H��L��H���
���H�����H�Ƌ
H����:���H����^{��H������R{����(t��I��I�t$`H�ٺ��H�Q�
A�A�L��H������{��M�l$XH������{��A��$��I�|$`H��L�����H�ϊ
H�����H��
H���蕅��H����z��H������z��H�v�
I�t$`A�H�����H�����A�H�ٺ��H��H�������`z��H�����M��$��\z��1ɺL��H�5PK����H�
��
I�|$`H��H��������L����H������z��H�5`�
I�|$`H��H���
H��������H���L��趄��H�����y��H�������y��I�t$`H��L��L�
܈
A����L�����A��y��H������y���������
L������M�l$`L���~��L��L������H�߉‰E�L�����HDž����y��H��L��L�A�
L��L��������H������y��H������y���������
H������M�l$`�&~��H������H��HDž����‰E��7y��L��L��H�
��
H�����H��膃��H������x��H������x���������
H������M�l$`�}��H������H��HDž����‰E���x��H��L��H�э
L��H���������H������6x��H������*x���������
H������M�l$`�>}��H������H��HDž����‰E��Ox��H��L��H�==�
H�����L��螂��H�����L�-��
�w��H������w��I�t$`L��H��A�A����L������ww��H������{w��H����o��L����o��I�|$`H��L��L��
���L�����L��
L����
���H����.w��H������"w��I�|$`H��L��L�`�
L���
���L�����L������H�����v��H�������v��I�t$`H��L��L�
�
A����L�����A��v��H������v��Hc�����Lc�����M�\$`H������H��Ii��MbL��Hi��Mb��L��������D������H��%I��H��&A��)�I��%A)�A)�D޺
D������D�������W{��H������H��HDž����‰E��hv��H��L��H������L���
L�����賀��H�������u��H�������u��������M�\$`Ii��MbD������L�������
��L������H��&L��)�D��z��L��H��HDž����‰E�L��������u��H��L��H������L�H�
L���������H������8u��H������,u��������M�l$`D������H������D)҉ֺ
�4z��H������H��HDž����‰E��Eu��H�پ��L��H�S�
H�����L�����H������t��H������t���������
D������H������M�l$`D)ɉ��y��H������H��HDž����‰E���t��L��L��H�
��
H�����H�����H�����L�-�
�1t��H������%t��I�t$`L��H��A�A����L�������s��H�������s��H���il��L���al��H�������Ul��H��������s��H������H��tH��PH�E�dH+%(�_H�e�[A\A]A^A_]�D1ɺH�5�DL���:{��H�E�H������H��0���H���������@H������L��DpD�����H������HcPH�LPHc�t���H�H���vHcE�HѺ f�H�yH�H���&1�f�DH������D�p����H��������r��H����������H�E�dH+%(�nH������H�H�@H�e�[A\A]A^A_]��DL�� ���H��H�5�r��HDž ���L�������h��I�|$`M������f���H������H�5�AH��PxI�|$`�h��f�H��A�.1�A��1�H���*������Y@bHDž���jjj�rk��L�����H�� M�������A�FD�@D��D�������Wj��D������H��E���TH������H�������q��L���q��I�|$`L��H��H���
���H������6|��H������Zq��f�H��1�A�.�1�H���*������YxaHDž���A�jjj�j��L�����H�� M���Ԓ��A�FD�@D��D�������i��D������H��E���VH������H��������p��L���p��I�|$`L��H��H�	�
���H������h{��H������p�����H�xHc�t���H�H���xH�A� fD�H�xHcE�H�H���%H�� 1�f�0A�Nf�x��f.�H��O�H�==^�l��H���������f.�I�|$`H��������H������H������H�������>g��H������H���������H������H��H�������g��H������H���e���H�xIcFH�H����E1��mmD�AfD�L�|���f�H�xIcFH�H����E1��mmD�AfD�T�~���f�H������H������H�������f��H������H������H�����H������H������H�������Vf��H������H������H���X���I�vH������D������H�������"f��H������D������H������H������DI�vH������D������H��������e��H������D������H������H���
����0i����H��鷏����H��鎏����H���֏����H���ʏ����H�������H���,�����H��馏����H��遏����H��鎏����H���:�����H���"�����H���"�����H��鴎����H���
�����H������H�������H���ڎ����H���Ύ����H���Ž����H���Ž����H��骎����H���j�����H���`�����H��醎����H���Ύ����H�������H���0�����H���ҍ��������H���A�����H���5�����H���}�����H���̎����H�������H��������H���M�����H���A�����H�������f.���UH��AWAVL������L������AUA��ATSH��H����X�����P�����H���D��`���dH�%(H�E�1�H��x���HDžx���H��H��h����{i��H�{`L��L��H�ځ
���H������H�ׁ
H�������v��H�������k��H�������k��f�H��1��A*�A�.1�L���Y�[A��HDž����jjj�e��L������H�� M������A�ED�`D����c��H��E����H��x���H��x����-k��L���%k��H�{`L�����H��h���H���
H��������u��H��������j��f�H��1�A�.�1�L���*�`����Y[HDž����A�jjj�=d��L������H�� M���$���A�ED�`D���)c��H��E����H��x���H��x����jj��L���bj��H�{`L�����H��h���H��
H�������u��H������L��0����)j��H�E���`����
H��H��@����;o����H����
L��E��%o����P����
��t���H����H��H��H����n����X����
��$���H������H��H��`�����n��Hc�t���Hc�$��������H�H�LHcU�H�L�$D���b��I��E����H��x���L��x����Zi��H�{`L�����H��h���H��~
H�������t��H�������(i��H�{`L��L��H��}
���H������H�~
H��������s��H��������h��H��������h��H�{`L��L��H�o}
���H������H�|}
H�������s��H�������h��H�������h��H��L�c`1�A�.�1�L����XA�HDž����jjj��a��H������H�� H���@���H������L��L��L��H��|
���H��������r��H�������h��H�������h��H�{`L��L��H�|
���H������H�|
H�������r��H��������g��H�������g��H�{`L�����H��{
H�
�2H�������hr��H�������g��H�{`L��L��H��z
���H������H�8{
H�������,r��H�������Pg��H�������Dg��H�{`L��L��H�#z
���H������H�pz
H��������q��H�������g��H�������f��H�{`L��L��H��t
���H������H�(u
H�������q��H�������f��H�������f��H�{`L��L��H��s
���H������H��x
H�������Tq��H�������xf��H�������lf��H�{`L��L��H��v
���H������H��v
H�������q��H�������0f��H�������$f����^��I��H�s`A�L��H�#v
A����L��H��������e��L�cXH��������e��H��x�����e��H�E�dH+%(�*H�e�[A\A]A^A_]�H�xIcEH�H����E1��mmD�afD�L�:���f.�H�xHc����H�H����H�� f�0H�xHc�$���H�H���DH�� f�H�xHc�t���H�H����Lcm�H�� f�H�xK�T-M����1�E�`fB�o�q���fDH�xIcEH�H��uOE1��mmD�afD�D�1���fDI�uH��8���H��@����\��H��8���H��@���H�����I�uH��8���H��@�����[��H��8���H��@���H���fDH��@���L��`����[��L��`���H���8���fDL��L��X���H��`����[��L��X���H��`���H�����@H��H���L��X���H��`����V[��L��X���H��`���H�����H��`���L��P���H��X����&[��L��P���H��X���H���8����{^����H���υ����H���υ����H���Å����H��鷅����H��韅����H��铅����H��釅����H���{�����H���o�����H���c�����H���Ʌ����H���ׅ����������H���B�����H���*�����H������ff.���UH��AWAVA��AUL�m�ATI��L��S����H���H������
dH�%(H�E�1��g��D�x�E�D���[��H��(���E���GL��`���I�|$`H�r
���H��(���L��H��`����l��H��`����b��H���1�HDž`����WRA�.1�jA�L��jj�s[��L��`���H�� M�����IcGL�D	D��L������WZ��H��7L�����H�HH��0���H9�sH�pH��H9��0IcW�@e(H�scalH�pH���6�@,-H�HH��)1�I�|$`f�H��0������D�BL��f�HH��e
H��0���H��`�����k��H��`����a��H��y
I�t$`A�H��`���H��@���A�L���H��H������`��H��`�����`��I�|$`L���H�����H�_e
H��`����kk��H��`����`��I�t$`���H�e
H��8���A�A�L��H��8����L`��H��8����P`��M�D$`M���I��xM��t@�A�D$ f9�sI�D$H��t+I��A�D$ f9�r�I�T$H��tDI����fDI��DM;��t.L��H�����L������]��H�����L������@ fD9�sO�I9����(H�����L������sX��fD�p H����L��H������yi��L�����I���L����W��H�������W��H��0����J_��L���B_��H��(����6_��H�E�dH+%(��H�e�[A\A]A^A_]�@H�x2H�5H��H9�sMH�pH�BH9�s@1�ff.�ff.��f�4f�tAH��H��u��;f.�foh{
A�-H�lateH�A(AfoX{
fD�A0AHcE�H�H����1�D�yf�t2����fDH��N�@e(H�PIcWH������f�L�H��I�wL�����L��L�����H������U��IcL�����L�����J�H��H�?�,-H�HthH�����H��H������IU��H�����L�����H���X���fE;t$ �����f�L��H�����H������
U��H�����H������	���1������[X����H��铀����H���Ҁ����H���ހ����H�������H���ƀ����H���Ȁ���f���UH��b
���H��AUATL�m�SH�]�L��H��H��8dL�$%(L�e�I��H�E�H��u
H�E�I�|$`�g��H�}���\��H�}��\��I�t$`H��L��H�xl
A�A����H�E��~\��H�}��\��H�ھ�L��H�ca
H�E�����(H�5<H��1��d��H�ھ
�L������TH�5 <H��1���c��H�ھ�'L���^����YH�5R<H��1���c��H�ھ�'L���8�����H�5�<H��1��c��H�ھ'L�������5H�5.>H��1��|c��H�ھ'L�������H�5@?H��1��Vc��H�ھ�%L��������H�5�?H��1��0c��H�ھ" L������,H�5�@H��1��
c��H�ھ L���z�����H�5�@H��1���b��H�ھl�L���T���H�}��[��L���S��H�E�dH+%(uH��8[A\A]]���U����H���~����H����~����H����~����UH��AWAVAUATSH��dH�%(H�E�1�H��u'H�E�dH+%(��H�e�[A\A]A^A_]�DH��^
H��H�`L�� ���L�����H�� ���L��H�[s
L���H�����L������d��H������Z��H�� ����Z��H�s`L��L��H��i
A�A����H�������Y��H�������Y��H���HDž�H��H�����-W��L���M���H��@���H�����M�u1�E�}L���f��H����H�����D���
�S��D�x�E�D����Q��H��E����H���H����2Y��H�{`L���H����H��h
H�������c��H������Y��f��H�{pL���AoF(H��H)����H�����H������L������A�����L��)����jj�SH������XZ�X��M�mM���	���H����X��H�����Q�����H��HA�(�AapH�yfD�AH�AHcE�H�H��u"H��)1�f�0D�yf�x����H�����H�����H������O��H�����H�����H�����R����H���8|����H���[|����H���|����H���~|����H���C|��f.���UH��AWAVAUATSH��dH�%(H�E�1�H��Hu'H�E�dH+%(�o
H�e�[A\A]A^A_]�DH��[
I��H�`H�� ���H�� ���H��H�Rp
���H�����H�����H��H��������a��H������W��H�� ����V��H��f
I�t$`A�H�� ���H����A�H�ٺ��H��H��`����V��H�� ����V��M��$8I��$(H������I9���	ff.�@I��$A�M(��	M��$�M��u�v	ff.�M�6M���_	A;Nu��I�M H��@����
H��H������D�yH��x����O���E�H�M�LD��L�������N��L������H��x���H������I��E����	I�|$`H��e
H�ھ��H������H�� ����`��H�� ����U��I�u0�
H������M�|$`�;U��H������H��HDž ����‰E���U��H�پ��L��H������H�[d
H������`��H������;U��H�� ����/U��I�u8�
H������M�|$`��T��H������H��HDž ����‰E��VU��H�پ��L��H������H��c
H������_��H�������T��H�� ����T��I�u@�
H������M�|$`�OT��H������H��HDž ����‰E���T��H�پ��L��H������H��i
H������+_��H������OT��H�� ����CT��I�uH�
H������M�|$`��S��H������H��HDž ����‰E��jT��H�پ��L��H������H�Qi
H������^��H�������S��H�� �����S��L������I�|$`H��H�c
���H�� ���L��H��W
H������e^��H������S��H�� ����}S��I�t$`H��L��H�;W
A�A����H�� ����>S��H�� ����BS��H������M�~HDž����H��H��x����P��H������I�W(I�u@H��H��������P��L�����I�W0I�uHL����P��H�������U���1��0X��L��fI~��U��1���X���
C��p���fIn��=O����t�
C��p����$O�����bL���DU��H��A�.1�1�A��H��HDž ���jjj��K��L�� ���H�� M����H��������T��H��A�1�1�A�.�H��HDž ���jjj�K��L�� ���H�� M����w��IcPIcGH�D
����H������H��x���L��h���B�Ɖ�p����^��L������H�BA�(L��h���IcAI�DAH�H�H�@lefD�PIc@H�H���JIcGH��, H�yH�H������p����D)A�AL���"Q��L���Q��H������D�HE��t3I�|$`H��x���H�ھ��H��U
H�� ����[��H�� �����P��A�u(H�������
�bJ��D�x	�E�D���SI��H������H��E���I�|$`H�DT
H�ھ��H������H�� ����I[��H�� ���L�������fP��I�t$`L��H��H��S
A�A����H�������'P��H�������+P��H���H��H�������P��H�������P��H�������H��I�E A�M(L���PH��H�H��賍��I�|$`L��H��H��_
���H�� ����Z��H�� ����O��I�t$`H��H������H�~h
A�A����H�� ����qO��H�� ����uO��H�������H���ω�x����G����x���H������I�Dž��[I�|$`H��L��L�=�R
H�-^
L�� ���H�������Y��H������O��H�� ����N��I�|$`H��L��H��]
���L�� ���H������Y��H�������N��H�� ����N��I�uP�
H������M�|$`�NN��H������H��HDž ����‰E���N��H��L��H��c
L��H������.Y��H������RN��H�� ����FN��I�uX�
H������M�|$`��M��H������H��HDž ����‰E��mN��H��L��H�[c
L��H������X��H�������M��H�� �����M��I�|$`H��L��H�Q
���H�� ���H�Q
H������sX��H������M��H�� ����M��I�|$`H�ھ��H������H��P
H�� ����4X��H�� ����XM��I�t$`L��H��H�&\
A�A����H������M��H������M��H���E��H�������	M��H�������}E��H��������L��H��������L��L���T��I��H9������M���H��`����AE���=���@M��$���1�H��I��I��$�L��I��M��t�I��x9�t"L�M��t�A�xI��1҉�I��I9�u�L��9�u�M�3M�������p���Dfo(i
�@rnH�xK�?P�.fA�@M����L�<�.fA�HcE�I�H�H����E1�E�HfE�\����fDH�a<H�������#I�fA�wI�GHcBL�H���J��)f�A�O1�f�H�Y���@fo�h
H�xXHcE�H�H����H�E1��)f�8D�yfD�@���f.�I�wH��P���L��X���H��h����B��L������H��P���L��X���H��h��������I�pH��L��P���L��X���H��h����oB��L��P���L��X���H��h���H���x���f�H������H��p���H��x����6B��H��p���H��x���H���)���H�rL�‰�p���L��x����B����p���L��x���H�����f�H������L��x���H��������A��L������L��x���H�������<���@H�qL��p���L��x���H�������A��L��p���L��x���H������H��������D����H���Xo����H����n����H����n����H����n����H����n����H����n����H���n����H���n����H���n�����'o���Bo�����jo����H���po����H���o����H���fo����H���o����H���yo����H���o����H���~o����H���ro����H���fo����H���Zo����H���o����H���o���@��UH��AWAVAUATSH��dH�%(H�E�1�H���u'H�E�dH+%(�H�e�[A\A]A^A_]�DH�qK
H��H�`L������L����H����L��H�{a
L���H������L��h����S��H�������4H��H�����(H��H�s`L��L��H��W
A�A����H������G��H������G��H������HDž����H��H�������ME��L���M���H��@���H��X���I�FH��H�������LJ��H����H������1��$T��I��H�����@��u�41���x��H��X����
��@��D�x�E�D����?��H��E���eH������H�������"G��H�{`L���H������H��V
H������Q��H������F��M�~�ו��H��M��t'I�L��L��H�����xtGH�5�F��L����<��H�������F��H��h���� ?�����I�|$�H�����&����L���H�5�F��L��HDž��<��f�)�����M��t�I�H�
e\
L��L��H�@(H������H������H��`���H���H�524H���H��H�6F��H����L�
F��PH����L�YM��H�������=Q��H�5F��L�x�����;��H�������E����x���Y^���f�f��A�D$)������~�����ff�fb�)�����u�'��x��HDžx���1�1�HDžp���I�$L��P H�S5H�{pH������L������H������H��`���A�����L��jj�H������XZ�E��I�$H��x���L��H��p����P I�L���PM�6M���'��������H�15A�(�AapH�yfD�IH�AHcE�H�H����H�E1��)f�8D�yfD�@�L����I�D$pI�L$xH��p���H��H��H��x���H��H�������I�D$8I�L$@H��p�����DI�t$L���;G��L���E��H�����A���tF��L���G��D�����@�H�H�=2�@��H�5�1����@H��X���H��p���H��x����>;��H��p���H��x���H���
���I�L���P����>����H���5j����H���mj����H���|j����H���j����H���rj����H���j����H���j����H���j���@��UH��E
���H��AWAVL�u�AUL��ATL�e�SL��H��hdH�%(H�]�H��H�E�H��E
H�E�L��p���H�{`�M��H�}���B��H�}��B��H�s`L��L��H�E
A�A����H�E��B��H�}��B��H�C`H�=�0H�Xp��H��t+H�H��0H��L��H�E��xt=H�5~B��L���f8��H��p����:��H�E�dH+%(��H��h[A\A]A^A_]�H�]�H�5=B��L��H�E��8��L�=�
H�E�H��x���M��xH��t�ff.�@H�I�7L��L�pxH�E��fN��H�U�H��x���H��H�U�A��H�}�I���A��M9�u�H�H��P�;���H�!�H�=�/�>������O<����I����h����H���i����H���i����I���h���ff.���UH��AVI��1�AUATI��1�SH��H�� dL�,%(L�m�I��H�
	A���t=��L��I�}H��P(��tdI�6L�m�L��L��H��P(foE��oH�KH�E�H�S��)M�H�U�H�U�fH~�H�CfH~�H9�tCH9�t.H�5�@��L���6��H�E�dH+%(u+H�� H��[A\A]A^]�H�U���f.�H�KH9�u���� ;����I���8h��@��UH��ATSH��H��dL�$%(L�e�I��H��r=��H�}�I�4$H��PH�}�H��wH����9�����tC1ɺH�5�H���mG��H�}��?��H�E�dH+%(��H��H��[A\]�DH�}�H���wH���t9�����t1ɺH�5pH���	G����H�}�H���wH���49�����t1ɺH�5�H����F���W���@H�}�H�r�wH����8�����t1ɺ	H�5[H���F������@H�E�H�D�pH�x�8�����t1ɺH�5>H���IF������H�E�H�(�pH�x�x8�����t1ɺH�5"H���
F�����H�E�H��pH�x�<8�����t1ɺH�5H����E���_���H�E�H���pH�x�8����t 1ɺ
H�5�H���E���#����8��H�E�H���pH�x�7����t1ɺ	H�5�H���TE�����H�E�H���pH�x�7����t1ɺH�5�H���E�����H�u�H���:�������I���ve��fD��H�>t&UH��SH��H��H�`��>��H��H�]��H���AI���Ðff.���UH��SH��H��H�`�>��H��H�]��H���8���fD��UH��AUATSH��8H�=+L�&dH�%(H�]�H����M���I�$L�m�H��*L��L��H�E��xtDL��H�5�<���u2��H�H����9��H�E�dH+%(��H��8H��[A\A]]�DL��H�5F<��L�e�H�E��%2��H�H���v9��M��t�I�$H�}�L��PH�u��_� L��H�E��%6��H�E�H�;H��;��H�}��;��I�$L��P�X���fDH�s�H�=�)�08��M�����H�H����8�������G6����I���c���f.���U��H��AWL��xAVAUA��ATI��SH��H���H����ff.���C f9�sH�CH��tH���C f9�r�H�SH��tH����@I9�$�tH���8���@ fD9�s4A�I9�u9�(�3��L��H��D��fD�h H���D��I��$�H��[A\A]A^A_]ÐE1�fD;k A���f�L;��tL���8��fD9h s�L��A�딐ff.����H�����L��xH��tGL��@f9H s"H�@H��u�H��1�I9�tf;p �‰��DH�PH��t�H��H�����1҉�Ðf.���UH��?
���H��AWAVAUATSH�]�H��H��dL�,%(L�m�I��H�E�H�:I
H�E�H�E�H��H��8���I�}`�/D��H�}��V9��H�}��M9��H�I
I�u`A�H�E�H��`���A�H�ٺ��H��H������9��H�}��9��I���M���H��H���H�� ���H��0���I9�u+�fDH�59��H����.��I��L9�0����iM�4$蟇��H��M��t�I�L��H��H�E��xu�L�u�H�5�8��H��H�E��.��L��@���M��t�I�H��8���L���PH�}�H�
?
H��H�H�@(H�M���H�}�����/8��H�}�H��tH��PH��@���H�
�>
H��8���H��H�H�@(H�M���H�E��@������E1���wH�E�D�0H�58��H����-��H�}��7��H�=�%M�<$��M����I�H��%L��H��H�E��x��H��H�5�7���-��H��@���H�������H�I���PL9�0��������H�������/��H�E�dH+%(��
H�e�[A\A]A^A_]Ð�7��H�}�H��tH��PH��@����L�}�H�5%7��H��H�E�L��(����,��M��t�H��(���H�� ���H��PL��H���M���fE����I�}`�8��H��L���2��H�8L��X���H��X����1��I�}`L��H�����9A��H��X����H��L���.A��I�}`L��H�ھ��H��E
H�E��@��H�}��&6��L��8���I�}`H��H�!<
���H�E�L��H�O
H�E���@��H�}���5��H�}���5��I�u`L��H��H��E
A�A����H�E��5��H�}��5����B��I�u`H��@���H��I���,��M�~�A�FH�� ���L���@��H�� ���L���7���A�/��H����-��H��X����H5��H��H���H��tH��PH��(�������f.�H�E�fD�0�:���f�H�)�H�=#�1���E����y"�����=�"L�5k"�=I�L��L��H��H�E��x�$g��H�E�H�5�4��H��H�E�H������*��H�������H�����L��X���L��H��P(L��X���M����e��I�L���PH��X���H��tH��PI�L���P��I���t}H��8���L���P H�E�H�%"�x�H��uH�O�H�="�0����40��I��1�H�E�H������a���I�L���P�^���f.�L���PH�����H��P�P�����0��H�8H������8���=u!L�����tOI�:�2������H�� H��H�������.�����Y�����u��H�����H�� �2���<����!��L�@���cL��H��X���1ɺ!L�����HDžP���HDžX����:��H��X���1�H��8����#H�5	H�E�H�E��`:��1ɺ<H��H�5�H�E��B:��H�E�L�M�1�PH�M�A��jH��P���jjH������;��H�����H�� ��3��H�}��62��H�}��-2��H��X����!2��H��P����1��L��������f�H�E�H�����H���PH�����H�����H�H��H��H�E��x�{_��H�E�H�5�1��H��H�E�H������'��H������<H��8���H�5�1���'�������H���=_H�������BH�����H������H��H��H�E��x�`a��H�E�H�5S1��H��H�E�H������,'��H�������H�����L��H��P(L��X���M���P`��I�L���PH��X���H��tH��PI�L���P��tFI�L���PH�����H��PH�����H��PI�L���PH�����H��P�����I�L���PI�������L���RH�����H��RH�����H��RI�L���RH�����H��R�������������i���@�,��H�8H������4���=�L������<I�:�/�����H�aH��H������r+�����M����er��H�����H�?�/���0���H�=.L������:+��L�����L�����t���H��8���L��1ɺ!L�����L�����H�E��7���H�E��2��H�U�E1�E1�H��H����-��H���0��H�}��{.����%��H�U��H�H��H������R1��H�}���.��H�����H�=cH�d�.��L�����L�����������6L�����L��1ɺ!L��L���HDžP���HDžX���� 6��H��X���1�H��8����#H�5�H�E�H�E���5��1ɺ<H��H�5j
H�E���5��H�E�L�M�1�PH�M�A��jH��P���jjH������7��H�����H�� �b/��H�}���-��H�}��-��H��X����-��H��P����-��L������H���H�=��4*�����H�=L������)��L�����L��
������H��8���L��1ɺ!L����L���H�E���4���H�E���0��H�U�E1�E1�H��H���+��H���.��H�}��],����s#��H�U��H�H��H������4/��H�}��,��H�����H�=EH�F�,��L����L�������y'����H���O[����H���:[����H���[�����~[�����[���[�����7\����H���q[���u\����I����\����H���]����H���Z����I����\����H����\����H���\�����^�����H���]����H���Z����H���]����H����]����H���BZ���$^����I���^�����]����H����^����H����^�����z^����H���9\����H���Z��@��UH��ATSH��dH�%(H�]�H��H�H�>t2I���8��H��H�}��@H�;H��tH��PH�}�L��H�H�;�PH�E�dH+%(uH��H��[A\]���%����I���0^��fD��U�H��AWAVAUATSH��H��XL�.dL�4%(L�u�I��f���Ƈ�LJ��cy��M��t,H��I�EL�e�L��L��H�E��xt1H�5z*��L���b ��H�E�dH+%(��H��X[A\A]A^A_]�L�m�H�5E*��L��H�E��% ��L�m�M��t�I�EL�}�L��L���PH�}���H��3
H�U�L��L��H�E�H�E�H��H�U�H�E���H�E��x�H�5�)��L�����H�}��)��H�U�H�u�L��H�O3
L��H�E��S�H�E��x�H�5�)��L���v��H�}��M)��H�U�H�u�L��H��2
L��H�E���H�E��x��H�5J)��L���2��H�}��	)�����u@H�}�H��tH��PH�E�dH+%(��I�EL��H�@H��X[A\A]A^A_]��L���O��H��t�H�@pH��H���������fDH�E��8�������DH�E��8����D���DH�E��8�������8#����H����[����H����[����H����[����H���[����H���[��ff.����UH��AWAVAUATSH���H�����dL�$%(L�e�L���L+��I��D������E��u&H�E�dH+%(�
)H�e�[A\A]A^A_]�@L��0���H�w`H��H�K7
H��0���A�L�����A�H��0���L�����H��8����6'��H��0���L�����3'��H�{`L��L��H�24
���L�����H��0���H��6
H������1��H����L�u���&��H��0�����&��������L��L�k`�
L��������+��L��L��HDž0����‰E��'��L�����L��H�����H�^3
H�����R1��H�����v&��H��0����j&���s|L���
L�k`�+��L��L��HDž0����‰E��&��L�����L��L�����H��2
H����L����0��H�����&��H��0����%��H�{`��ktDH�2
L��L��H��0���H�2
H�����0��H�����%��H��0����%��H�����H����gL��H����H�@pH��H����H��������$���A�ʼn������H�����HDž����"��fA���^�RfE���wfA��u1H�����1ɺH�5����,��Dž$���ff.�f�H����D�oE��tDH�����H��������H�����H�x`H��0
H��0����/��H��0����$��H�����$��H�����H�i=
H�����A�H��0���A����H��P���H�s`H��H��0����@$��H��0����D$��H��/
H����H��?
H��H���� �������E����H��h���E1��~8�
HDžP���H��X���HDž����HDž�����X���)�@����0H�����H�5�#������I��D9������cff.��H�����H�=�E��H���N�$�M�4$��M��t�I�H�����H��L���H��0����xu�H��@���H�����H�5\#��HDž@���H�������5��H���_���H������H������H������H��PH������D��
�
(��D�h�E�D���n��H�����I��E����H�����L�����H�f2
H��������H��0���H�{`L���W-��H��0����{"��L�k`L���O$��H��L���T��H��H���
���L���-��L�k`L���!$��H������H���"��H��H���
���L����,�������������tAM�$$��p��H��M��t0I�$L��L���H��0����x�<H�����H�5�!������H��:
H�����H�����A�H����A����H�����H��H�p`�y!��H�����}!��H�����H������i!��H������H��tH��PH������I��H��PD9����������H����������H������H������H)�H�����yD�h�E1��v�H�����H�����H��0
���H�����H��0���H�{`�+��H��0���� ��H������H�s`J�<�H��PH����� ��I�D$M9���
I��H�������
D���%��D�p�E�D�����H����I��E���[���fok=
A�_H�x&fD�@$@fo`=
@HcM�H�	H����
1�E�wf�4O����@fo=
�_H�H&f�X$@fo�<
@Hc]�H�H����E1�E�nfD�Y�����H�A��H�=��X���:���L��@���H�����H�5���HDž@������M�������L�����L��p���HDž���L������I�$L��L��H�
�)
H�@(H��(���H��(���H������H����~
b�
H������~K�
H��p���H�����H��x���H��p����p����x�x���)�`���)������L��H�5�������H��(������fo�����f�L�����HDž����L������)�����HDž����HDž����Dž�����?HDž��������H���
f�fo�`���H������fo�@���H��p���H��H��`���HDž�HDž����HDž���Dž����?HDž���HDž���Dž ���HDž@���HDžH���HDžP���DžX����?HDž`���)���)�0����h������H�:�
L��L��H��0���I�$H�
�'
H������HDž���H�@(H��(���H����+l��H��H�0H�]��H��p���PH��x���L�
7��L��$��H������d(��H�5-��L�����H��(�������H�����AYAZH����H�H�
'
H��L��H�@(H��(�����H�5�
H����H��H����H��p���L��#��PH��x���L�
���H�� �����'��H�5���L�������H��(����W��_AX��t�� �������I�$H�
G&
L��L��H������H�@(H��(�����H��p����x�<
L��H�52�����H��(�������I�$H�
�%
L��L��H������H�@(H��(�����H��p����x�{L��H�5�������H��(������I�$H�
%%
L��L��H������H�@(H��(�����H��p����x��L��H�5����{��H��(����O��I�$H�
4$
L��L��H������H�@(H��(�����H��p����x�1H�5B��L���*��H��(������I�$H�
�#
H�@(L��L��H��(���H��������H��p����x�)H�5���L������H��(������H������H���SI�$H�
�"
L��L��H������H�@(H��(�����H��p����x�L��H�5����v��H��(����J��I�$H�
"
L��L��H������H�@(H��(�����H��p����x��H�5=��L���%��H��(������H��p���D�PE���=	I�$H�
j!
L��L��H������H�@(H��(�����H��p����x��L��H�5������H��(������I�$L�����L��L��PH�����H�� ���H�� 
H������H��H�H�@(H�� ����Є��)I�$H������L��L��H�@(H��(�����H��p���H��x����@�����k������M���������H�5��L�����H��(�������H�� �������H�����H��tH��P��������I�$L��L��PH�����H�{
H������H�H�@(H�� ����Є�tPI�$H������L��L��H�@(H��(�����H��p���H��x����@������H�~	Hc�H�>��@H�� ������H�����H��tH��PI�$L��L��PH�����L�-�
H������H�H�@(L�� ����Є���I�$H������L��L��H�@(L��(�����H��p���H�5���L��D�h�
��H��(���A�����H�� ����t��H�����H��tH��PA����I�$H�
�
L��L��H������H�@(H��(�����H��p���H�5U��L���@�����S
�.
��H��(������H�����L��H�Q�
���H�x`H�#
H��p����!��H��p�������f�H�����H��tH��PH��p���H��
L�-��
H��0������L��H���L��0���M��u
�/�I��I�~I�H��tH��P�L���^��H��u�H��@���H��8���1�H���\��H��8���H��X���HDžP���HDžH���H��@���H9�t	H�����L������L����M��u�-fDI��I�~I�H��tH��P�L����
��H��u�H���H����1�H������H����H��p���HDž���HDž����H���H9�t	H���k
��H�����H���
H�������A��L������L������M��u	�,@I��I�}I�]H��tH��P�L���
��H��u�H������H������1�H�����H������H��x���HDž����HDž����H������H9�t	H�����H��������I�$L��P���H�����H�@`��h���H������H9�����t/H������f�H�;H���$H�H���P(H9�����u�H������tH��P���H������H)��!��H�=z/
���H�=�
���H��0����m��H��8����a���&�@H�� �������H�����H�������H��P���H��x���L��H�0����H�5���L���	��H��(������L��L��H�����H�x`H�vH��p����*��H��p����N����f�H������H���
��H���W�f�H������H��H9�����������H�����H�@`��h����k�k���H������H������H9������I��H�����H��I�<$H��H��PI��L9�����u��1����H������H�������	��H������H���S�fDH������H9��������(����H������H������H)�H�����H��H�������� ��E1�H������H��(�����H��(���I�EI9��LI��H������D������H��J�<�H��P��tʿD���]
��fo�.
H��p����@@fo�.
�@$_@H������Hc�H������L�-��
H�<�H���u��H�������
������Eą�tBH��p���L��B��A�����H��p���Hc]�HcPH�LPH�H����1�f�YD�hH�����L��H�i�
H�x`��������fA�����H�����1ɺH�5Z��{��Dž$�����@H������H������H)�H��H��(���H�����W�C�E1�H�������f�I�EL9������O	I��H������D��`���H�����J�<�H��P��tɿD��`�������fo@-
H��p����@@fo6-
�@$_@Hc�`���H������L�-�
H������H�<�H��H���t��H�������
�������Eą�tDH��p���L��B��A�����H��p���Hc]�HcPH�LPH�H����E1�fD�YD�hH�����L��H���
H�x`�"��H��p����F���\����H��x���L��H�5_����G��H��(���������s�H�����L��H�u�
H�x`H��
H��p������H��p��������A���DH��x���L��H�5��������H��(�����������H�����L��H�
�
H�x`H�b
H��p����F��H��p����j���t�DL�����H�����H��
���L�����H��0���H��
I�`H��H����L������H�������H��0������I�`H��H�E
H�~�
���H��0������H��0�����
��I�`H��H��
H�D�
���H��0����{��H��0���L�-}
�
��I�`H��H�
�
���L��0����I��H��0����m
��I�`H��H���
���L��0������H��0����B
��I�`H��H��
H���
���H��0�������H��0����
��I�w`L��H��H��%
A�A����H��������H��������H���N����f�����H��(���������f.���ƅ�����������fDH��x���L��H�5�������H��(����[�������$������H�����H������L��H�x`H�E
H��p���H�g
H��(�������H��(������H��p���������fDH��x���H�5
��L�������H��(�������I�$H�H(�����H�
H������L��L��H��(�����H��p���H��x����@����6�����u��� ���ff.�@H�5y��L���a��H��(����5��H������H������H)�H�����H��H��(�������
�X�E1��f�I�EL9��#I��H������D������H�����J�<�H��P��tͿD�������\��fo�'
H��p����@@fo�'
�@$_@Hc�����H������L�-��
H������H�<�H��H���n��H�������
������Eą�tDH��p���L��B��A�����H��p���Hc]�HcPH�LPH�H���GE1�fD�YD�hH�����L��H�_�
H�x`���H��p�����	���:�D����������������W��fo�&
H��p����@@fo�&
�@$_@�HL�-��
�Y��H��L�(�o����H����H�@H�{H�����H���H�CH�CH�����H�C8H�C C(�H��H��
H��� ����C@H������H9�P�����H�H��H�������Y����H��x���L��H�5���D�(���H��(������E����H�����H������L��H�x`H�p
H��p���H��
H��(����F��H��(����j��H��p����^�����f�H��x���L��H�5o��D�(�V���H��(����*��E�����H�����H������L��H�x`H��
H��p���H��
H��(������H��(�������H��p���������f��H�,�H�=��
�X��H�5��
���@H�����H������L��H�x`H��
H��(���H���H��p����-��H��p����Q��H��(����E�������������� ����������"����`��������`������fo$
H��p����@@fo$
�@$_@�HL�-��
���H��L�(�o�X���H��8���H�@H��@���H�yH�AH�AH��P���H�A8H�A A(H�������RE��H������H��p���H�
��
H�H�x@�A��H������H�
��
H��P���H�H������H9���H�H��H����������fDH�����HDž���i��Dž$������H�����1ɺH�5S��
��Dž$�����H�����1ɺH�5��W
��Dž$�����H��x���H��`���H�0�����Y���� ���������� �������H�ff.�H�5i��L���Q���H��(����%��H�� ������H�����H��tH��P���������H�����H��1�1�A�.A��L��H�@`fHn�HDžp���H������jjj�A���H��p���H�� H����;��H������H������L��H��(���H�I�H��p����=��H��p����a��H��(����U���N��f��*�fH~����ƅ����1�����f��H*�fH~�����f��*9fH~������f��*�fH~�����f��*�fH~����f��Z9fH~����H������H���;���H��H��p������ƅ��������������0���fo� 
H��p�����@fo� 
�@�@$_@�HL�-t�
�/���H��L�(�o�����H������H�@H������H�yH�AH�AH������H�A8H�A A(H��������A��H������H�����H�
C�
H�H�x@����H������H�
I�
H�H������H9�P�����H�H��H��������H��x���L��H�0������H������H�����H��H��p������H��������H9�(����U:��H��(����H��HE�H���H��������H9�HG�H��H�����I��H�����H�����H������I�LH������H9��*L��ff.�ff.�H�H��H��H�J�H9�u�H������H)�H��L�H��H������H��tH��P���H)����I�DL������H��P������H��������H9���6��H�۸HE�H���H��������H9�HG�H��H������I��H������H��(���H������H������I�LH9��OL��ff.��H�H��H��H�A�H9�u�H������H������H)�H��L�H��H������H��tH��P���H)����I�DL������H��P�����H������H�����H��H��p����W������fo~
Dž����H��p���@foq
�@�@$_@�������fo8
Dž`���H��p���@fo+
�@�@$_@����H��������H9������6��H������H��HE�H�� H��������H9�HG�H��H��(���H���m���I��H������H�����H������I�LH������H9���L��H�H��H��H�J�H9�u�H������H)�H��L�H��H������H��tH��P���H)��*���H��(���L������L�H��P����m��1����fo	
H��p���@fo
�@�@$_@�_���H������L������L��H�����H������L���]������H��������H��(���H�����H���������K���H���������&�����H���62����H���2����H���y2����H���m2������3����H����3����H����3����H����3����H���3����H���4����H����3����H����3����H���4����H���34����H����3����H����3����H���3����H���3����H���3����H���3����H����3����H���3����H���`1����H���d3��������H���R3����H���3����H���r2����H���2����H���3����H����1����H���3����H���1����H���3����H���3����H����2����H����2�����3�����3����H����3����H���4����H����3����H���4����H���2����H���A0����H���50����H���)0����H���0����H����3����H���0����H����3�����
3���������H���	4����H���0����H���0����H���3����H���&3����H����3����H���3����H���q3����H���e3����H���1����H���h2���ff.���UH��AWI��AVI��AUATSH��XH�������dH�%(H�]�H������H�����L��I�w H��H��(H������H��H���������H��I��I�����H������HDž����H��H�������G���H�=��
M�~p��M��t2I�H���
L��H��H�������x�]H�5����H����HDž����L��@����
L��L�������H�Eĉω�������������I�����(H������L�������%���H�ھ��L��H������H��
H����������H���������
L��L������H�Eĉω������q������I������H������L���������H�ھ��L��H������H��
H�������X��H�������|���K�D��
L��H�4�H�������
�E�K��L������H�4�L��H�����HcUĉ�4���H�H�L��H��������H������I�Ņ��>H������L���������H�ھ��L��H������H�"
H���������H������L��0�������H��L���H���	L��H������H��
H��0����d��H��0������H�������|���A��ftGH�
H��L��L��H���������H�
H��0������H��0����7���H�������+���H�
H�ھ��L��H�
b�
H����������H���������H��L���H��

L��H������H���	H��0������H��0������H���������H���1�HDž�������A�.1�jA�H��jj�	�H������H�� H����0��H��0���L��H��L��H��
���H�������
��H�������1���H��0����%���H��L���H�#
L��H������H�2
H��0�������H��0������H����������H��L���H��
L��H������H�
H��0������H��0������H���������H�ٺ��L��H��
A�A�H������H���H��H�������L���H������L������I���f�HDž ���)�����	�H��XI����H������H��I�����M�}I�EL��L��L�����L�����L��H�����H�� �����1�H���g���L������L�����H��H��L���J���H��H�����H������t�1�H���*���H������H��L���h���H��H����H�����B�L��L��H���
H�]�H������H����A�H�����H�����L�����H��jj踨H�����XZ�
���H����L���zL�����H�����I9�tC�L�kM��tL������XL�����H�;H��tzH�H���PL9�u�H�����H��tH�� ���H��H)���H��������H������H��tH��PH�������c�H�E�dH+%(�\H�e�[A\A]A^A_]ÐH��I9��S���놐L������H�5R�H��HDž����L�������(�M�������A��g�~���H������H�53�
H��Px�e����H�xH���H9�s I�UH��H9�sH�4�I�E�fDH�0 0 I�EHc�4���H�H���^HcE�L�$� fA�4$I�|$H�H���
A�M1�fA�L�;���f�H�xHcE�H�H����E1��mmA�HfD�L�R���f�H�xHcE�H�H��u?E1��mmA�HfD�T���fDH�a��H�=��
�x�����L��L������������H�������$�L������������H������H���L��L������������H���������L������������H������H���%���L��H������H��������H������H�����������L��H������H��������H������H������H���v��������H���*����H���]*����H���Q*����H���Q*����H���E*����I����*����I����*����H���*����I���p*����I���*����H���)����H����)����I���*����H���$*����I���*����H���)�����*����I���*����H���)����H���)����H���*��fD��UH��AWAVAUATSH��dH�%(H�E�1����t(H�E�dH+%(�gH�Ę[A\A]A^A_]�H�]�I��L�u�H�`H�R�	L��H�ھ��H�E�H��	
H�E�H��H����,���H�}��S�H�}��J�I�w`L��H��H�	
A�A����H�E���H�}���I���I���H)�H�����)HDžp�����H��H��X���H��p���DH�I��XH��x����hM��PM�����u��V�H��H���H�H��L���H�E��x��H�5��L�������H��M��tj1�I�EL��L���H�E��x�4H�5]�L���E�H��A��H��t	H�H��PE��u%M�$$M����H��x���M�l$H�I9��F���H��x���I��@H����H�E�H�0L����H�E�H��H�E��h�H��H��t(H�H��L���H�E��x��H�5��L����1�I�`H�]��I�H��L���N�H�}�H��H��tH��PH�H�}��P��t�G�����.�H��p���H9�X����JH��I���H��p����3���H�E�H�5%�L��H�E�H��h�����H��h���H9�A��H�������H�H��R���f�H�5��L��H�]�H�E�����K�H��M���1���H��A���U�����&�H��M�������o���DL�(1�L��I��HI��@L�$�H��h���M�������I�$H�K�3@H�3H������H�N1�I��H��I��HH9�h��������H��L9�u�H��x���H�KH�H��P���H��`���H9�����u�H��`���H���>H��`���L��H��H�E��x��H�5��L������.�H��P���H��teHDž`���H��P���L��H��H�E��x�9H�5b�L���J�H��`�����P���H��`���H��tH��P��P������I�<$����H��p���H9�X�������ff.�f�H��H����D�����H�5��L��H�]�H�E����"����I�`H�پ��H�
�
�H���I�`H�M�L��H��	H�E��(���H�}��O�I�w`H�M�L��H�
A�A����H�E���H�}���L����H�}�����f�H�E�H�5%�L��H�E�H��P�����H��P���H��`���H9���P���H�������H�H��R����H�E�H�5��L��H�E�H��`�������<�H��P���H�������<������H��P���H��������J����1���H��H���$����H��P���I����#����H���
$����H���$����H����$�����T$����H��H���1$����H���>$����H���}$����H��h���I����#����H���#��ff.����UH��AWAVI��AUATSH���H��H���H�dL�$%(L�e�A���V8��H��t1H��H�L�� ���H��L���H�� ����xtH�5h�L���P��1��f�H��0���H�5B�L��HDž0���H��@������H��t�I�6H��P���H��PH��H���D���E����H��@���H�
��	H�����L��H�H�@(H�������H�� ���E1�x�_H�5��L�����H������t�H��X���L��H��H��8����;���E��tH��X����G��	�+���RE��tw1�H��X����'�H��P�����H��@���H��PH�E�dH+%(��H�e؉�[A\A]A^A_]�f.�H��X���L��H��H��8���觧��E���fH��P����H���wH�������tIH�=��
M�.��M��t3I�EH���
L��L���H�� ����x�`
H�5��L���q��H��H���L���I�|$��M�l$M�������@����H��M����I�$L��L���H�� ����x�}H�5�L��������H��H��tdE1�H�H��L���H�� ����x��H�5��L�����M����M��t
I�$L��P��uM�mM���C���I�]M�&L9��H���H��H���f�L��)�����H�����H��@���L�hH�
U�	L��H�H�@(H�����H�����H��0���H���H�5"�
H����H��H�&�H�� ���L�
�PH��(���L�I�H�������-�H�5��L������H�������f��L���~�����fo�ff�fb�)������~�����ff�fb�)�����[A\�!�H���p��+���fDH��X����G��	t1�������H���H�5���K��������`���fDH���	H�5E��#��������H��X����G���@H���H�5:���������������fDH��0���H�5��L��HDž0���H��0������H��0���I9���H�����H�H��P����@H�5��L��L��0���HDž0����o�����H��H���p������@H��(����8A�����D����H��H���9������DH��`���HDž`���H��H������W�H��H������t7H��X����P��
����GE1��z��	�RfDH��H���H��8���L�����H���	H�{`H�� ����3�H�� ���L�%5�	�P�H������H�s`A�A�L�����H��L�� ���H�������H�� �����H�C`H�=3�
H�Xp��H��t2H�H��
H��L���H�� ����x�
H�5��L������HDž8���H��h���HDžh���H����H��@���H�
��	L��H��0���H�H�@(H�������H�� ����x�	H�5��L���u��H������I�H��h���D�XE��t]H���	H��0������A�H�����A�L��H��H���H�p`���H��������H��8���H��H��P8L���\��H��p���HDžp���H���B��H��@���H�
��	L��H��0���H�H�@(H�������H�� ����x�H�5��L�����H������n�H��p���D�PE��t]H�g�	H��0������A�H�����A�L��H��H���H�p`��H�������H��8���H��H��P8L�����I����H��H��t+H�H��L���H�� ����x�XH�5��L������1�H��H���H�� ���H�x`��H��L�����H�� ���H��H��tH��PH�D�HE��t5H��H���H��L�����H�x`H��	H�� ����#�H�� ����G�H��H���L��H���H����H�� ���H��tL��H���W�H�@H�� ���H��x���HDžx���H��H������k��H��@���H������H��PH������H���	L��H�H�@(H�� �����H�� �����(��������(�����tMH��@���H��0���L��H�H�@(H�������H�� ����x�@
L��H�5����x��H������L��L�� ���L��H���L��H����A�A����H��I�t$`H��(������H�� ������H���	I�|$`L��H��0���H�� ������H���	H�������H�����H��	���H�� ������I�|$`L�����H��0���H���	H�� ���H������Q�H������u��H�� ����i��I�|$`L�����H��0���H�n�	H�� ���H�������H�����H�]��+��H�� ������������H�ߺ
L��H���M�d$`�0�H��L��HDž ����‰E��E��L�����L��H��0���H���	H�������H��������H�� ������L��H����
H�ߋ�����M�d$`��H��L��HDž ����‰E�����L�����L��H��0���H�M�	H�������H������=��H�� ����1��L��H����
H�ߋ�����M�d$`�B�H��L��HDž ����‰E��W��L�����L��H��0���H�^�	H�������H���������H�� ������L��H���������H�ߺ
M�d$`���H��L��HDž ����‰E�����L�����L��H��0���H���	H�����H���(�H������L��H�� ����@��L��H���H��H��	A�A����L��I�t$`H��������H��������L���v��H��x����B����H���H�H��L����H��������(���HDž ������H��E1�L��fo�	H�+�A�LH���H������H��p���)�0���H��H�ڹ)�@���)�P���)�`���j�b���p���_AX��������H��H���L��0���H���	���H�����H�����H�{`L�����H��������H�s`���H���	H������A�A�L��H���������H���������H�{pL�� ���AVH������H������A�����L������+�YL��^���H�� ����u��H��(�������H������H��tH��PH��x����K��H��p����?��H��h����3��H��8���H��tH��PH��������H��`����	����@L��0���H�5"��L��HDž0������L����M���~�H��H���L�����H�x`H���	H�� ���H���	H�����H�����H��H��0����Z�H������~��H�� ����r��I���%��H��H��t+H�H��L���H�� ����x�qH�5j��L���R��1�H��H���H�� ���H�x`���H��L�����H�� ���H��H��tH��PH��@��t5H��H���H��L�����H�x`H���	H�� �����H�� ������H��H���H��0���L��H���	A�A����H�����H�s`�q��H������u��A��H����H���L��A������I�EL��PE���������I�1�H��0���I�t$I�$H��H��(���H�����L�+I�M �4fDI�uH�����H�N 1�L��H��I�t$H9�(������I��H9�0���u�I�MI�H�����H�� ���H9�����a��H�� ���H���XH�� ���L��H��H�� ����x��H�5���L���������H�����H��thHDž ���H�����L��H��H�� ����x�H�5H��L���0��H�� ��������H�� ���H��tH��P��������H�;�p���H�5���L��H��0���HDž0��������z���f.�H�:��H�=��
�8�����H���H�=��
���H�5y�
�[�@H��H���A�����L��L�����H������H������H�xp�� ���AV�‰XZ���H��0���H�5:��L��HDž0���H��������H�����H9� ��������H������H�H��R����@H��0���H�5���L��HDž0���H�� ��������N��H�����H���>����h���H�5���L��H��0���HDž0����w����H��0���H�5t��L��HDž0���H��8����J���n�H�x�H�5��0����u	E����H�����H�5��	�@��H��H���L��H��0������H�x`H���	H�� ���H���	H��������H��������H�� ������H����HDž��H��H��(������H��@���H�
>�	L��H��0���H�H�@(H�������H�� ����@���������:H��(���D� L��H�5P���;��H��������fA���sfA���IfE���H��H���H��(���L�����H�x`H�^�	H�� ������H�� ������H���������
H�xH�5�������H��X���A�ċP��t���M���E���f������E1�H�xH�5��l������A	�H��X����P뽿����H�����H�������6���H����H�=5�
�����L��H�5!�����H���������H��(���1ɺH�5q��������H��(���fD� ���H��(���1ɺH�5F��V�����H��(���1ɺH�5.��7�����H��(���H��H�0������H��(���H��H�0������H�xH�5ã�T����������H��(���H�����H�0�a����H��X����P�^�������H���s
����H���s
����H���
����H��������H��H���
����H�����H���p
����H�������H����
����H���!����H���
����H����
����H����
����H���
����H����
����H���n
����H����
����H����
����H���o
����H����
�����{
����H��0���H��������H��H��������H����
����H����
����H�������H�������H���"����H��������H��������H�������H�������H�������H���*
����H���w����H����
����H���
����H���	����H����
����H���
����H����
����H����
����H����
����H����
����H����
����H���
����H���
����H���r
���f���UH��AWI��AVAUATSH��HH�}�H�>�U�dH�%(H�E�1�H�H�E��P(�E������E�1�L�e�L�u�L�-����M�H�}����X���U�H�}�L����E�H�}�H�E�H��tH��P��9]���I�7��L��H��P0H�5=�
H��t@H��H�M�L��L�
���AUH�U�L�9���$��ZL��YL���l��������D�H�T�H�=�
�@��H�5ټ
���E�ff.��H�}�H��tH��PH�E�dH+%(u�E�H�e�[A\A]A^A_]��*����H���8��ff.���UH��AWAVI��AUATSH���H��8���H��H�����H��X���L��0���D��L���dH�%(H�]�H��h���H������A���tH��h���D�PE���-I�F`H�=ɻ
H�Xp��L�}�H��t/H�H���
H��L���H�E��x�H�5���L���w��H�E�H��P���I�v`H��P���L��H��	A�A����H�E��
��H�}����I���H�{�RL�cM����������H��H����H�H��L���H�E��x�QH�5���L��������h��H��M��tf1�I�EL��L���H�E��x��H�5���L�����H��A��H��t	H�H��PE��u!M�$$M��t@H��X���M�l$H�I9��J���I���H��X����g�L�`L������H���"��L�����H��8���H�X�����H��x�������I�~`H���	L�����H��x���H�E����H�}�H�]����A���uA����LI�~`L��H�ھ��H���	H�E�H���	H�E��B��H�}��i��H�}��`��I�v`H��L��H�/�	A�A����H�E��%��H�}��,��H��0����L���h���L�������H��x������H��P����v��H��h�������H�E�dH+%(�jH�e؉�[A\A]A^A_]�fDH�E�H�5���L��H�E�H��@������H��@���H9�A��H������H�H��R����f�H�5���L��H�]�H�E��u�������H��M�����������f.������H��M���|�������DH��0���1�L���O�����������L����E1�H��8���H�X���n��H��p������I�~`H�t�	L�����H��p���H�E��l��H�}�H�]����A���t��L���tA�����I�~`L��H�ھ��H���	H�E�H�m�	H�E����H�}��;��H�}��2��I�v`H��L��H��	A�A����H�E����H�}����f�I�~pL��H���)E�H��I�T$(H��x���L��x���A�jj�c|^_H��x������L���-���H��p������M�������L�������L������l���fDI�~`H�پ��H���
�0�����H�]�H�5}��L��H�E��]���H������L�e�H�E�L��L��P������1ɀ�L������H�5ҚL�����I�~`H��P���L�����H���	H�E����H�}�����H�}����H�H��P�g���H��X���1�H�H��@���H�sH�L�,�H��(���M���p���M�eI�L$ �4�I�4$H���Q���H�N 1�M��H��H�sH9�(����4���I��H9�@���u�H��X���I�L$H�H�����H�� ���H9��������H�� ���H���
H�� ���L��H��H�E��x��H�5��L���������H�����H��teHDž ���H�����L��H��H�E��x�6H�5���L��蟼��H�� ��������H�� ���H��tH��P��������I�}�����/����H��P����H�5������-���H��8����-�@bof�HH�HH�6H�����XH��8���1�f�A���H�]�I�~`L�����H��	H��H�E�H���	H�E����H�}����H�}������v���I��I�v`A�L��H�O�	A����L��H�E��X��H�}��_���z���f.�I�~`L��H�ھ��H��	H�E�H���	H�E����H�}����H�}�����s����H�E�H�5-��L��H�E�H�� �����������H�����H��� ����G���fDH�A��H�=ݲ
�X�������H��8���A�-�@bgH�HfD�HH�6H�����XH��8���E1�fD�A����H�E�H�5}��L��H�E�H������V���H�����H9� ��������H�������H�H��R���H�����H���{���H��H��x���������H�����H���&����{���I�~`L��H�ھ��H���	H�E�H�{�	H�E��r��H�}����H�}��������H�����H�����H��H��p�������X�����H�������H��������H��������H�������H��������H���	����H�����I���
����I���7����H��H�������H���h����H���������K����H�������H��@���I�������H��H�������H���'����H���)����H���&����H�������H�������H���D���f.���UH��AWA��AVI��AUI��ATSH����T���dH�%(H�E�1������H���	H��`���H��p���I�v`H��`���A�A����H��H��@������A����W��T���Ic�ƅS���H��A9���f�M�eI�I�<$��I�~`�e��H��L���j���H�u�H�/�	I�~`H��H�U�H��H��X������H��H������H�}��@���I�MH�L�!L�e�M��tI�$L��PI�MH�H��H���L��X���A�L��H��PH��H�H������S���M��t
I�$L��PA��H��D9�T����'���H��@����;���H��`������H�E�dH+%(�f��S���H�Ę[A\A]A^A_]�H�I�	H��`����n���DH�u�H�E�I�~`H��H���H�^�	H��H��L�%�	���H�]�L�e�H��X������H�}�����H�}�����H�]�I�~`H�_�
H��X������H������H�}����H��	I�~`H��H��H���H�E����H���	H�E����H�}�賿��H�}�調��H�
��	I�v`H��H���H�M�A�H�ٺ��A�H��X����d���H�}�H��h����d���I�~`H�ھ��H��X���L�:�	L��h���L�U��
��H��h����.���H�}��%���I�~`H��H��X���L���	H�)�	���L�]�H��h�������H��h������H�}��߾��I�~`H��H��X���L���	L���	���L�U�L��h����~��H��h���袾��H�}�虾��H�r�	I�v`H��X���H��h���A�H�ٺ��A��W���H��h����[���H��X����϶��L��h���I�~`H��L��X���L�ÿ	���L�E�L������H��h�������H�}��
���I�~`L��H��L�
L�	H��	���L�M�H��h������H��h����Խ��H�}��˽��I�~`L��H��L���	L���	���L�U�L��h����n��H��h���蒽��H�}�艽��I�v`H��L��H�X�	A�A�H��h�������K���H��h����O���L���ǵ��H��H���軵���w����!�����H���0�����H���G�����H�������H��������H��������H���-�����H�������H�������H���	�����H�������H�������H��������H��������H�������H�������H���������UH��AWAVAUATSH��H��H�����������������dH�%(H�E�1�����*���tmL�����H�{`M�&���H��L�����I�H��PH��H�H�u�dH+4%(��	H��H��H��E1�L���[A\A]A^A_]���L�u�L�e�H�`���L�=��	H���	L��L��H�E�L����L�}�L������@��H�}�L�-E�	�`���H�}��W���H�s`L��L�m�H��P���A�A����H��L�����H��������H�}�����H�s`L��L�m�H��p���A�A����H��H������Ӻ��H�}��ں��H�{`L��L��H��	���H�E�H�y�	H�E����H�}�觺��H�}�螺��H�{`L��L��H���	���L�}�H�E��K��H�}��r���H�}��i���H���D�pA��D����H��@���I��E���`H�{`H�$�	L���H��@���H�E�����H�}�����L�����H�s`A�L�����A�L���L��L�u��ѹ��H�}��ع��H�{`L��H���	H��
���H�E����H�}�L��H���襹��H�{`L��L��H�D�	���H�E�H����H��H����H��H��H����l���H�}��c���H�s`L��L��A�A����L��H����,���H��H����0���L��許��L��蠱��H��@�������H�����舱��H�����|����������H�x�	L�e�H�{`���H�E�H���	L��H����H�E�H�E�H��H��������H�}�覸��H�}�蝸��A����H�5k�	H��P���H�u�A�H�����H�s`H��H����L���M���H�}��T���L���M���LD������������L��I�A)�L�pA���a���L��詾��H�����H���H�����L��p���H�����H�5ϊH�ފL��L������ø��H��������L�����H�����D��L��A��H��p���裷��H���������I��9������'Hc�����HDž(���H��H�� ����DH�{`L�=�	L���H��8���L�}��
��H�}��4���H�����H�s`A�H�����A�L���H�E����H�}����H�{`L��L���L�}����H�}�L��H����Զ��H�{`L��L��H�ӷ	���H�E�H����H��H����w���H��H���蛶��H�}�蒶��H����H���ω���������H��@���I������H�{`H�E�	L���H��@���H�E��
���H�}��4���H�s`L��L��H�����A�A����H��H������H��H������H�����E1�H�� ���L��0���H��HI��PH��H�H����L���@���H��@���贵��H������(���H��8���蜵��H���������I�EL��PH��(���H���H��(���������H�� ���I���9�������M��tI���(���L���P0H�����H�� ���HL�(L��0���M��t�I�EL��P���t@H��	H�{`L���H�����H�E�H���	H�E�謿��H�}��Ӵ��H�}��ʴ��H�����H�s`A�A�L���H�E�H��p���H��H�����聴��H�}�舴��H�����H�{`L�� ���L0�N���H��L���S���I��H�D�xA��
D�����H��8���H��E������fo��	I�6H�x@LcF���	K��AM����E1�D�yfF�G���@������9������_���fDH�����T���H�E�dH+%(�kH��[A\A]A^A_]���#H��I�xfA�pH���I�@HcFH�H��ucH��)f�A�H1�f�H����H���w���H��P �l���@H��L�����H���豪��L�����H���H������H��L����������H����{���L����������H���H���d���H�HH��H9�s
I�UH��H9�r_H�url(I�EH���A�#fE�}HcPL�<H��uL�A�)E1�fD�E�ufD�Y�8���H��H�pL�����H����H�ܢI�E��A�����H�������H�������H���+���H������H������H������H���.���H���E���H���Q���H���E���H���P���H���U���H������H������H���k���H���x���H���}���H������H���-���H���p���H���d���H���o���H���W���H���e���H���g���H��������UH��AWAVAUI��ATL��`���SH��H��X���H�2L��H�dH�%(H�]�H��PH��`����H���wH��輪��H��`���A��蝰��A�����H�=�
H��rH��t.H�H�˝
H��L��H��`����xtH�5����L���o���E1��Uf.�H��p���H�5b���L��HDžp����?���H��`���H��t�H��X���L��L���QA��H�H��PH�E�dH+%(��H�e�D��[A\A]A^A_]�H���ȷ��I��H���m���H��p����L��H��H��P���I���;���H��X������tL����������H��P������E1���uxH��x���H���c���H�WH�OH�H9��]H��
�8�=�G�P��W���&�����������H��~�H�=U�
訫���q���H��P����d������+H��P����?���H���w���H��tHH�=�
L�;�M��t2I�H��
L��L��H��`����x��H�5����L��蚤��H��P����ަ��L�3I��L��`���M��t	I�L���P�X�)���L��H��I��軭��H��X���H��L��h���H����^�H��L���(��L���۲���XL������M��t	I�L���PA��}���DH�3L��H��PH��`����'�#辭���>���f�L�����L��葤��I�f�L��)��������H�P1�H�����tH+H�J�H�rHH�H�P1�H�����tH+PH��H�R�H�HHHʿ�H������H�������2���H��P���f�L��I��H������ƅ����)������פ��H������H������L��L���N���L��h����A�EH��h���L���r���H��h���H��t
�ouH��PH�}�����L���X���fo�����1�L���(����/���H�� ���L���p���L���X���L�3L��`���M��t	I�L���P�X�6���L��H��I���ȫ��H��X���H��L��h���H����k�H��L��� &��L������XL������M��t	I�L���PL���Ű����������������f�H�H�
��H�GH�PH9��H�PH�
����H9����P���DH���'H�5(�諢��H��`���A���|���E�������L�;�[���H��M��t+I�L��L��H��`����x��H�5p���L���X���E1�I�H�
+�	L��L��HDž����H�����H�@(H�������H�5ߘ
H����H��L����L������H��`���ARH��h���L��L�
��L�3���L��H�������L���L��L���Š��H�����虪��H������AYL��H���AZ�NL��L��腡��H��P���L��薠��H��h���H��t=H�WH�OH�H9��)
H��
�8�	�G�P��W���H������H��tH��PI�L���P���H��p���L�=���L��HDžp���L��H��(�����H��X���H�@`��k�.H��(����2���H�3H��H������H��H���H��H��t$H�L��H��`����x�)L��L��芟��H��(���H��P����H�5����L��L��p���HDžp����W������I�L���PH��x���H������H�KH�SH�H9��!
H���
�8�
�C�P��S�������H��贾������������H��X�����H��X���H����H��{�H�=ޖ
�A�������H��(����������f��H�m{H�==�
����H�51�
�V���H��p���L��L��HDžp���H������H���H����������H��X������tPH�����H�
�	H�����L��H�H�@(H�������H��`����x��	L��L�����H�����躧��H�;��H��X���H�x`耩��H��H���ճ��H�3�H��H����A���H��H���H��H��t$H�L��H��`����x�~L��L���n���1�H��`���H��X���H�x`����H��L������H��`���I��H��tH��PI��p����H��X���L��H@H��H��H����ȠI�L��H��@���HDž`���H�0�h���H��`���H���q�H��@������H��`���蠦��H��H���L���q�H�0H�ǹH��w�Z���H������H��H������T���I�L�����H�P1�H�����tH+H�r�H�JHH�H�P1�H�����tH+PH�B�H�rHH�H��P���H����H�����q���H��H�� ���袨��H�����H�����E1�E1�H�����H������H��0���H��u-�7���ut{��xtvA�I��L9�����H�� ���L���(���I�Nj@=t
E��u�E1���I�G�P���J��u�H�x��H��x貥����u���@L�����L������L��`����A�GL��L��豫��H��`���H��t
�ouH��Pfo���1�L���(�������H�� ���L�����L��訜��H�;H������H������H��tH��P�X肝��H�����H��H��@���I���	���H��X���L������H��xH���H���H�����H���CH��X���L���M��u�fDM�mM���rI�EH��@���H��8���H��0���H��H���趦��H��u�H��0���H��8���H��H���薦��H��u�H��@���H������1�H��H����d���H��td�H��u�g��xuSH�xH������H��H������������H��8���H������1�H��H�������H��t�H��u����xt>1��QH��8���H������1�H��H����߯��H��t>�H��u����xu-1҉����H�xH������H��H���芤�������9�����L��@���L��轧��L��X��H������H��tH��PL��`����A�GH�����L���R���H��`���H��t
�ouH��PH������]�������fo���1�L����������H������L���P���L���8���L�+L��`���M��t
I�EL��P�X����H�����H��I��裡��H��X���H��L��h���H����F�H��L�����L���æ���XL�����M��t
I�EL��PH�����蛦��H�����H��P�O���H��@���H������H��H����O���H����1�H�����H��8���H������H��H���� �M���H�I��H��H���H�@H��H���������H�����H��8���A�L��H����V��%�������������H��@���H������H��H���詣��HDž���HDž8���H���,H��X���H��8���H��xL��M����M�(H������H��H���I�M�7I�uH������H�NH��X���1�M��H��H���H9�8��������I��H�����H9�u�H��H���H���I�UL����������L�����t�I�8�.��������ۣ������H�H�
���H�GH�PH9��uH�PH�
,���H9��Z�P���H��p���1�L��H��p���L��H��H����ٕ��H��H����a���H��@���H������1�H��H����1���H�����P��u����x��H�xH������H��H����ܠ��A��H��X���D��1�H�����H���H�����H��8����Q���H������H��H������H�x��H�Ar�m������G���I�G�P����������H�E1�H�
��L�CH�PH9��\H�PH�
�H��H9��>�P�Q�E1��?���1ɉ����H�pL��H������H��H���膡��L�����H�}���H���迠��L��������H����B���H�pL��H������H��H����B���L��誟��H�}�������{���L���á���}������������H��h���L��L�����H�������H������؝����H�����������
���H�pL��H������H��H���躠��L���"���H�}�A�����L���>����0������e�H��H�����H��H���H��s�������H���H������H�������H���2���H��������H���7���H���n����H���0���H���B���H���\���H������H������H�������H������������H�������H������������I�������H�������H�������H�������H�������H�������H��������9���H���F���H�������H���;���H�������H���H���H���n����H���#���H���R��������������H���!���H���L���@��UH��AWAVAUATSH��XH�}�H�u�dL�<%(L�}�I��H�E�I�?H��P(�E������E�1�L�e�L�u�L�-�����FH�}����`���H�u�H�}�L��� �E�H�}�H�E�H��tH��P��9]���I�7��L��H��P0H�5E�
H��t@H��H�M�L��L�
����AUH�U�L�A����,���ZL��YL���l����א���D�H�\mH�=�
�H���H�5�
���E�@H�}�H��tH��PH�E�dH+%(u�E�H�e�[A\A]A^A_]��:�����H�����ff.���UH��AWAVAUATSH��H��dL�<%(L�}�I��H��t	���uGH��hH���gH�U�dH+%(��
H��pH�ĈL��[A\A]A^A_]���H�G`��ht���k�E���t�H�E��H�5=�	H�E�H���E�#H��x���跠��L��8M����H��8H��H��h���H��H��`�����L��M��������Ɯ��H��M���*H�E�L��H�E�H��I�$�H�E��x��H�}�H�5���������~���H��M��tiE1�I�H�}�L���H�E��x�AH�}�H�5����詎��M��A��M��t
I�$L��PE��u!M�mM����L��8M�uM9��=������
���?H��h���H��`����+�I��I�GL�hI�EL������I�EL�����DI�EL����
t&I�EL��H�}������ӗ������fD�}�H�]��mH��x���H�����H��I�(H�����H��蔗��H�}�苗��ff.�H�E�dH+%(�oH�Ĉ[A\A]A^A_]�H�E�H�}�H�5y���H�E�H��p����U���H��p���I9�A��H�������H�H��R���H�}�H�55���L�e�H�E������誚��H��M���+���M��A���P���f��膚��H��M���m���H�E�H�E����DH��1�L��L��H��H��H��h�����H��tH�8�+�����Ƀ
���1I�G�E�E1�L�h�Q�������W���$�����`���2H�]�H��x���A�H�
�iH���4����E���L�%X�
L��蠑���������D�m���y���foA�	H�ieldH�P@H�$�
@fo0�	@H�H&H�
iH9�sH�H.H�iH9��H��	H�P.H�޲	H�P6�@L�5̂
H�=�\�@>eH��
L�����L��蟔��E���������L�%��
E1�L���ΐ����������.���I�|$�UM�t$M��u5���fDH�P��H�=�	�����t"M�6M�������I�F�xu�H�
ő	H9�u�H�5�_
L���фI��H�]�M�eM������H�E�H�E�H�E�H�M�A�H��H��x����PA�D$f�E��;���M�$$M��u����I�|$�bM�t$L��M����H�y�	L�k�&H�P��L���-�����tM�6M����I�F�xu�H9�u�H�5_
L����I�|$I����I�$H�-�
HcX��~%H�4Xf�H��H��H���XH�H9�u�H��1�I�t$L��I��M����M�I�JHM���+f�I�6H����H�NH1�M��H��I�t$I9���I��H9�u�H���
I�VL���
�p;ru�L��p���H9�t*H��H�x��L�U�L�M��%���L�M�L�U���L��p���u�I�9M���,L��L���
�H�xH�]��TM���(�������DI�|$��M�t$L���	M��u<���fDH�P��H�=��	薍��L��	��tM�6M���c���I�F�xu�L9�u�H�5�]
L���q�������AH�]�H��x���A�H�
�eH���C����T���I�\$H���YL�5a
f�I�H�S�p;ru H9���H��H�x�����������H�H��u�H�]����I�Y�<�K21�L��I�t$I�$L��I��M���z���M�I�JH�0�I�2H���^���H�NH1�M��H��I�t$I9��D���I��L9�u�I�B�xu�H�I�	L��h���L��p���H9�t8H�P��L�M�H�=%�	�(���L�M�L��p�����L��h����v���I�9�4�������H�0�	�H�H&ff.�ff.�f�H��H��H���X�H�H9�u�H��1�I�$I�t$L��I��M����M�(I�MH�#�I�uH��tdH�NH1�M��H��I�t$I9�uNI��H9�u�I�E�xu�H���	H9�t&H�P��L�E�H�=r�	�5���L�E���u�I�8����I�|$�OI�$E1�����I�o�`�[email protected]�L��I�t$I�$L��I��M������M�I�JH�3f.�I�2H�������H�NH1�M��H��I�t$I9������I��L9�u�I�B�xu�H���	L��h���L��p���H9�t8H�P��L�M�H�=]�	�`���L�M�L��p�����L��h����v���I�9��������H�]�H��x���A�H�
�bH���'����8���H�]�H��x���A�
H�
�bH����������H�]�H��x���A�H�
<bH���݌�����I�\$E1�H�������H�]�����fDfo�	@.����L��L���~H�PA�H��t<�B������A���NA�v���wf������f��DF�H�H��u�H�E�H�]�H��x���A�H�
zaH�ދP�*���E���&���L�e�1���E�L��H�E�L�e��ߓ��A�W4A�w0I�?�/����hf��h���莆��H��p���蒚��H��p���H��1��Q���H�U����I�ӺL��L�]�迗��H�U�D��h���H��p���I��H�u�H��`����L���A���H�E�L��PH��H�H���i���H�}�� ���A���xA��jA����A�H�}�D���$���D��h���H�u�D��H��p���H��`����Ҙ��H�E�H�}��PH��H�H�����H�}�A��謌��A��u�H�E�A�H��X���H�}�D���Y���D��h���H�u�D��H��p���H��`����g���H�E�D�@H�HH�E��PE������H��X���H�}�����H�}�A���.���A��
u�H�E�H��x����PH��H�H���L���H�}������3������A�� A��t<H�H��������B��������D��A��f���������f��B�A������A����H�]�����A�F����i������A��X�����H�U�I���X��������������H��H���C����H�������H�������H��������H���(�������fD��UH��AWAVAUATI��SH��(H�u��]x
���]M�t$L�-Qx
M����H�}�I�v�×L��H����zE�T$@H�xH��D����L�@E��1�L��I��H�L�<�I��H��M����I�H�U�D��H�H�+@H�8H����H�OI��1�H��I��I9��|H��L9�u�f;pu�I�?H�u�tLM�6M���P���H��([A\A]A^A_]ÐH�@H��u�DH�H��tf;xu���E��1�L��H�sH�ֿD�U�H�u�L�M�誂��D�U�H�U�H��H�u�A�H��I��H�fD�P�M�6M�������m���DH��v
H���)���������������foϦ	H�ieldH��\H��v
@fo��	@H�H&H�H.H9�sH�P@H�
�\H9�r[H�s�	H�P.H�p�	H�P6�@L�-nv
H�_s
�@>eL��H�=P�y���H���1������@H�u�����fo�	@.���H�������@��UH��AWAVAUATSH��8H�GH�u�H�E�H����H�w@HcVH�u�H��L�,V���ZH�E�H��L�e�H�E�ff.�H�u�H�}��3�H�5tS
H���TxE�D$H�xH����L�PE��1�L��I��H�L�<�I��H��M����I�H�H�$�H�8H����H�OI��1�H��I��I9�uH��I9�u�fD;@u�I�?tjI��M9��^���H�E�H�H�E�H���3���H��8[A\A]A^A_]�H�@H��tff.�@fD;@t�H�H��u�E��1�L��H�sH�ֿH�u�����H�u�L��H��I��H�A�D$A�L��fA�G�f��V���H�U�H�H�U�H��������^�����H���,��ff.����UH��AWAVAUATSH��8H�GH�u�H�E�H����H�w@HcVH�u�H��L�,V���ZH�E�H��L�e�H�E�ff.�H�u�H�}��c�H�5�Q
H���vE�D$H�xH����L�PE��1�L��I��H�L�<�I��H��M����I�H�H�$�H�8H����H�OI��1�H��I��I9�uH��I9�u�fD;@u�I�?tjI��M9��^���H�E�H�H�E�H���3���H��8[A\A]A^A_]�H�@H��tff.�@fD;@t�H�H��u�E��1�L��H�sH�ֿH�u��C~��H�u�L��H��I��H�A�D$A�L��fA�G薎�V���H�U�H�H�U�H��������^�����H���r��ff.����UH��AWAVAUATSH��H���H������H�sPH������dH�<%(H�}�H�������\H������H������H�����H��H�������{��H�����H��H��`���H���=|���H���p~��H������I�ǿH�ڂ	H����H����L�%e�������H��H������L��H�H������H���q���H���	H��H��0������H������H��@���H�����H��H��p���L��Dž8����*���H�5���H��DžX�����y���8�Gz��L��H��I���I���I�F(L��H�������H��q
H����H���L��H��H��L�5��	H��x���賏��L��L��`����T~��H������L��H�����H��p���Džh����}���H�5V���H���E��7y���ƅ�����Ɔ��L��H��H�H��`���H��H�������7���1�L��1�H���h��fo�`���H��p���H�����fo������H�����H��p���fH~�H��p���)�`���)�����H9��fL�=��	L��L�}��s}��H������L��H�}�H������E�袎��H�5{���H���E��\x��H������H�5^����Ix��H��`
H�0H���H�����L��0����L����L��H��H��X���躊�����J��L�m�I��0H�5���I�}��w��I�}���M9�u�L��贁��L��謁��H���H��tH��PH�=#�	莁��H����肁��H������H�HH�@H������L�pH������L�8�'o
���'�=�o
L�-o
��M��t.I�L��L��H��H�������x��H�5@���H���(w��E1�L������H������H��A��H������H��tH��PH������H��X���H��PL������1�L�����L�����L��L���h���H������1�L���W���H������L� �x��H��M��t,I�$L��H��H�������x�SH�5����H���tv��HDžp���f�H������L�(L������M��t
I�EL��P�X�x��H������H��I�����H������H������L�����H����#H��H������L��蠄���XL����w��M��t
I�EL��PH��p���H��tH��PH������(�H��`����u���H�������I���H������H��PH�E�dH+%(��H�e�[A\A]A^A_]�f.�H�5i��H��L�����HDž����?u������f.�L�����H�52��H��HDž���L��p����u��M�������H��p���H��L������H�
7�	HDž�H�L��H�@(H��`��������H��H�0H��~��H������PH��x���L�
�~��L���H������͉��H�5�~��H���~t��H��`����R~��H���Y_H������H�H�
v�	L��H��H�@(H��`�����H�5l
H���kH��H�8~��H������H������PH�����L�
~��L�T����?���H�5~��H��A����s��H��`����}��XH���ZE��t
�����NH���]���H��P�R���f�H�I\
H�0H���-
H�����H��}��躁������D��y��H�8H��p����܁���=�k
L��p�����I�;�`|����L�-�j
L����x��������1�H�����HDž��H�5�P謄���HDž��藀��f�1ɺ%H�H��x���H�5{d)�0���HDž@���H��(���HDž��R���H���L����~��H������1ɺ.H�5QdHDž`�������H��`����H��8����~��1�H�ߺ1H�5HdHDž�������H�������H��p����x~��H��(���1�1�H��H����E1�E1�ATH������jPjj�Gu��H������H��0�W}��H��0���軄��H��8���评��H��@���裄��H�����{����r��H�����H�H��H��p�����}��H�������_{��H��`����S{��H����G{��H�����;{��H��p���L��H�i
�z������H�����H��������D�yg
����H�rg
H�=�Y
H�0�y��H��Y
H�0���@H��N�H�=�h
�hw��H��h
�&���@�H�bH�=�h
�@w��H�5�h
�q���@��h
�
g
���H��WH��h���H��h���H��x���1ɺ!L��@���HDž���HDž����H���1�H�������H�5iIHDž`���H��0���貁��1ɺ%H��H�5�aHDž����葁��ATH�����1�jL��`���E1�H��jH�������jH��p����˂��H��p���H�� �{��H�������y��H��`����sy��H����gy��H�����	H�5�HHDž��I��1�L��L��P������H������1ɺ H�5paHDž���Ѐ���-iH��h���1��~����!H��x���Dž0���f��H������HDž��8����}���H���1�H������H�5HHDž`���H��(�����J���1ɺ.H��H�5a`HDž�����)���L��(���E1�1�ARL��`����L��H���H������jH��p���ATj�_���H��p���H�� �y��H�������x��H��`����x��H����w��H������w��H������w��H��P���1ɺ	H�5=GHDž���~��H������1ɺ H�5�_HDž���Y����gH��h���1��~����!H��x���Dž0���f��H������HDž��8������H���1�H�������H�5�FHDž`���H��(�����~��1ɺ1H��H�5_HDž�����~��E1�1ҾL��H���L��`���H������ARjATL��p���jL������H�� L���@x��H�������v��H��`����v��H����v��H�����v��H�����tv��H�������u��L��@����$���@H�H�
t	H��H������H��H�@(H��`�����H������E1�x�H�5Iv��H���1l��H��`����v��H���H�
�s	H��H������H�H�@(H��`�����H������H������@����
�r
����E1�uD�"H�5�u��H���k��H��`����u��H���H�
�r	H��H������H�H�@(H��`�����H������H������@���d
�����J
��u�A	�H�5Zu��H���Bk��H��`����u��E��H�����D 舅h����Z
H��tH��PH��������k��H�������w��H������H���wE1�E1�H������L���Q���I�Nj@��u����x��ш�������E��uk��uI�GH��P�����H����u��A��H������H���H���H��u�W�H�H���DD;huh����AD������H������I��I9��E�����h�����L������H������L�(L������M��t
I�EL��P�X�l��L��H��I���9s��H������H������L�����H�����rH��H����L���Ux���XL���k��M��t
I�EL��PH�������-x��H��p�������_
��t^H��_
H�=�Q
H�0��q��H��Q
H�0���L�%�_
L���n���������D���L��H�z_
�Ur�����D�"�?���H�X_
H���n����t�����H��H�E_
� r���v���=��������h��������L�������A�GH������H���$y��H������H���[����o�P���H��P�E���fDH���H��1�D��H��H���L��I��M��tCI��HD9�t"H�0H��t0�NI��1҉�H��I9�uH��D9�u�I�:����ff.��A�GL����f�۾
L��)����H���)������`q��H������1��Rq����H�����u����xu
�AoG`)�����H������L��H���ot��H������H������H������Ei��L���=i��A�G��u����x�������=~��H��P���H��x���H��H��H��H����}r���X��i��H��I���g��H��H���H�����@H������L���w��H����H��t
�ouH��Pfo�����H������1�AF(�Rp��H������I�~ �m��H�������vh��H������E��1�L��L���I��H���L��H��M����I��HD9�t*H�8H�����OI��1҉�I��H9��yH��D9�u�I�H���eH�xH��L�0H�����H��P�����t��H��P����X�h����h��������H������H�x`�q��H������H���k��I��A�G��u����x�HHDž(���HDž ���HDž8���HDž0���H��p���H�
΅	H��x���H��H�H�@(H�����H������H������@���j����+������H���H�5Bo��H���*e��H����n��H��p���H�
0�	H��H��x���H�H�@(H�����H������H������@�����f�����������@���H�5�n��H���d��H����n��H������L��0H��(H��P���M���H�����L��M��I���f�I�FM��H��t*I��H�I�~ �J�wH��H���z����y�I�FH��u�I��H�����L9�P�����I�W I�>�J�wH��H���Yz������H�� ���E�o(D��H��x���I�G0H��(���I�G8H��0���I�G@H��8���I�GHHc�H���I�GPHc�@���I�GXI��PH��H�H���=���H��HDž�����zv��H����LH��A��VH���f��H������D�pA��D����l��I��E���.H�������o���(�z��I��L��L�������~u��E1�1�1�H��L���m��H�������`o��L�������A�FH������H���Ts��H������H��t
�ouH��PL���#o��H����l���a���f�H��H���o��H����m��H����A���n��H���p������L�������S���I�ϐ�`L������e��I�>I��H�x � g��H������f�I�GXH�����AG(I�W AG8H�� AGH�sI��H���[H9�P���t	H�����H��P���L��L���u��H������H��H����fD�X�x��H��P���H��x���H��H��H��H����^w���L���f�I�GpH�� ���I�GxH��(���I���H��0���I���H��8������f�I�G8H�� ���I�G@H��(���I�GHH��0���I�GPH��8����s����H������foi�	A�E I�}AELcxM����E�uC�D=����H��P����lt��H������H��������f�I� H��P����pj��L���`�sb��L��P�������Dž@���������������@������DDžH���������������H������D���H�������f����@����G���f����@����7���f����H������f��H��H���L��P����b��H��@���H��H��P���A�H�H��H���D�hH�@H������H����$l�:���H�=�U
L��p����d��H�
}FL��p�����H��h������H������1ɺ!H�5RFL��P���HDž`�����p���HDž�����l��E1�E1��H�H��`���H���g��H���Yj��H�������-h����C_��H��`����H�H��H��p����k��H��`����h��H��p���H�=U
H�U
��g��L��P����������"�D"���E1����D�"��H�pL���_���e���Dž@����y���DžH������H������8A������A	����A	���D�"�+�H�R I�G L������J�pH�xH���1t��L�������������H��tH��PH�������y^��H�������-j��H������H������p��Sb����I���ӭ����H�������H�������H��镮����H���q�����H��頮����H���ڭ����H��顮����H��颮����H��������H��颮����I��������H���b�����H��鳭����H��鿭����H��鿭�����C�����H���)�����H��醭����I�������H��鸯����H��釯����H��������H���������d�����I���>�����H��������H��鴬����H�������H���o�����H��鐬����H���H�����H��������H���k�����H���t�����H��鋯������UH��AWAVAUATSH��H��hdH�%(H�E�1����tPH���H;���lH�>tH�������H�U�dH+%(��H�e�[A\A]A^A_]�L��PH��XL)�H������D�x�H�E�E1�H�E�I���fDL��PI��M�M�4$M��t[I�L���PH��8L��8H��tH��PL��H�����M�4$M��t%I�L��L�u��PH�U�L��H������I�L���PM9�u�L���H���L)�H�����
�����E1�H��H�E�H�E�H�E��l@H�}�H�5md���XZ��E1�M�<$L�}�M���I�L���PH�U�L��H���\��I�L���PM��t	I�L���PL9m������L���I��M�M�4$M��t�迲��H�}�L��H��I��H�E��x�j���L�u�H�}�H�5�c��H�E��Y��M���U���I�L�}�H�E�L��L���PH�}�H�
�m	H�u�H�H�@(H�M���H�}�������Jc��H�}�H��tH��P�����tlI�H�
�m	L��L��H�}�H�@(H�M������H��H�0H�M�H�}�H�)c��L�
c��PH�U�L�Vj���An��H�}�H�5c����X��H�}���b��^_H�u�H�������H�H�
�l	H�}�L��H�@(H�M���H�5�P
H����H��H�M�H��b��L�
�b��PH�U�L��i��H�}���m��H�}�H�5�b��A���pX��H�}��Gb��ZYE��t�E���uqH�}�H�������H��PM�<$L�}�M����H�U�L��H���V������1����f��H�\IH�=�O
�^��H�5�O
�>���@L��H�������\����H��馫����H��邫����H��������H���˫����H���ϫ����H���ë����H��釫����H���ѫ����H���ū��f.���UH��AWAVAUATSH��H���H+��dH�%(H�]�H��H���G|����L������Gx��h����֯��M���U	H��I�L�e�L��L��H�E��x�5H�5�`��L����V���{x��ƃ�E1�1�1�Džp���Džt������D��p���H�ߋ�t���u
�������H�������t8���t
����5	H���H���f5��H���n���A�ń��E1�M��t	I�L���PH�E�dH+%(��
H�e�D��[A\A]A^A_]�DH���E1�H���!���H��P(�������M���^
I�L�e�L�u�L��H�
�u	L��L��H�@(H�M���H�E�H�U��@���b�<���K���:�L�-�_��L�牅t���L���_U��H�}��6_��I�H�
lu	L��L��L��H�@(H�M���H�E�H�U��@���������������L��L�p����T��H�}���^��������-SOH�TOE1�L�5�^��H�E�H��x�����`�����X����f.�H��H�M�H�}�L�
�^��AVH�U�L��e���i��YL��^L����tAH�}�t:�cT��H�u�H�u��&���H�u�H��H��t!H�L��H�E�L��L��x��)T��H�}�H��tH��PA��H���H��P(A9���H���L�e�H�E�D��L��H��P0H�5
L
H���1����H�]0H�=�K
�IZ��H�5�K
�
���DH�5�]��L��L�}�H�E��S���Cx�������H���H�������1����f.��������fD����w������L�-I]��L��L���.S��H�}��]��Džt������fD��x���f.�Mz���e�f.%kMz����x���f�f/��5f/-MM�������e�f�f/���f/%'M��������X����\�x���f��f/��6f/�LDžt�������q��`����\E�f��f/���f/�LDžp������������X3L�,���p����r���@H�E�H�E�H�E��Q��f�H�}�)E������H�u�H�
�q	H�U�L��H�H�M��P(H�5�I
H����H��H�M�H�}�L�
�[��AVH�U�L��b����f��L��L�爅o����Q��H�}��][��X��o���Z��u H�}�H��P�8����1�1������U��E�f�f����x���f.=�K�*��*�zf(�tf(��]�x���f(��_�X���f(��e�f.%yKzf(�tf(��]e�f(��_�`���f(�U�f�f�E��*�f.
>K�*��}���x���z
��X���t$��x���f(��_��]���X�����x���f.�Jz�]���`������]�f(��_��]���`����M�����D�����������DH���H�PH��H��;�j���f�H�E�)E�H����H��H��I���R��J� H�E�H��f�H��H�U�H)ƃ�tH�@H9�tfDH�� @�H9�u�H���H�U�H�PH��t<H�E�E1�H�E�D��H�rH�U�L�e�H��H��F��H�U�H�H��t
H�M�A���ϿXL�e��R��H�s`L��H��I���0tL�sh� ��Q��H�ShH�s`H��I���OqH�C`L�sp��h�
��k����tH�Cpƀ���u.H��XH��PH9�tH)�H��P1�H��H���H��2�����h���H���1�H��������t
�����L�cXM��tL����P���L���GP��H�CXL�e�H�]�I9�t;f�L�sM��tL����\���XL���P��H�;H��t:H�H���PI9�u�H�]�H������H�u�H��H)���O�����f.�H��I9�u���D�H��(H�=�E
�HT��H�5�E
��@�{x����H���H�����������f���n������^����L��L���UM��H�}��,W��Džp����M���D���������H���.��H���0������H�E�1�H�E��X����H�{h�g�H�C`���fDH���e��H�����H���
��H������H�{pH����x�H���������� Gf(�f/���\�F�,������
�Ff/����\fF�,���p��������
�Ff/����\6F�,���t���������Ff(�f/�s_�\5F�,��Y����X�E�,���t����x�����E�X��,��-�����E�X��,���H���T���*���������Džt�����(���Džp�����������1���p�����t����j����%P����H���A�����H��������鹟����H��鷟����H�������H��韟����H�������H��������UH��AUATSH��H��(dL�$%(L�e�I���a��I�<$��L��H�}�I���=)��L�e�M����I�D$I�|$H�}�PI�$L��PH�}����8�0M��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����J��H���H�U�L��H��I���P���L���X]��H�{`L�c`H��tH�H��T��H�@H9��4��K��H���L� M��t
I�$L��PH���L���H��tH��PH���E�A��L�kpM��tL���Qn� L���tK��H�{`H�CpH�C`H��tH�H�T��H�@H9����OK��L�khM��tL���n�XL���!K��L���H�ChM��tL���5x���8L���J��Hǃ�H�}�H��tH��P�@E1�H�E�dH+%(u-H��(D��[A\A]]�����j���f��������tM����H��餝���������H��龝����H������fD��UH��AWAVAUL������ATSH��H���dL�$%(L�e�I���	_���@�L��H������V��I�<$��H���H9�������gH��L��H��I���9]��L���1[��I���I���H��0����PH��0���H��0���H��H�����H������5&��L��0���M����I�GI�H��(����PI�L���PH��0���H��tH��PH��(����RH�=?
L�����M��t:I�H�����H��>
L���H��0����x��H�����H�5Q���G��ƃ��8�I��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����G��H�����H���I��H��(���H��L��H������ĺ��L����Y��H�{`L�{`H��tH�H�Q��H�@H9����SH��H���L���H�����L9�t0f�I�?tH�{`��Q��H��L���6\��I��L9����u�H��XL��PH�����L9�t6ff.�@I�?tH�{`�Q��H��L����[��I��L9����u�H���L�8M����I�L���PH���L���H����H��PH�����E1�ff.�@H�{pH��tH������jH������ �*G��H�{`H�CpH�C`H��tH�H��O��H�@H9����G��H�{hH��tH������PjH������X��F��H���H�ChH��tH�������s��H������8�F��H��(���ƃ�Hǃ�H��tH��PL���F��E���9L���qJ��H�����L��H������[J��L������@�H�����D�������'R������sL���"J��L�����J��H�������1���R������H��������U��1�L���R��H���������R����H�����H�����1�H�e	H��H��(�����F��H��(����P��H�����L��H����V��H����D����h�����x���?u	A9��tH������Z��H������[S��ff.�E1�L���ES��H�E�dH+%(�H���D��[A\A]A^A_]�DL���E���fDHDž(����n����H����s��H���;H�@p1�H���H��H��H������(M���o��H�
Y���H���H��H��x�h�o�x���
�A��H�����H�������H�����H���Q��H��0���H��8���H��H9�u�`H��H9��SH�H���H9�xu�H��H9��u��o�h���H�������G��H�E�H�����H�������G���E�H������������gX��H�`*
H�3H���d������H�����L��K��H������4T�����"���I�<$H�����H��PH��0����(��H������^Q������f�L��@���H�����H�5;K��HDž@����A��M���������I�L���P���DH���Hǃ�H���W����f����H���g���H��@���H)��B���S���H�93�H�=e8
�(G���N���H���(�A��� ������t���f�������f�H�3H��t5H��0���H�ZJ���uN��������M��H��H�0�H��H�3������M��H��H�0�H��H�3���D���������������H���	�����H��驖����H���=�����鬕�����ԕ����H���ە�������������I���%�����H���I�����H���������l�����H��雖����H��醖������UH���H��AWAVAUATSH��HL�6dL�$%(L�e�I��H�E�H��'
H�E�Ic^H�0H���>H�}�1�L�I��H�
�H���%G�������������H�[I��E1�H��L��!���tN��
tq����I��0L9��I�>�G��u�H���H�5N�?�����HI�>�G��u�H���H�5P�X?�����hI�>�G��
u�H���
H�51�0?�����I�>�G���l���H���H�5�?�����O���H�56
M��$�H����H��I�VI�NL��H��G��L�
�G��I��0PL�O���R��XZL9�����ff.�A��$�H�u�L��uA��$������M��t
I�EL��P0H�}�H��tH��PH�E�dH+%(��H�e؉�[A\A]A^A_]�fDH�5A5
H����H��I�NI�VH�}�H�G��L�RN��PL�
�F���5R��_AX�@���DL�}�H�E�L���4D��I�F�x��H�}�H�M��
L��A�H�E��M��L�}�H�E�M��tI�EL��P0H�}�H��tH��P0H�}�H��tH��PM��t7�8��<��L��H��I����Q��L��I��(�O��H�}�L�m�H��tH��PH�}�M���F���p���DH��$
H�0H����H��H�
F��I�NI�VPH�}�L�
�E��L�/M���Q��Y^�&����[��L���fD�2
����H�
2
H�=C$
H�0�D��H�4$
H�0���@�H�4H�=�3
�B��H�5�3
�D���@��1
����H��1
H�=�#
H�0�C��H��#
H�0�'���@A��$�H�u�L����A��$�tw�������H��-H�=3
�pA��H�5�2
��I�FL��H�0�A�����L�-1
L���A@�����������s��L��H��0
��C�������������L�=�0
L���@���������s��L��H��0
�C�������_��������?����H��靑����H���}�����H��鿑����H���m�����H���|����������ɑ�����UH��AWAVL�5�C��AUATSH��H�����H�6dH�%(H�E�1�H�E�H�����H��H��P HDž ������H��H�0H�M��AVH�U�H�� ���L�
pC��L��J���N��H�� ���AXAYH���lH�H�
VZ	L�m�L��H�@ H�M���H�}����)�C��H�� ������H��H��t$H�H��L��H�E��x��L��L����8��E1�I�H��p���L��L��H��Y	H�����H��HDž(���H�@(H��p�����H�5i0
H����H��H�M�H��(���L�
�B��AVH�U�L��I��H��L��P����M��L��L���c8��H��p����7B��YL��^H���:9��H�����I�HDž0������H�@(�tH��X	H��p���H�����L��L���H�5�/
H����H��H�M�H��0���L�
�A��AVH�U�L�$I��H��H������M��L��L���7��H��p����A��H��0���XZ�NH��`���H�����H��H�������q8��H������L���b?�����*H�����L���8��H�;H��8���H��tH��P1�L���@��L��H���H�����L���VB��H��@���H�����H���@B��H���F��H��L��L���zJ��H��H����H����8��L���8��L���8��1�L���J@��H�����H����A��H������oG��H�U�H��L��L��H�E��iC��H��H����H������C8��L���;8��H�����H����g��H����H�@pH����H��H��H�������|8���������tH������1��7���X�6��H����H����H�����H����fHn���)E�H��t����H�DB�H�H�����H�E�H����H��t��H�����H�DA�H�H�����H������L��H�E�H������N9��H�������C��H�����H���sK��H��@���H������0���H�����H��H���.���H�L��H�E��x�
���H�E�L��L��H�E�H������5��H�����H��,
H�H�@ H���H��uH���H�=�,
�p;��H��,
H��8���L��H�
�>����J��H��U	L��L��H��H���H�����H�����H��H����s>��L��L���4���SK��H��L���'H�����H���H��tH��PH�}�H�����H��H���H��P8H�����H��PH��@���H��tH��PH������E�����������oD��=���H�� ���H��tH��PH�����L����3��H�E�dH+%(��H�e؉�[A\A]A^A_]ÐH�
T	H��p������D1�H��8���H��tH��PH��x���H��t=H�WH�OH�H9��eH��
�8�-�G�P��W����H��h���H��t=H�WH�OH�H9��TH��
�8���G�P��W���zH��0���H��tH��PH��X���H��t=H�WH�OH�H9��)H�B
�8��G�P��W���H��(���H��tH��PI�L���P����L��L��L�}�H�E��Y2���k���@1��i���f�L���xH��H����������fH��9�������H������H������W3��H���������H��H�=�)
�p8��H�5�)
����@�H��H�=})
�H8��H�5q)
����@����������f.�H�H�
v;��H�GH�PH9�uH�PH�
�;��H9�u%�P����DH�������H�����H��������f���������'���f������������f�H������1��2����DH�H�
�:��H�GH�PH9���H�PH�
�:��H9�uk�P����H�H�
�:��H�GH�PH9�umH�PH�
�:��H9�uV�P���D�CP�����fD�3P���|���fD�#P���#���������H�������H�����H��f������F���H�������H�����H��{�����4����H��������H���2�����H��������H��韈����H�������H��龇����H�������H�������H���	�����H���
�����H�����韈����H������I���͈����H�������H�������H���z�����H�������H��采��f.�D���f.�����f.�����f.�����f.����1��f���H�?�8��@��UH��AVAUATI��SH��H��dL�,%(L�m�I���&
��t<H��%
I��H��L��L���D��H�E�dH+%(u@H��L��[A\A]A^]�DL�5�%
L����3����t�H�V#
L��H��%
�w7����3����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���_%
��t;H�\%
I��H��L��L����C��H�E�dH+%(u?H��L��[A\A]A^]�@L�5%
L���A3����t�H��"
L��H�%
��6����`2����UH��AVAUATI��SH�^�H��dL�,%(L�m�I����$
��t;H��$
I��H��L��L���SC��H�E�dH+%(u?H��L��[A\A]A^]�@L�5y$
L���2����t�H�"
L��H�d$
�76����1����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���$
��t;H�$
I��H��L��L���B��H�E�dH+%(u?H��L��[A\A]A^]�@L�5�#
L���2����t�H�v!
L��H��#
�5���� 1����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���#
��t;H�|#
I��H��L��L���B��H�E�dH+%(u?H��L��[A\A]A^]�@L�59#
L���a1����t�H�� 
L��H�$#
�4����0����UH��AVAUATI��SH�^�H��dL�,%(L�m�I����"
��t;H��"
I��H��L��L���sA��H�E�dH+%(u?H��L��[A\A]A^]�@L�5�"
L���0����t�H�6 
L��H��"
�W4�����/����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���?"
��t;H�<"
I��H��L��L����@��H�E�dH+%(u?H��L��[A\A]A^]�@L�5�!
L���!0����t�H��
L��H��!
�3����@/����H�=�"
H��"
t�f.�UH��H��H����0��H�y"
]�f.�D��UH��ATL�%�
SH��I�4$H��t"H��L��3��1�1��<��H��[A\]����v7��L��H�0�K2��I�4$��D��UH��ATL�%_
SH��I�4$H��t"H��L��3��1�1��?<��H��[A\]����7��L��H�0��1��I�4$��D��UH��ATSH��dH�%(H�]�H���� 
��t.H�5� 
H���7��H�E�dH+%(u;H��H��[A\]�@L�%a 
L���.����t�H��
L��H�L 
�2����-�����UH��ATSH��dH�%(H�]�H���
 
��t.H�5 
H���w6��H�E�dH+%(u;H��H��[A\]�@L�%�
L���-����t�H�n
L��H��
�1����-�����UH��AWAVAUATSH��dH�%(H�E�1���
��t>�=W 
H��
�jH�E�dH+%(�"H�e�H��[A\A]A^A_]�DH�i
H���Q-����t�1�L�}�L�e��!H�5�H��x���HDžx����09���L�m�H�E��5��1ɺ-L��H�H�5vH�E�H�E�H�E���8��H�U�L���3��H��H�E�E1�ATH��x���E1�1�j1�L��Pjj�b*��H��0L���v2��H�}���9��H�}��D0����Z'��H��x����H�H��I���3��H�}��0��H��x����0��H��L�%U
��/���=�
H�B
�����@��,��H�8I����4���=�
tI�<$�~/���o���f���
��
����L�}�L�m�L�5S
���3��H��`���1ɺ
H�53HDžX���HDž`����7��H��h���1ɺH�5HDžh����|7���1��~�h���H��p����f�E�H�5��`����E�E�HDžp����47��1�L���!H��x���HDžx����7��1�L���~�p���H�5��H�E�L��X����x���)E���6��1�L���-H�5:H�E��6��H�E�L�M�E1�PH�E�H�M�1�j�L��Pj�8��H�� L���Y0��H�}��.��H�}��.��H��x����.��H��p����.��H��h����.��H��`����.��H��X�����-������fDH�=
L�}��*��L�m�L�5����2���1�L���!L��H�E���5���H�E���1��H�U�E1�E1�H��L���,��L���/��H�}��f-����|$��H�U��H�H��H��H����=0��H�}���-��H��H���H�=N
H�O
�
-������(�����ou
H��`�����UH��ATSL�gH��M��tL���12���XL���d%��H�;H��tH�[A\]H�@���[A\]���UH��SH�H��H��u
H�H�]���H���$��H��H�H�]���f.����H��(t�f�UH��AUATSH��H��L�%�
I�4$H��t H�;H��H��,��[A\A]]�0����
��tH�
L��H�0�#+��I�4$�DL�-�
L���(����t��[��L��H��
�+���f.�f.�f.����UH��AWAVAUI��ATI��SH��8H�H�H�H�H�H�HcPH�FH�Hc@L�t\D���$��I�EE��uH��8[A\A]A^A_]��I�$H��H�xM�L$H�L�BH�L�xH�L�RH�HH�H�0HcFH�H����L�$H�DH�y(H�tXH9�sAH9�s<1�ff.�ff.�@f�<fA�<DH��H��(u��vf.��of��fo�fd�fo�f`�fh�@�oAfd�fo�f`�fh�f��P @0�~A H�DHfd�fo�f`�f`�fp�Nf�f�@I�J	H�DjH9�svI9�sqfA�
fA�L$PfA�JfA�L$RfA�JfA�L$TfA�JfA�L$VfA�JfA�L$XfA�JfA�L$ZfA�JfA�L$\fA�JfA�L$^fA�J�7f.��A~f��fd�fo�f`�f`�fp�Nf�f�FfA�JfA�L$`H���I9�s0I�O)H9�s'1�DfA�fA�TDbH��H��)u��D�Aof��fo�fd�fo�f`�fh�@�AoGfd�fo�f`�fh�f��P @0�A~G H���fd�fo�f`�f`�fp�Nf�f�@fA�G(fA��$�fA�I�1I��$�fA��$�fA�@fA��$�HcFH�H��ujI�ED�p1�fA���H��8[A\A]A^A_]��H��H�M�L�U�L�E�L�M�H�U��S ��H�M�L�U�L�E�L�M�H��H�U��/����H��H���$ ���f���UH��AWAVH��h���AUATSH��H���dL�$%(L�e�I��H�H��H��(���I�4$H��P L��h���H��L�m�1�H��L��H��@���I�L�r�(H�E���/��H�E�L��L��H��0���L��H��A��H�=�
H�E���H��t7H�H�}�H��
H��H��P����H�E�H��P����xt}H�5�'������E1�H�;H��tH��PH�}�L�+H��tH��PH�}��'��H��h���H��tH��PH�;�	H�E�dH+%(��H���H��[A\A]A^A_]ÐH�5i'��L�m�H�E��H���u���H���H�=�
H��P����#��H��P�������H�}�H��tH��PH�}���&��H��h���H���=L��L��H��H�M�fIn�fHn�H�;fHn�fHn�H��p���H�N�L��`���fHn�fHn�fIn�fl�fl�fl��@���H���`H����)����)�0���)�@���)�P�������I���x"��L��1ɺ*I��H�5d1�H��`�����-��L��(���1�fo����fo�0���H�E�H�u�L�m�fo�@���L��H�E�fo�P���H��h���)�p���)U�)M�)E��{���L��L��L��L��h����&;���<���N��L���%��H��`����x%��H�E�dH+%(��P ����!��H��0���1ɺ*H�M�H�5�1�I����,��H�E�D�xA��ZD�����H�E�I��E����H�u�L��L���:���+<���M��L����$��H�}���$��H�E�dH+%(�m���H�5k
H��*��L���<%����I��I��������I��I�������H�
�
H��L�m�H��H��@������H�E�I�}HcPH�p�8���1�H��@���f�f�PH��H��(u�1�H�
��f�4f�tPPH��H��	u�1�H��
f�4
f�tHbH��H��)u�E�}fǀ����K��H�E�dH+%(������C(����I���L����#��H��`�����#��L���~)���)'��H�;H��tH��PH�E�dH+%(�3���L���$��H��P���I������I�����I��L���h#��H�}��_#��L���)���H�5�
H�G)��L���#����I���Y������K���f.�f.�fD��UH��AWAVI��AUI��ATSH��8H�H�H�H�H�H�HcPH�FH�Hc@L�|BD���g��I�E��uH��8[A\A]A^A_]�I�UI��H�XM�MH�L�BH�L�hH�L�RH�HH�H�0HcFH�H���QI�DH�yH�I�t>H9�s#H9�s1�@f�<f�<CH��H��u��i�of��fd�fo�f`�fh�f��@�~AI�D(fd�fo�f`�f`�fp�Nf�f�@f�Af�C0f�Af�C2f�Af�C4I�J	I�DPH9�sdI9�s_fA�
f�K6fA�Jf�K8fA�Jf�K:fA�Jf�K<fA�Jf�K>fA�Jf�K@fA�Jf�KBfA�Jf�KDfA�J�5��A~f��fd�fo�f`�f`�fp�Nf�f�FfA�Jf�KFI���I9�s2I�MH9�s)1��fA�Tf�TCHH��H��u��~��AoEf��fd�fo�f`�fh�f��@�A~EI�Dpfd�fo�f`�f`�fp�Nf�f�@fA�Ef�CxfA�Ef�CzfA�Ef�C|fA�Ef�C~fA�I�1H���f���fA�@f���HcFL�$H��ujI�D�x1�fB��#�H��8[A\A]A^A_]�f�H��H��H�M�L�U�L�E�L�M�H�U����H�M�L�U�L�E�L�M�H�U��v����H��L���T���f���UH��AWAVH��h���AUATSH��H���dL�$%(L�e�I��H�H��H��(���I�4$H��P L��h���H���L�m�1�H��L��H��@���I�L�r�H�E��	'��H�E�L��L��H��0���L��H��A��H�=O
H�E���H��t7H�H�}�H�2
H��H��P����H�E�H��P����xt}H�5�����E1�H�;H��tH��PH�}�L�+H��tH��PH�}����H��h���H��tH��PH�;�	H�E�dH+%(��H���H��[A\A]A^A_]ÐH�5���L�m�H�E��x���u���H����H�=e
H��P�������H��P�������H�}�H��tH��PH�}��
��H��h���H���=L��L��H���H�M�fIn�fHn�H�Z�fHn�fHn�H��p���H�~�L��`���fHn�fHn�fIn�fl�fl�fl��@���H���`H����)����)�0���)�@���)�P�������I�����L��1ɺ*I��H�5��1�H��`����$��L��(���1�fo����fo�0���H�E�H�u�L�m�fo�@���L��H�E�fo�P���H��h���)�p���)U�)M�)E�����L��L��L��L��h����V2����3���NE��L�����H��`������H�E�dH+%(���������H��0���1ɺ*H�M�H�5��1�I���#$��H�E�D�xA��@D������H�E�I��E����H�u�L��L���1���[3���D��L�����H�}����H�E�dH+%(�m���H�5��	H��!��L���l����I��I��������I��I�������H�
&�H��L�m�H��H��@������H�E�I�}HcPH�p�h�1�H��@���f�f�PH��H��u�1�H�
.�f�4f�tP6H��H��	u�1�H���f�4
f�tHHH��H��u�E�}fǀ����{��H�E�dH+%(������s����I���L�����H��`������L��� ���Y��H�;H��tH��PH�E�dH+%(�3���L�����H��P���I������I�����I��L�����H�}����L���G ���H�5�	H�w ��L��������I���Y������K���f.���UH��AWAVAUI��ATI��SH��8H�H�H�H�H�H�HcPH�FH�Hc@L�tKD�����I�EE��uH��8[A\A]A^A_]��I�$H��H�xM�L$H�L�BH�L�xH�L�RH�HH�H�0HcFH�H����L�$H�DH�y$H�tPH9�sAH9�s<1�ff.�ff.�@f�<fA�<DH��H��$u��vf.��of��fo�fd�fo�f`�fh�@�oAfd�fo�f`�fh�f��P @0fnA H�DHfd�fo�f`�f`�fp�Af~ f~@I�J	H�DbH9�svI9�sqfA�
fA�L$HfA�JfA�L$JfA�JfA�L$LfA�JfA�L$NfA�JfA�L$PfA�JfA�L$RfA�JfA�L$TfA�JfA�L$VfA�J�7f.��A~f��fd�fo�f`�f`�fp�Nf�f�FfA�JfA�L$XH���I9�s0I�OH9�s'1�DfA�fA�TDZH��H��u��D�Aof��fd�fo�f`�fh�f��@�A~GH���fd�fo�f`�f`�fp�Nf�f�@fA�GfA��$�fA�GfA��$�fA�GfA��$�fA�GfA��$�fA�I�1I��$�fA��$�fA�@fA��$�HcFH�H��ugI�ED�p1�fA���H��8[A\A]A^A_]�DH��H�M�L�U�L�E�L�M�H�U��k��H�M�L�U�L�E�L�M�H��H�U��'����H��H���<���f.���UH��AWAVH��h���AUATSH��H���dL�$%(L�e�I��H�H��H��(���I�4$H��P L��h���H�L�m�1�H��L��H��@���I�L�r�$H�E�����H�E�L��L��H��0���L��H��A��H�=_
H�E���H��t7H�H�}�H�B
H��H��P����H�E�H��P����xt}H�5�������E1�H�;H��tH��PH�}�L�+H��tH��PH�}����H��h���H��tH��PH�;�	H�E�dH+%(��H���H��[A\A]A^A_]ÐH�5y��L�m�H�E��X���u���H����H�=u
H��P������H��P�������H�}�H��tH��PH�}�����H��h���H���=L��L��H���H�M�fIn�fHn�H�\�fHn�fHn�H��p���H�^�L��`���fHn�fHn�fIn�fl�fl�fl��@���H���`H����)����)�0���)�@���)�P�������I�����L��1ɺ*I��H�5t�1�H��`�������L��(���1�fo����fo�0���H�E�H�u�L�m�fo�@���L��H�E�fo�P���H��h���)�p���)U�)M�)E��k���L��L��L��L��h����6)����*���.<��L�����H��`������H�E�dH+%(��`������H��0���1ɺ*H�M�H�5��1�I�����H�E�D�xA��ID������H�E�I��E����H�u�L��L���(���;*���;��L�����H�}����H�E�dH+%(�m���H�5{�	H����L���L����I��I��������I��I�������H�
c�H��L�m�H��H��@������H�E�I�}HcPH�p�H�1�H��@���f�f�PH��H��$u�1�H�
�f�4f�tPHH��H��	u�1�H���f�4
f�tHZH��H��u�E�}fǀ����[	��H�E�dH+%(������S����I���L������H��`�������L������9��H�;H��tH��PH�E�dH+%(�3���L�����H��P���I������I�����I��L���x��H�}��o��L���'���H�5��	H�W��L��������I���Y������K���f.���UH��AUI��ATSH��H�_H��u�(�L��H�{L�#H��tH��P�H�����M��u�I�EI�}1�I��0H�����I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]���fDH��[A\A]]�f.���UH��AVI��AUATSL�oH�I9�t:f�L�cM��tL������XL���R��H�;H��t2H�H���PI9�u�I�H��t+I�vH��H)�[A\A]A^]���@H��I9�u���D[A\A]A^]�f.�f.�f.����UH��AWAVI��AUATSH��H��H�Lc@E��~2J�@ff.�f.�K��H��I��D�@I�H9�u�L��1�H�sH�L�<�I��L�,�M����M�'I�L$H�*f�I�4$H��twH�NH1�M��H��H�sI9�ubI��L9�u�I�>I�T$�w;ru�L�M�H9�tH��H����L�E��
��L�E�L�Mȅ�u�I�H��tH��H��[A\A]A^A_]���PL�E����I�>H�I��H�xM�t$@�	��M�t$f�H�SI�D$@H�sH�{ �I�D$L�{(I�D$0�?I�D$8AD$ �z����L�E�uBL�3M�M�D$HI�EH���H�I�$I�EL� H�CH��I�D$[A\A]A^A_]�I��H���H��H��<�H��L�E�H��H�U����H�U�1�H��I������L�E�L�S0H�sH�CE1�H�{H��t,H��1�H�6H�AHI��I��L�M��tRI�H�H�H�H��u�H�;H�sL9�tH��L�E��h��L�E�L��1�L�kI��L�3L�,�����L�[L�H�KH�8H�9tK��I���n���H�CL�cI�$H��tH�@H1�H�sM�$�H�CI�E����I��=t�9
��L�S0H�C0M�������p����I��L�{(I�|$ H��tH�����H����I�D$I�|$1�H�����I�|$1�I�t$I�D$(I�D$ I9�uI�|$�[��L��P�^��L���F
��H���M����f.����UH��AWAVAUATSH��H��HH�dL�<%(L�}�I����L�gM���������H��H���JH�L�u�H��L���H�E��x��H�5���L��������\��H��M��t_1�I�EL��L���H�E��xtlH�5���L�����H��A��H��t	H�H��PE��uM�$$M����M�l$I�I9��M���H�E�dH+%(��H��HL��[A\A]A^A_]�H�E�H�55��L��H�E�H�E����H�E�H9�A��H���w���H�H��R�i����H�5�
��L��H�]�H�E�������c��H��M������H��A���%�����>��H��M���=���L�u�����f�E1��#����I�1�H�E�H�wH�L�,�H�U�M��t�M�eI�L$ �*�I�4$H��t�H�N 1�M��H��H�sH9U�u�I��H9M�u�I�D$M�7H�E�L�u�L9�����
��H��M���H�u�L�u�L��H��H�E��xtH�5�	��L�������V
��H�}�H��tNH�E�H�u�L��H��H�E��xt~H�5�	��L������H�}�A��H�}�H��tH��PE������M�e����DH�E�H�5U	��L��H�E�H�E��1��������H�}�H���u�����H�E�L��H�5	��H�E�H�E���H�M�H�E�H9�A��H���c���H�H��R�U�����a��H�}�H���U���L�u�����H�}�uYL��I��ttH�E�dH+%(tt�V����I��I������I��I��H��t	H�H��PL��I��u�����������H�}�H��P���H��I������H��I����Q����l����������f���UH��AWAVI��L��AUATI��SH��H� H��H�W�L�H�u�H�w�������uBL�;L�M�M�fK��H�H����H�I�H�L�0H�CH��L��[A\A]A^A_]�@I��H���H��H��<�H��H��H�U��"��H�U�1�H��I���a��L�K0H�sH�CE1�H�{H��t,H��1�H�6H�AI��I��L�M��tzI�H�H�H�H��u�H�;H�sL9�t	H�����L��1�L�kI��L�;M�fI��K��H�H������H�CI�L�sI�H��tH�@1�H�sM�4�H�CH�����L�SL�H�KH�8H�9tK��I���F���L�K0H�C0M������@I��=t��������H��L�{(�(�����U1�H��AWAVAUATI��SH��HH�u�dL�,%(L�m�L�.L��H�wH�L�4�H�U�M���wI�H�K�0fDH�3H���\H�N1�I��H��I�t$H9U��AH��I9�u�H�}�H�CL�?H�E�L9�����7	��H��M����H�E�L��H�E�H��I��H�E��x��H�}�H�5o���Z��������H�}�H��tME1�H�u�H�}�H��H�E��x�H�}�H�5-������M���E�M��t	I�L���P�}�����I�H��tqH��H�U�dH+%(�HH��H[A\A]A^A_]�H�}�H�5���L�}�H�E������B��H�}�H���Q���M���E��w����� �6���H�H��H�E�H�8H�{H��tH��PH�CH�{���H�u�H��L��A�L�������7����H�E�H�}�H�5!��H�E�H�E�����H�E�L9��E�H������H�H��R����fD��n��H�}�H������H�E�H�E��p�������� H�����H�E�dH+%(tG�]�����H������H�U�I��M��t	I�L���PH�E�L��H�����������c��������I�����H��H������H���@H�{���H�{H��tH��P� H����H�E�dH+%(�^���L�������3��H��H�E�dH+%(�;������H�E�dH+%(t��"���@��UH��AWAVI��L��AUATI��SH��H� H��H�W�L�H�u�H�w��
����uBL�;L�M�M�f K��H�H����H�I�H�L�0H�CH��L��[A\A]A^A_]�@I��H���H��H��<�H��H��H�U�����H�U�1�H��I������L�K0H�sH�CE1�H�{H��t,H��1�H�6H�A I��I��L�M��tzI�H�H�H�H��u�H�;H�sL9�t	H�����L��1�L�kI��L�;M�f I��K��H�H������H�CI�L�sI�H��tH�@ 1�H�sM�4�H�CH�����L�SL�H�KH�8H�9tK��I���F���L�K0H�C0M������@I��=t�=��������H��L�{(�������U1�H��AWAVAUATI��SH��HH�u�dL�,%(L�m�L�.L��H�wH�L�4�H�U�M���wI�H�K �0fDH�3H���\H�N 1�I��H��I�t$H9U��AH��L9�u�H�}�H�CL�?H�E�L9��������H��M����H�E�L��H�E�H��I��H�E��x��H�}�H�5���������H�}�H��tME1�H�u�H�}�H��H�E��x��H�}�H�5������M���E�M��t	I�L���P�}�����I�H��tqH��H�U�dH+%(�8H��H[A\A]A^A_]�H�}�H�5m���L�}�H�E��L��������H�}�H���Q���M���E��w�����(����H�H��H�E�H�8H�{H��tH��Pf�H�u�H��L��CA�L���&����@����H�E�H�}�H�5���H�E�H�E���H�E�L9��E�H�����H�H��R����fD����H�}�H������H�E�H�E��������(H���A���H�E�dH+%(tG�
�����H������H�U�I��M��t	I�L���PH�E�L��H�����5����P���s����6����I�����H��H������H���@H�{�/��H�{H��tH��P�(H�����H�E�dH+%(�^���L���x�������H��H�E�dH+%(�;����X���H�E�dH+%(t��"���@��UH��AWAVAUI��ATI��L��SH��H� H��H�w�L�H�U�H�W��6����u:L�;K��H�H����H�I�$H�L� H�CH��L��[A\A]A^A_]�I��H����H��H��<�L�,�L���~���L��1�H��I�����L�K0H�sH�CE1�H�{H��t+H��1�H�6�AI��I��L�M��txI�H�H�H�H��u�H�;H�sL9�t	H���B�H�E�1�L�sL�;I��I��K��H�H��� ���H�CI�$L�cI�$H��t
�@1�H�sM�$�H�CH�����L�SL�H�KH�8H�9tK��I���I���L�K0H�C0M���"���@I��=t����H���H��L�{(������UH��AWAVAUATSH��HH�U�H�M�dH�%(H�E�H�L�,�M���nI�]I��I��H�KH�/fDH�3H���LH�NH1�I��H��I�t$I9��2H��H9M�u�H�}�H�CL�?H�E�L9�������H��M���KH�E�L��H�E�H��I��H�E��x��H�}�H�5�������X���H�}�H��tNE1�H�u�H�}�H��H�E��x��H�}�H�5������M���E�M��t	I�L���P�}������H�E�dH+%(��H��HL��[A\A]A^A_]�H�}�H�5=���L�}�H�E������H�}�H���Y���M���E��E1��H�E�H�}�H�5�H�E�H�E����H�E�L9��E�H���C���H�H��R�5���fD��>���H�}�H���0���H�E�H�E�����M��uNH�E�L��H��t-H�E�dH+%(t-�-���H��H������H�U�I����o�����������I�L���P�D��UH��AUI��ATSH��H��L�gM��u�I�D$H��tFI��I�T$ I�}�J�wH��H���/����y�I�D$H��u�L9ctSL��L���`���I���L��I�UI�|$ �J�wH��H��������x1�H��L��H��[A\A]]�f�E1���L��E1���L�gL9cu���@��UH�GH��AVAUI��ATI��SH9���H�V I�}H��J�wH��H���p����y\I�D$H��H9�t?H�����I�UH�x I�ƋJH���wH���9������I�~H��H����[A\A]A^]��I�UH�{ �J�wH��H�����1҉�H�؅�y�I�L$ H9���H������I�}H�P I�ƋwH���JH�������yCH�{L��L��u�1�H���{���H�(t"H�G H�H�x �JH���wH���s����x[L��L��A\A]A^]����@I�T$ 1��,���@1�H������fD1�L������f.�@��UH��AWAVI��L��AUATI��SH��H� H��H�W�L�H�u�H�w������uBL�;L�M�M�fK��H�H����H�I�H�L�0H�CH��L��[A\A]A^A_]�@I��H���H��H��<�H��H��H�U����H�U�1�H��I����L�K0H�sH�CE1�H�{H��t,H��1�H�6H�AI��I��L�M��tzI�H�H�H�H��u�H�;H�sL9�t	H����L��1�L�kI��L�;M�fI��K��H�H������H�CI�L�sI�H��tH�@1�H�sM�4�H�CH�����L�SL�H�KH�8H�9tK��I���F���L�K0H�C0M������@I��=t�M�����H��L�{(�������UH��AWAVI��L��AUATI��SH��H� H��H�W�L�H�u�H�w�������uBL�;L�M�M�fK��H�H����H�I�H�L�0H�CH��L��[A\A]A^A_]�@I��H���H��H��<�H��H��H�U���H�U�1�H��I���A�L�K0H�sH�CE1�H�{H��t,H��1�H�6H�AI��I��L�M��tzI�H�H�H�H��u�H�;H�sL9�t	H�����L��1�L�kI��L�;M�fI��K��H�H������H�CI�L�sI�H��tH�@1�H�sM�4�H�CH�����L�SL�H�KH�8H�9tK��I���F���L�K0H�C0M������@I��=t�}������H��L�{(�����U1�H��AWAVAUATSH��H��XH�u�dL�,%(L�m�L�.L��H�wH��H�U�H�E�H�L�4�M���kM�&I�L$H�+�I�4$H���SH�NH1�M��H��H�sH9U��9I��I9�u�H�}�I�D$L�?H�E�L9��������H��M���"H�E�L��H�E�H��I��H�E��x��H�}�H�5F��1������H�}�H��tME1�H�u�H�}�H��H�E��x��H�}�H�5����M���E�M��t	I�L���P�}�����I�H��thH��H�U�dH+%(��H��X[A\A]A^A_]�f�H�}�H�5��L�}�H�E��������H�}�H���R���M���E��x����P��H�I��H�E�H�8I�|$H��tH��PM�t$@H�C(I�D$@f�M�t$H�SH�{ �I�D$H�sI�D$0�?I�D$8AD$ H�E�������I��H����H��H��<��H��H��H�U��i�H�U�1�H��I����L�S0H�sH�CE1�H�{H��t0H��1�H�6H�AHI��I��L�M����I�H�H�H�H��u�H�;H�sL9�t	H���'�L��1�L�{I��L�3H��H�E��Uf.�H�E�H�}�H�5�H�E�H�E����H�E�L9��E�H����H�H��R���fDL�3H�M�M�l$HL�H�H��tAH�I�$H�L� H�CI�D$����DL�[L�H�KH�8H�9tK��I�����H�CL�cI�$H��tH�@H1�H�sM�$�H�CH�������H�}�H���X���H�E�H�E�����I��=t(H�E�dH+%(uN�A�L�S0H�C0M���Y���H�E�dH+%(u&�i����PL����H�E�dH+%(tG����H������H�U�I��M��t	I�L���PH�E�L��H����������������I�����H��H������H���bH�E�I�|$H�C(���I�|$I�t$I9�t	H����I�|$H��tH��P�PL����H�E�dH+%(�<���L������7�H��H�E�dH+%(������H�E�dH+%(t��������������H��H�����H��@������H��8������H��0�����H��(�����H�� ���f.�f�UH��AWAVAUATSH��8H�}�H���
H�E�H�@H�E�H����H�E�H�@H�E�H����H�E�H�@H�E�H���JH�E�L�`M����M�l$M��t{I�]H����L�sM����M�~M��t0I��\���M��M�I�y L�M��X�H�}��(�Z�M��u�I�~ M�~�8��(L���;�M����M���I�|$ I�\$���(L����H��t3I���R���@I�} I�]����(L�����H��t�I���1���L�u�I�~ I�^���(L����H��t=H�]����DH�SH�{ H�U����(H����H�U�H��t�H������L�}�I� I�_�X��(L���[�H��t	H�]��u���L�u�I�~ I�^�,��(L���/�H��t	H�]��4���L�}�I� I�_���(L����H��t	H�]���H��8[A\A]A^A_]�fDUH��AWAVAUATSH��HH�}�H����H�E�H�@H�E�H���H�E�H�@H�E�H���H�E�H�XH����L�cM����M�l$M���$M�uM���kM�~M���I�GH����H�xH�E��X���H�E�H��H�@H�Q8H��tP@H�zH�M�H�E�H�U����H�U�I��H�RI�x H�U����H�}��(���H�U�H�E�H�M�H��u��XH��H�E����H�E�H���q���I�GH�E�I�G8H��t<H�xH�E��x���H�E�H��H�@H�z H�E��p�H�}��(�r�H�E�H��uľXL���\�H�}��L�}����M�t$8M�l$M��t+I�~M���
���I� M�v���(L����M��uվXL����M��tcM���z���M�}8M�uM��t0I����L��M�H�x H�E���H�}��(��M��uоXL����M���Y���M���-���L�k8L�cM��t+I�}M���`���I�~ M�m�c��(L���f�M��uվXH���T�M��tqL������I�FM�~8H�E�M��t0I�����L��M�H�z H�U���H�}��(��M��uоXL������H�}���L�u�����H�E�H�X8L�`H��t+H�{I�����I�} H�[���(L�����H��u�H�}��X���M��t	L�e����H�E�H�X8L�`H��t+H�{I���I���I�} H�[�L��(L���O��H��u�H�}ȾX�<��M��t	L�e����H�E�H�X8L�`H��t+H�{I����I�} H�[����(L�����H��u�H�}��X����M��t	L�e�����H��H[A\A]A^A_]ÐfDH����UH��AWAVI��AUATSH��I�~����L��L�u�M�vL�`8M��t^fDI�|$M�����I�]8M�d$H��t+H�{I���9���I� H�[�<��(L���?��H��uվXL���-��M��u�H�}ȾX���M���n���H��[A\A]A^A_]�ÐUH��AWAVAUATSH��(H�}�H����H�]�H�{����H�KL�k8H�]�H�M�M����ff.��I�}���L��L�m�M�mH�X8H��tWH�{I�����M�|$8H�[M��t+I�M���M���I�~ M��P��(L���S��M��uվXL���A��H��u�H�}ȾX�.��M���u���H�]�H�{ ���XH�����H�}�����H��([A\A]A^A_]Ð���oH�GH�7H�G H�G(H�BG8f��GH�GH�G0H�GHH�B�GPÐff.���UH��AWAVI��AUATSH��(L�o@H�_8I9�tHff.�L�cM��tL�����XL���B��H�;H���&H�H���PI9�u�I�^8H��tI�vHH��H)����I�FH�E�H����H�]�H�{��H�KL�c8H�]�H�M�M����I�|$����L��L�e�M�d$H�X8H��tVH�{I������M�w8H�[M��t+I�~M���t���I�} M�v�w��(L���z��M��uվXL���h��H��u�H�}ȾX�U��M���t���H�]�H�{ �/��XH���2��H�}��)���H��([A\A]A^A_]��H��I9����������ff.���UH��AWAVI���AUI��ATL����SL��H��dH�%(H�]�H����L��L��H�������f�H�����
-�L��)� ���fHn�fl�)�0���������H�;��jH�� ���E1�1�jA�����H��L��jjjj��H��0��uLE1�E1������1�H��L���H��H�����H��t����H�TP�H��0���f�HDž8������)� ���L�����I�}H�پ��H�z	L��H������k�H�������H��0���I�]1�H=���tH+� ���H�P�H�pHH�L��@����
L����L��L��L�������‰E�HDž�����L��L�����H�o	H��H���������H������H�����H��������1�L��H���zH����@��uvI�uA�L��L��H�o�A����H��������H��������L�����H�����L��� ��H�E�dH+%(ukH�e�[A\A]A^A_]�f�I�}H��L��H��H�������H������2��W���DH���H�5��3�����������������H���/����H���/����H����/����H����/����H���u/���@��UH��ATI��H��SH�������B�H�TAH��f�8;tH��H9�u�f.�H)���H��H�H9��s/��H�H�����A�D$P��uH��[A\]�f�H�3�	H�ͳH���	�H��[A\]Ð1����I���H/����UH��AWAVAUI��H��ATSH��HdH�%(H�]�H�����I��H����������1�E�A�H��1���H�}��;H�E���I�6��1�E1��o�H�U�M�}�I�EH�U�H�E�M���(I���I�GH��t1M��H�U�I��I� �JH���wH������y�I�GH��u�M��L9}���I�W H�}��J�wH��H��������M�O0I�G8M��H����ff.�f�D9` |H�PI��H��tH��D9` }�H�@H��u�M9���E9e ��I�E8M�}0M��H��t;f�;X H�PI��H��tH��;X ~�H�@H��u�M9�tA9\$ ��X�4���X I��H�@0�H�@I�F@I�FHI�FPM9���A9\$ |�6M9eH�<L����H��9X ��M�e8M���;ff.�A�D$ 9�}I�D$H����I��A�D$ 9�|�I�T$H���cI����f.�I�u@I9��]L��H�u��W��H�u�9X �PH�x�L���H��L��L��M���O�I�EPH�}��A��I�D$(H�U�dH+%(��H��H[A\A]A^A_]�f.��XL�M�����I�ƋE�L�M�A�F0A�F I�F0I�F8I�F@I�FHI�FPM9��E9e �-�M9oH�\L��L�M��Q�L�M�D9` ��M�o8M����fDA�E D9�~I�EH���QI��A�E D9��I�UH����I����@I��D�XM�����I��H�E�H�}�H�E�I�G ���M�O0L��I�W A�G0I�}I�G8M�O@M�OHI�GPL�M���I��H��tWH��L�M�u~H9U�txH�B I�O D�P�qH�yH�PD���)�L�M������SfD�E�A�����fDI�8H�E����I� �j��L���X�m��L�}��S���@�H�M�L��L��L�M��8�I�E0L�M��-���M�e8M��u"�Nff.��I�D$H���}I��A�T$ 9�|�I�D$H��u�L��9���1�����XL�������}���L��D9��Yff.�1�����XL���������I�O@L9�H�M�t)L��L�M��G��L�M�H�M�D9` �9H�x���L��L��L��M���D�I�GP���f.�I�}Pt	I�uH9^ |?M�e8M��u��f�I�D$H���I��A�T$ 9�|�I�D$H��u�L��9������I9��s���I��1�A;\$ L��@���]���DI�Pt
M�oHE9e |HM�o8M��u�rf�I�EH����I��A�U A9�|�I�EH��u�L��D9������I�ͿM9������1�E9e @�����I�|$�f��������M�o8M��u#�aff.�I�EH����I��A�U D9��I�EH��u��{���M9e@tVL�����L��P I�����M9o@�d���L��L�M����L��L�M��P I���:���I�}�I���I�ſ�8���L�����L9������L���D��L��P I���}���L9�u����I�����H���k���L��9��a����[���M��M;}@�L���L����M;O@tiM���V���M9o@�����L��L�M�����L��L�M�H�‹@ I���*���M9e@�W���L�����L��H�‹@ I���M��I9��F������I9�u�M���V���M��M;}@u��s���M��M;O@u��������H����&��fD��UH��AWAVAUATSH��H��P���dH�<%(H�}ȿ�*���1�1�H��H��X���H�����1�H�����H��P���H�u�L�e�H�u�H��X���H�P8H�@@H��pH��x���H��@���H��H���H9�u.�-ff.�f�H��x���H��x���H9�@����H��x���H�@H��p���H��t�H��X�������|��H��p����0��H��`���E1�H����ff.�f�H�}�H�E�����H��p���L�����H�Nj@��r�9����p�Z��q�9H�w �G\�WX�N9�O�L��H�E����H�}�H�E�H�E�����H�}��w���H��H���H��P������H�}�I������H�}��=L��h����!��H��L��h������H�ǾL��h����^��H�E�H�E�E1�H�E�H�E�H�E�H�E�L��h����H��
�~A9�~yH�}�H��D��D���E�A�A�H��u�H�M�H�u��PA��H�u�XL��D��Z��H�E�)����H�E�H�u�L��H�E��
H�}�����H�E�D;x|�H�}�H��tH��PH�}����I��L9�`����I���H��X�������������s��H�w0H�}��������DH�}��G��t���L��h���H�_L�|G
H�E�H�E�f.��H�u�L��H�E�f�E����L��L����H�}�H�����I9�u��,���fDH�w �G0�W,�N9�O������H�H��X����P���fDH�w �G,�W(�N9�O�����H��X���H�HP�H���Z��H��X���H�HP�H���ju&H�E�dH+%(u5H�H�@H�e�[A\A]A^A_]��H�E�dH+%(uH�e�[A\A]A^A_]��)����H���"����H��H�E�H��h�����"����H��H�E�H��h����"����H����"����H���}"����H����"����H���n"���ff.���UH��AWAVAUATSH��dH�%(H�E�H���hu/H�E�dH+%(�H�Ĩ[A\A]A^A_]�f.�H��I���E�H�x(H��P���t�H��L���H�3A�H���H������A�L���H��H��@������H���L��@�������H�[��
L���H��p���L��h������L��HDžx����E���H��x���H��H��H��������x���1�1�H��I������H������L��H��H��`����{��L��`���fo��L��L��)���j���L���]��1�L������L��L�����L�����L��L���E���CPH��h����
�p�sP�+��L��p����E�����H�;H���L��L���H������H������H�;L���H��H���H���H����g��H������H�3L���H���A�A�H���H�����H��H��8����@��H���L�������=��H������HDž����H��H��X������L��HDž�������H��`����
��1Ƀ��
H��X����H�5�����H��`����N��1ɺ����H�5j�L���p��H�L��H��0������H�H��L��PH��H�H��H����H�
��L���������H��0���H������L��L���%��H�������I��H����=��H�;L���H��H���H���H�������H������H�;L���H��X���H���H������H�������H�;L��L��H�[����H������H������H�L��L��H��X����	��L��h���������
L�����L��L��L��h����‰E�L������HDž�������H�
��L��H��X���H���������L�����H�������%��H���������L�����H�L��L��H��X����l�������H��h����
���H��h���L��HDž�����‰E��&��H�
��L��H��X���H���������L���q��H���������H���������L�����H�3L���H���A�A�L��H�������D��H�������H��L�����H��
H��h����H��X�������H��h���L��HDž��‰E��a��H�
J�L��H��X���H���������L�����H����������H�������f�L��L����)��fHn�fl�)�������H�1�L��L��H��h����"eH�
3�H��h���L���H������L���-��H�������Q��H����E��H�3L���H�#�A�A�L��H���������H���������L�����L�����H��P���L�pL�hM9�t'�I�V L��H�����L�����I��I9�u�H���������H���������H��8������H��`������I�H�x�L��B��I�Lx��A�ou	I�L���PH��x����^��H��p����R��H��@�����������H��p���L��L��X���B��A�����H��p���HcM�L��X���HcPH��H�|PH�	uN1�f�OD�p�����H��X����H�5�������H�5l�L���y������@H��h���L��8���H��X�������L��8���H��X���H��H��p����{����d����H���|����H�������H���p����H�������H�������H�������H���7����H���Q����H���0����H���O����H���w����H���K����H���<����H���`����H���j����H�������H�������H�������H�������H�������H��������H�����ff.����UH��AWAVAUATSH��H��HH�}�dH�%(H�E�1���H�K H��H��H�M�H�E�H9���L�e�H�E�L�h@H��0H�E�L9����I�]@M�u0I9�taH�E�L�x ff.�L������L��L�����A�u L��豿���s L������H�}�L������L�����H������H��I9�u�L������I��H9E�u�H�}����H�E�H9E��J���H�E�dH+%(uH��H[A\A]A^A_]��'����H���]��f.�����ou
H��`�����UH��AVATSH��H�H�H��tPH�I��H�x�H����H�HX��kt@I�<$H��t'H�Hx��ouH�H�@H��[A\A^]��fDH��[A\A^]�DH�H��P���I��H�HX�H���?���I�$H��tH�HB�H���'���L���?��f.�D��UH��AWI��AVAUATL�gSH��H��L�oM��u��I�EH��t7I��I�U I�?�J�wH��H���Z�����I�EH��u�M��� �L9k��L��M���{��I��I�I�} �J�wH��H�����1Ʌ�~J�E�M9�u}�(�R���L��I��I�I�I�E �����}�L��L��L���H��H�C(�H��L����[A\A]A^A_]�f�M���M��L9g�U����E�M���I�V I��J�pH��H�x�e���������E��Y���D��UH��AUI��ATSH��H��L�gM��u�I�D$H��tFI��I�T$ I�}�J�wH��H�������y�I�D$H��u�L9ctSL��L���0��I���L��I�UI�|$ �J�wH��H�������x1�H��L��H��[A\A]]�f�E1���L��E1���L�gL9cu���@��UH�GH��AVAUI��ATI��SH9���H�V I�}H��J�wH��H���@����y\I�D$H��H9�t?H���w���I�UH�x I�ƋJH���wH���	������I�~H��H����[A\A]A^]��I�UH�{ �J�wH��H������1҉�H�؅�y�I�L$ H9���H������I�}H�P I�ƋwH���JH�������yCH�{L��L��u�1�H���{���H�(t"H�G H�H�x �JH���wH���C����x[L��L��A\A]A^]����@I�T$ 1��,���@1�H������fD1�L������f.�f.�f.�f.�fD��H�u�H��H��ff.���H��0�ӻ���f���UH��H��ATSH��L�%[�	dH�%(H�]�H��H�E�I�4$H��tFH�U�L������H�����������H�}����H�E�dH+%(u)H��H��[A\]�f���V��L��H�0�+���I�4$��p���U1ɺ H�5)�H��AWAVH�����AUATSH��dH�%(H�E�1�HDž������H�����1ɺH�5��HDž�������H����1ɺH�5k�HDž�����H����1ɺH�5�HDž�����H���1ɺH�5ǏHDž��d��H������1ɺH�5ӔHDž�����?��H�����1ɺH�5ďHDž�������۬	����L�$�L�����L�� ���H��(���L��@���L��1ɺ L��HDž�������1ɺL��H�5?�HDž ������1�H��H���1ҹH�E�M��HDžD����H��H��Dž@���Dž`����~����H������E��E�HDž(�������H����~������h����~���������E��~����� ���E����H�����H��(���芾���蠵��H������H�H��H���b���H�� ������H������ھ��H������ξ��H�������¾��H���趾��H����誾��H����螾��H�����蒾��H�����膾��H�E�dH+%(��H��H��[A\A]A^A_]�fDL�=٪	L������������L��H�����1ɺ L��L�����L������L�� ���H��(���L��@���HDž������1ɺL��H�5��HDž���HDž������1ɺ
L��H�����H�5ٌHDž ���H��@����[��1ɺH��H�� ���H�5��HDž(���H��H����,��M��1�H��(���H�����L��0���H�����H�����H��P���H�Q�Dž8���H��0����k���H�����蟾��H������s����艳��H������H�H��H������G���H��(����˼��H�� ���迼��H�����購��H�����觼��H�����L��H�&�	��L�������]����p�����H���H��H��ff.��������fD��UH��	H��AUATSH��H��H�H��~��	fHn�H��0H�G0fl�H�G@G �(t5H�{8H��tH��PH���	H��H��H�H��[A\A]]����fDL�%��	I�4$H��tH�{@H��������fD��	��tH��	L��H�0�+���I�4$��DL�-�	L���!�����t����L��H�ާ	蹺��뺐fD��UH��	H��AUATSH��H��H�H��~��	fHn�H��0H�G0fl�H�G@G �(t=H�{8H��tH��PH���	H��H��H�� ���H��H��[A\A]]鞾��fDL�%��	I�4$H��tH�{@H�ݺ������fD��	��tH��	L��H�0�#���I�4$��DL�-�	L��������t����L��H�֦	豹���ff.�@��UH�$�H��ATSH��L�%{�	dH�%(H�]�H��H�E�I�4$H��tFH�U�L�����H��������:��H�}��ݹ��H�E�dH+%(u)H��H��[A\]�f���v���L��H�0�K���I�4$�萴��U�
H��AWAVH�E�AUI��ATL��0���SH��dH�%(H�]�H���7H��H�����臾��A�u�
L��E��r���A�u�
L����L�t����S���Hc�t���HcUĉ�$���H�L�tI�D��蠱��I��E��u8H�;L�;���H�E�dH+%(�H��[A\A]A^A_]��H�xH���H9�s I�WH��H9�sH�\�I�G�fDH�rgb(I�GHc�$���H�H����Hc�t���H�A�,fD�L�GL�,H��uUK�(�,f�0H�xHcE�L�$H��u J�'�)1�f�E�wf�H����DH�����L��聯��H����@L��L��L���j���I���DL��H������Q���H�����H���T���譲���ff.��U1ɺ)H�5!�H��AWAVH��x���AUATSH��dH�%(H�E�1�HDžx����(���H�E����	���	�=j�	H��	�mH�1�H�}��<L�e�H�5l�H�E�H�E�H�]�H�E��Ǿ��H�U��L���f���H��H�E�E1�ATH��x���E1�1�j1�H��Pjj�<���H��0H���P���H�}�跿��H�}�������4���H��x����H�H��H�����H�}��}���H��x����q���H�E�dH+%(�VH�e�H��[A\A]A^A_]�@H��	H����������1�H�}�L�u��%H�E�H�5ÔL�m��ʽ���L�e�H�E�费��f�1�L��H��5)E�L�u�H�5��H�E�H�E�能��H�U��L���"���1ɺ2L��H�5��H�E��T���H�U�H�}����H��H�E�E1�AVH�u�E1�1�j1�L��Pjj�ˮ��H��0L���߶��H�}��F���H�}��=���H�}�褴���身��H�U��H�H��I������H�}�����H�}����H�}���H��L�%��	�E����=��	H��	�������K���H�8I���P����=٢	tI�<$�޳���l���f����	�*�	����L�u�L�m�L���L�]�L��1ɺ!L��L��X���L�}�L��`���H�E�H�E�����H�E�1�L���H�5��H�E�H�E��ݻ��1�L��5H�5�H�E�迻��H�E�L�M�1�PH�M�A�
�H��h���L��jjj����H�� L���T���H�}�軳��H�}�貳��H�}�詳��H��X���1�H��`����!H�E��G���H�U�1�L��H�5�H�E�H�U���!���1�L��2H�5`�H�E�����L�M�H�M�1�H��h���A��L��Pjjj�H���H�� L��蜴��H�}�����H�}����H�}���H�}��X����,���L�=q�	L�u�L��L�m��y���L������?���L��1ɺ!L��L��`���H�E��Y����H�E��G���H�U�E1�E1�H��L������L�����H�}��̱������H�U��H�H��H��h���裴��H�}��*���H��h���L��H���	�t���L��`����������H������UH��AWAVAUATSH��dH�%(H�E�1����	��tB�=s�	L�5�	�H�E�dH+%(�H�e�L��[A\A]A^A_]�f�H���	H���!�����t�1�L�u�L�m��H�5��H��p���HDžp��������L�e�HDžx������f�1�H�}�H��5)E�H�5��H�E�H�E�H�E�豸��H�U�L����P���1ɺ/L��H�5��H�E�肸��H�U�H�}��� ���1�L��8H�5��H�E�L��x����K���H�U�H�}�����H��H�E�E1�AVH��p���E1�1�j1�L��Pjj迩��H��0L���ӱ��H�}��:���H�}��1���H�}��(���H��x���茯���袦��H��p����H�H��I���d���H�}����H�}����H�}��ٯ��H��p����ͯ��H��L�%�	�����=o�	L�5�	�����f.�����H�8I��� ����=A�	tI�?诮������f.��!�	���	���H���L�m�H��X���L�e�H�E�H��X���1ɺ!H��H��P���H��h���HDžh���H�E��ɶ��H�E�1�L��H�E�H�E�H�dH��蠶��1�L��5H�5O�H�E�肶��L�U�L�M�1�ARH�M�A�H��L��H����jjj�·��H�� H������H�}��}���H�}��t���H�}��k���H��p���1ɺH�5�~HDžp�������H��~1�H��x���H�ƺHDžx����޵��H��X���H��P���1��~�x�����!�E�f�E��p���H�E�E�虵��H�U�1�L��H�5;~H�E�H�U���s���1�L��/H�5Z�H�E��U���H�U�L�M�H��RL��H���A�1�jH�M��ARj薶��H�� H�����H�}��Q���H�}��H���H�}��?���H��x����3���H��p����'���H��X���1�H��P����!H�E��Ŵ��H�U�1�L��H�5o}H�E�H�U��蟴��1�L��8H�5��H�E�聴��L�M�H�M�1�L��H���A��H��ARjjj�ŵ��H�� H������H�}�耬��H�}��w���H�}��n���H��h����ҫ������DH��	L�m�H��L�e���H�
r�H��X��������1ɺ!L��H�E�H�5J��ͳ���H�E�軯��H�U�E1�E1�H��L��葪��L���i���H�}��@�����V���H�U��H�H��H��P�������H�}�螫��H��P���H��H�-�	����?����n���ff.�UH��AWAVAUATSH��HdH�%(H�E�1����	��tB�=�	H���	�~H�E�dH+%(��H�e�H��[A\A]A^A_]�f�H�A�	H��衦����t�1ɺL�m�HDž���H�5؂H�����脲���HDž���L������h���f�1ɺ3H�H�����)E�H�5��)E�)E�H��P���H�E�HDž����!���H������L��转��1�H�� ����1H�5��HDž ������H�� ���H�}��胬��1�H��(����1H�5��HDž(���讱��H��(���H�}���I���1�H��0����:H�5��HDž0����t���H��0���H�}������1�H��8����=H�5��HDž8����:���H��8���H�}���ի��H��@���1ɺ:H��H�5��HDž@������H��@���H�}��蘫��H��H���1ɺ=H��H�5��HDžH������H��H���H�}���[���H��P���1�1�H��E1�E1�L��AUH�����jPjj�.���H��0L���B���H�}�話��H�}�蠱��H�}�藱��H�}�莱��H�}�腱��H�}��|���H�}��s���H������ק������H������H�H��I��诪��H��H����3���H��@����'���H��8�������H��0�������H��(�������H�� ������H��������H������ߧ��H��L�%%�	�0����=��	H��	�����ff.���+���H�8I���0����=R�	tI�?迦���\���f.��2�	�
�	����H��@���H����H��H���H����H��H�����H�=��	��H�=�	��H�=�	L�5E���H�=/�	�aH��8���H�����1ɺ!H��H�����L���HDž�HDž8���耮��H��8���1�H�����#H�54�HDž@���H�E��P���H����1ɺ3H�5�~HDžH����+���H�M�1ҾH�����L��@���A�L��QH��H���jjj�f���H�� L��躧��H��H�������H��@�������H��8�������H������1ɺ
H�5<uHDž����衭��H�����1ɺH�5HvHDž����|���H�����1��~����D�-ǕI��H�5�t������L��L������E��E�fD�m�HDž����#���H��y1�L�����H��L�ߺL������HDž�����H�����1��~����I�Һ+fD�m�H�5�~L������L������E��E�HDž���蠬��H�� ���1�H�5�~HDž ���I�Ӻ(L��L�������n���H��(���1�L��I�к*HDž(���L��P���L��L�������9���H��0���1�H�5�~HDž0���I�Ѻ(L��L����������H�����1�H�����HDž8����!���H��8���1��~�(����~����H����H�5[sHDž@����0���H��p����� ���)�`���)�P���胫��H����1ɺ1H�5|HDžH����^���AVL��@���1�jH��H���E1�L������j袬��H�� L�����H��H����Z���H��@����N���H��8����B���H��0����6���H��(����*���H�� �������H���������H���������H��������H��������H���������H������1ɺH�5rHDž����}���H������1ɺH�5$sHDž ����X���H������1��~� ����+H�5K|fD�m������E�E�HDž(�������H������1ɺ(H�5�|HDž0������H�����1�H�����HDž8����!�ʩ��H��8���H�@v1��~�(���H��H����HDž@���H��`�����0���)�P����~���H����1ɺ1H�5AzHDžH����Y���AVL��@���1�jA��L�����H��H���j蚪��H�� L�����H��H����R���H��@����F���H��8����:���H��0����.���H��(����"���H�� �������H������
���H������1ɺ
H�5@pHDž���襨��H������1ɺH�5LqHDž���耨��H������1��~�����	H�5pfD�m������E�E�HDž����<���H�-{1�H������H�ƺ*HDž �������H������1��~� ����+H�5zfD�m������E�E�HDž(����Ч��H������1ɺ(H�5[zHDž0���諧��H�����1�H�����HDž8����!膧��H��8���1��~�(���H����H�5oHDž@����0���H��`����)�P����=���H����1ɺ:H�58xHDžH�������AVL��@���1�jH��H���E1�L������j�\���H�� L��谠��H��H�������H��@�������H��8������H��0�����H��(������H�� ����؞��H������̞��H��������H�����贞��H������1ɺ
H�5�mHDž����O���H������1ɺH�5�nHDž����*���H������1��~�����	H�5�mfD�m������E�E�HDž������H��x1�H������H�ƺ*HDž ���辥��H������1��~� ����+H�5�wfD�m������E�E�HDž(����z���H������1ɺ(H�5xHDž0����U���H�����1�H�����HDž8����!�0���H��8���1��~�(���H�����H�5�lHDž@����0���H��`���)�P������H����1ɺ=H�5"vHDžH����¤��AVL��@���1�jH��H���E1�L������j����H�� L���Z���H��H���辜��H��@���貜��H��8���覜��H��0���蚜��H��(���莜��H�� ���肜��H������v���H������j���H������^���H������1ɺH�5�kHDž������H������1ɺH�5�lHDž����ԣ��H������1��~�����	H�5fkfD�m������E�E�HDž���萣��H��v1�H������H�ƺ*HDž ����h���H������1��~� ����+H�5[ufD�m������E�E�HDž(����$���H������1ɺ(H�5�uHDž0������H�����1�H�����HDž8����!�ڢ��H��8���1��~�(���H����H�5[jHDž@����0���H��`����)�P���葢��H����1ɺ:H�5tHDžH����l���AVL��@���1�jH��H���E1�L������j谣��H�� L������H��H����h���H��@����\���H��8����P���H��0����D���H��(����8���H�� ����,���H������ ���H���������H���������H������1ɺH�5?iHDž���裡��H������1ɺH�5JjHDž����~���H������1��~�����	H�5ifD�m������E�E�HDž����:���H�[t1�H������H�ƺ*HDž �������H������1��~� ����+H�5sfD�m������E�E�HDž(����Π��H������1ɺ(H�5YsHDž0���詠��H�����1�H�����HDž8����!脠��H��8���1��~�(���H�����H�5hHDž@����0���H��`���)�P����;���H����1ɺ=H�5�qHDžH�������AVL��@���1�jH��H���E1�L������	j�Z���H�� L��讙��H��H�������H��@�������H��8������H��0������H��(������H�� ����֗��H������ʗ��H�����辗��H�����貗��H��������
�L�%1�	L���A���H��@���H����H��H���H����H�
�tH���������H����1ɺ!H�5�tHDž@�������HDžH������E1�E1��L����H�H��@���L��豕��L��艘��H��H����]�����s���H��@����H�H��I���5���H��@���蹖��L��L�-O�	�
����e�DH��p�H�=��	�8�����L��H�=a�	�����X��H�Yp�H�=�	�����H�	p�H�=�	�ؒ���������ff.���H�G0H9Gt*H;G8t�@���H�GHH�@�H��@��fD1�Ð@��H�GPÐfD��H�7H�WH�OH�G����UH��SH��H�_H��tH������H��H�]���逍��H�]���f.���������%��Y��Xh�f(�fT�f.�v3�H,�f���-��fU��H*�f(����fT��\�fV�f(��^��f�����H��t�>��fD1ɺH�5�iH��邜��f���UH��AWAVL�u�L�}�AUI��ATI��L��SH��8H�U�dH�%(H�]�H��H�E����L��H�E�����{���L��H������C�P������I�<$L��L�������H�}��G��t
I�$��iu8����H�}��
���H�E�dH+%(�7H�e�[A\A]A^A_]��H�U�L�����H��蜞��H�}��fD�1�H�5�hL���j����C�P�����V����Z���f��4����%I��*��^E��Y��X��f(�fT�f.�w[�^�H��H�}�1�H�E�A�.A�1�j�jj诌��H�E�H�� H�����H�}�H�E��������@�H,�f���-W�fU��H*�f(����fT��\�fV�f(��m���諍������f���UH��AUATSH��H��L�gH�GM��tL�������L��膊��H����kt]�@���H�3A�A�H�
�b	���H��I���*���L�kL�cM��t]L��襊��H��L��[A\A]]����fD���H�3A�A�H�
=b	���H��I���͑��L�kL�cM��u�H��[A\A]]���H�������H������ff.����UH��SH��H�_H�GH��t"H�����H��H�]����x����H�]���f.���UH��AUATSH��(L�/L�gdH�%(H�]�H��A��ktnL��H�[L�e����L��H�H�ދBH��H��H���3���L���L��H��`	講��H�}��Ӑ��H�E�dH+%(��H��([A\A]]�DL��蘚��H�}�E1�1�H�E�H�0�;�j���H�E�L��H�E��Z�����tEL�����L�eȃ�tT��toH�;L���H��_	����H�}��?����g���f.�L�e�H�uȹH��dL�����f�H�uȹH��dL���ؚ���fDH�uȹH��dL��踚���t���辊����H������H���$�fD��UH��AWAVAUATSH��H���L�odL�$%(L�e�I��L��L�������t*H�E�dH+%(�H���[A\A]A^A_]�DL��0���HDž0���L��讌��L��L��胋��H������H�L��H��(����)���L��@���H�ƺ
L��袎��D�h�E�D��胇��H��8���H��E��� L��8���H��(������H�^^	L���~���H��8���袎��L���j�����t.L���^���1Ƀ��k�H�5)cL���/����D1ɺH�5cL������H�;L�����H��]	����L������������	w
H�/��4��
L��L�;�<���L��L��HDž8����‰E��Q���L���L��H�w]	誘��H��8����΍��H���jtbHDž8���L���/���L���W�����tcL���K�������L��軅������H�;L���H�]	�<���H��8����`���H�����H��0����L��������L���h�����u�1ɺH�5bL���ޔ���@�H�5bL���Ĕ������1ɺ
H�5�aL��袔���J���DH��8����
H��aL��蝗���5����H�xHcE�H�H��u1��pxD�if�D����L��H�����H�� ������H�����H�� ���H����B�����H�������H�������H������H����f���H�>t&UH��SH��H��H�?���H��H�]��H���2���f�Ðff.���UH��SH��H��H�?訍��H��H�]��H��騇�����H��H��H�pH��t5UH��SH��H��H�P`H��tH�Ƙ�l���H�H�SH�]����ÐfD��H��H��H�pH��t5UH��SH��H��H�P`H��tH�Ƙ�̔��H�H�SH�]����ÐfD��UH��ATSH�� dH�4%(H�u�H�wH��t{L�� H��pH��L���2���L�����H�E�1�H�E�H�CH��tH�S`H��tH���H�}�芍��H��H�E�dH+%(u0H�� L��[A\]�H����H�E�dH+%(u	H�� [A\]��C����f���H�~01�f��u��oF��f.���UH��AWI��AVI��H��I��AUATSH��H��覌��I9�suI�p�I���;f��J��H��H��L����������s���I��M9�s+L��H���<����P���)��q���ptg��qu҃x\~�H��[A\A]A^A_]�D��u�H�x�	u�H���	�	H�b^謉����u�H��[A\A]A^A_]�f��x,�f����@H�@0�x�R���넃x0�F����u����H�I�vH��R�.���ff.���UH��ATSH�� dH�%(H�]�H��L�� L��蒒��H�}�E1�1�H�E�H�0�;�d���H�E�L��H�E��T�����tOL�����L�e؃�t~��tYH�;L���H��W	����H�}��9���H�E�dH+%(ugH�� [A\]ÐL�e�H�uعH��\L������f�H�uعH��\L���Ȓ���fDH�uعH��\L��訒���j���讂����H����f���UH��AWAVAUATL�� SH��H�����,���dH�4%(H�u�H�wH��t[H��pL���Ã��L���{���1�HDž0���H��8���H�CH��tH�S`H��tH���H��0�������H��L�����L��0L��L��腊����t)H�E�dH+%(��H���[A\A]A^A_]�@L�����L��H��������L��I���6}��L�牅 ���踁��L�(���芐��L��H�����談��L��I���}��L����肁��H�����H����������H�9H��w;r��H���t���M9�tnH�L��@���L���
L��H������΅��D�p�E�D���~��H��0���H��E����H�����H��0������H��U	譐��H��0����х��D�� ��������A9�tfL��0���HDž0���L���%���1�E���ZA�����H�56ZL���<���H�;L��H�
U	�5���H��0����Y�����(��������9�tx������	��H�L��@����
L��0���L��H�� ����C���L��L��HDž0����‰E��X���H�� ���L��H�T	���譏��H��0����ф��H���j����,��������H�E�dH+%(�mH���L��L��[A\A]A^A_]���DH9��3���H��H�����������������H�a��4�����f��H�5�XL���������H�xHcE�H�H�����pxD�q1�f�L���@L��L��0���葏��L�牅(����|��L��A���x���L� �����{��L��HDž0���������!����� �����(���9�����������A9�t/H��0����FE���������H��XL���+���H��0����P��u1ɺH�5	XL�����H�;L��H��R	���H��0��������>���������A9��o���H��0����G��t��f��H�5�WL���|����;�������k����|����H��SL���l���H��0����!���1ɺ	H�5�WL���*������DL��H�����H�������y��H�����H�����H���)����}����H���1����H���%����H�������H���
���ff.���UH��AWAVAUATSH��xdL�,%(L�m�L�o(M���yH���L�e��p���L��L��H��I�E�H�E��x�sL�=����L��E1�L���w��H�;L�m��R���H��L���W}��H�0H�{0�~��H�}�H��tH��PL�s(��n	���iH��n	�=+o	H��x����&M���E��I�H��x���L��L��H�E��x�+��L�m�L��L��H�E��v��M���OI�EH�}�L��P(L�u�M���~��I�L���PH�}�H��tH��PI�L���PH�{8L�s8H��tH��PI�L���PH�E�dH+%(��I�EL��H�@H�e�[A\A]A^A_]���H�E�dH+%(�qH�e�[A\A]A^A_]�fDL�=I���L��L�m�H�E�L���"v������D�s|��H�8I���x����=�m	t?I�}�������L�-Ym	L���q{������������L��H�Bm	����g�����m	�*l	����H�E�L��\H��p���L��H�}�1ɺ!H�E�H�E�����H�E�1ɺ#H��p���H�5�eH�E�H�E����1�L��<H�5b^H�E��͆��H�E�1ҾPA�H�}�jjjL�M�H�M�H��p����
���H��p���H�� �]���H�}���~��H�}��~��H�}��~��H�}��~������@H�=1k	�Dz��H�M�L��[H��p���������L��H�Ϻ!1�L��`���H�E������H�E�����H�U�E1�E1�H��L����|��L�����H�}��}����t��H�U��H�H��H��h����c���H�}���}��H��h���H�=tj	H�uj	�0}��L��`����L����x����H������������H���f����H��������H������Z�����UH��AWAVAUATSH���dH�%(H�]�H��H�PH��tH�H�CP�PH�{Hƃ�H����H��P����H�sHH�E�ƃH��X���H��H��P H�E��x��L�=}��E1�H��X���L���r��I�$H��`���L��PH�=xk	L�5qk	��I�$L�m�L��L��L��H�E��x�RL��L���r��H��`���HDžh���H��t9H�H�
v�L��H�@(H�M���H�}���ua�L|��L��h���M��t	I�L���PH��`���H��tH��PI�$L��P�H�U�dH+%(��H���[A\A]A^A_]Ð��{��H���_y��H���Sy��H��H��H��H����=y��L��h���M���v���I�L���PH�{PL�sPH��tH��PL��h������H��M��t$I�L��L��H�E��x��L��L���yq��L��h�������D1��+����L��L��L�u�H�E��Iq��H��`���L��h���H�����������DL�e����H��M������I�$L�m�L��L��H�E��x�%L�=�z��L��L����p������fDH��O�L���Tw������L�u�L��L��H�E�L��P����p��M������H��P���H��X���H��PH�}�L�5��L��H�H�@(L�u���H�}���@����3z��H�}�H����H��P��@���tKH��P���H�M�H��X���H��(���H��H�H�@(L�u���H�E��xttH��X���L���o��H�}���y��H��P���H��P�a���f.�L�=�y��L��L�e�H�E�L���o�����D��@���t��c���f.�H�=h	L�u��FM���q���I�H��g	L��L��H�E��xtL��L���No���E���L�u�L��L��H�E�L��8����+o��H��X���L���o��H�}���x��M���������H��8���H��L��H��H�E��x��L��L����n��HDž@���H��@���H��p���H��P(H��p����BH�� ���L�rHDžx�����0���H��x���H��H�������u����0�������H�� �����H��0���L��H�D�I���3H��A�$�$H�r�蕂������H��L9��H�;A��H����wH���_z��H�;�w��u�H�E�H��0����N�H��L����{��H��x���H�E�H��x����w��H��H���H��x�����t��H��x����G����������
����	����/ƃ��Fw��H��p����(tQH��@���H��PH��8���H��P�N���f.�H�E�L��L��H�E�H��@����m���>���DH�9U	H�3H���H��p���L���{���@L�5�HH���L����m������H��x����G������H���L���m����uPH��x����G������
�������H���H�5�K�^m����uH��x����G����H��x���ƃH������f�I�޺$H��0���I�6�FH�E��H��0���H��0����@���@H���H�5uG��l��H��x�����H����u��G���B���H���H�5dG�l�����b���H��x����G����H���
H�5�G�l�����6���H��x����G��H���	H�5�J�Zl�����7H��x����G����H���H�5�J�.l������������H��8���H��L��H��H�E��xtLL��L����j��H��x����|����R��H��8���H��L��H��H�E��x��L��L���j����L�u�L��L��H�E��j��M��tRH��X���H�E���q��I�L��L��H������P(H�E��x�rL��L���Vj��H�}��-t��I�L���PH��x�������H�pI�H�=�b	�p�����H��8���1�L��H��P@H�E�H��H��H�}���s��H��x����w�����xw��H��H�0�Mr��H�3����H�E�L��L��H�E�H��H����i��H��H�������H��H���H�}�H��PH�}�H��t~H�H�u�H��(���H�@(H�U��Є�H�[�t@H��H���L��H�H�@(H�U�H��X�����H�E��x��L��L���"i��H�}��r��H�}���r��H�}�H��tH��PH��H���H��P�/���H�E�H��X���H�0�p��L��L����h��H�3H��X���L���n��H�E�H���H���H�}��r��H����P���<���H��h���tH�;�@t��H��H��h����~��H��h����H��X����u��H��X���H��H��t!H�L��H�E��x��L��L���)h��1�H�;H�E���s��H��L����m��H�}�I��H��tH��PI�E�@��������������H���H���B�Ɖ�X����~��H���HcPH�H�|I�UHcJL�,	H���A��X���B�/ �H�4���f.�H�E�L��L�����0����hg��H�}��?q��H�}��6q����0���H�}����7���H�H��H��(���H�@(H�U��Є�H�������H��H���L��H�H�@(H�U�H��X�����H�E��x�����H�E�L��L�����0�����f��H�}��p��H�}��p����0���H�U���uIH��H���~p��H�}�����`k��H�E�L��L��H��X���1�H�E��tf��H��X����A���H�!��H�rL���g��H��H��������H���V����H���S����H���}����H��������H��������H���;����H���_����H���)����H���`����H���a����H�������H�������H���	����H���B����H���2����H��������H�������H�������H�������UH��ATSH��H�PH��tH�H�CP�PL�cxH�CxM��tL���g���L���g��L�cp1�ƃ�f���H�CpM��tL���Lg��[L��A\]��f��[A\]Ðf���UH��AWAVA��AUATSH��H��L�gxdL�,%(L�m�A��H�GxM��tL����f���L���lf��H�E�L��8���H�;���Hǃ�H��0���L��H��8���H�C�H��0�����x��H��0����n��H��8����m��E����E��t\H���L��@����
L�+L���m��L��L��HDž8����‰E��n��L���L��H��=	�qx��H��8����m����kf��H�3E1�E1�H�
�=	���H��I���[m��L�kxL�cxM��t>L����e��H�E�dH+%(��H�ĨL��[A\A]A^A_]�5e��DH�E�dH+%(uzH�Ĩ[A\A]A^A_]��H���L��@����
L�3L���l��L��L��HDž8����‰E��m��L���L��H��<	�xw��H��8����l������g����H���`����H�������H�������H�����f���UH��SH��H�_xH�GxH��t"H���d��H��H�]����8d���H�]���f.���H����@�����ff.����H����@��UH��AWAVAUATSH��8dH�%(H�E�H����@��u(H�E�dH+%(��H��8[A\A]A^A_]�fDH��L�e�L�m�H�?H�#�L��L���H�E�H�}�H�E��$v��H�}��Kk��H�}��Bk��H�3E1�L��H�BjA����L��H�E��k��H�}��k��H�H���L��L�ppI�L�x8H�E��-a��H�E�H�u�L��H�E�A��H�}���j��H����Fh��L���>c���	����e����H��������H���
����H���!����UH��H��H�� dH�%(H�E�Hc�H���H�}�H�ƘfHn�fl�)E��9m��H��H�E�H��H�}�H�E�dH+%(u�H����e��f���UH��H��H��SH��H��H��H���H�Ƙ�s��H�H��H�SH�]�����UH��H��H��SH��H��H��H���H�Ƙ�l��H�H��H�SH�]�����U1�H��AUATI��SH��8�oH�FdH�%(H�]�H��)E�H=���tfH~�H)�H�P�H�HHH�H�F1�H=���t�fH~�H)�H�p�H�PHH�I��$�M��$H�U�H�}�L��H�M�H�����k��I��$�H�}�H�U�L��H�ƘH�E��r��fHn�H�E�H�E�fHn�H�U�fl�H�����H��t����H�TP�fH~�H�H�M�H����H��t�����H�DA�fH~�H�H�SH�CH�E�dH+%(uH��8[A\A]]��Fc��fD��UH��AWI��H��AVAUI��ATSH�]�H��(dL�$%(L�e�I���	l��H�����^c��H��L���s��H���[^��L����k��f��tt��1ۉE�I��H�E�ff.���L����f����L��I���c��H�U�H��I���H����?q����L��I�VI���m����L�������d��9]�u�H�E�dH+%(uH��(L��[A\A]A^A_]��Db��@��UH��AWI��AVL�u�AUL��I��ATSH�]�H��(dL�$%(L�e�I����p���H���m��H��L���=i��H���]��L���]n��L��H���ra��I��H9�t1f.�L��H��L���r���H�ƺ��L���n��H��I9�u�L���]��H�E�dH+%(uH��(L��[A\A]A^A_]��ka����H���7���ff.���UH��AWAVAUATSH��H��hH��p���H��x����������dH�%(H�E�1�H������HDž����H��H������Dž�����l��H���Zm��I���	DI��H��x����``��I9���L���i��f������f��v�1�L���xa��H�H�pH��@����
H��H�������6e���
H�މE�H������H��H�������e��HcUĉ�4���H�L�DM��t{H������HcX����)�H�L9��K��L������H������1ɉ�L���p��H�������
GVH�DX�H�xHc�4���H�H���|H߹,f�HcU�H���L������ƅ������E1��L�������@A��Lt&H������A�L��H������H�
:�P�b��D��L����>`��H�pL�0�
H�������d��H�������
L���E���c��HcUĉ�4���H�L�DM��tjH������Lcp����D)�H�L9����H������1�D��L����o��H������J�|pHc�4���L�4H����L��,f�HcU�H����A�Lf;�������H������A�L��H������H�
.��P�fo��D��L��D����i��<����������A�V9������A��Ct&H������A�L��H������H�
�8�P�`a��E1���L�����^��H�pL�8�
H�������b��H�������
L���E��b��HcUĉ�4���H�L�DM��tjH������Lcx����D)�H�L9�����H������1�D��L���n��H������J�|xHc�4���L�<H���8�,L�f�HcU�H���A��A��tfH������A�L��H������H�
��P� n������H������H��H��Y���a���H������L���Y��H���2���f�A�Cf;������A���ff.�f�������t&H������A�L��H������H�
R7�P��_��H��x����5\��I9������H������A�L��H������H�
��P�Vm������H������H��H���X������H������L���X��H�����f�������L��p�����\��1�L��H����\��ƅ����H�H9�;���H�KH9H�������'����H������H�������Z��H��p���H������H��`��H�E�dH+%(uOH��p���H��h[A\A]A^A_]��H������H��H��W�����H������H����W��H���m����D[��������f.���UH��ATSL�e�H��pdH�%(H�]�H��L���W��H�]�H��t�CH�u�L���f��H�}�H��t�ot3L���Y��L����d��H�E�dH+%(uH��p��[A\]��H��P���Z����H��������H�������f���UH��AWAVAUATSH��dH�%(H�]�H��H�XH��t
�
b��H��u%H�E�dH+%(��H�ĸ[A\A]A^A_]�H��L����H�;���H����H�,xL��H������H������H��H��P����i��H��������^��H������^��H������H�3A�H��A�H�
/	���H��(����^��H�CXf�)�����H��H��@���)������.a��H��8���HDžX���DžL���H����4@��xu,I�}��_���AoEp��L���)������Ao��)�����L������L��@����ƺ
L���W��H�S0�E�H�HcRL�|D���V��H��h���I��E���H�;H��mL���H��h���H�����h��H�����]��H�;L���L��P���H�:�H����H��vL��H�������=h��H�������a]��H�����U]��H�3���L��A�A�H�
�-	�"]����L����
L���V��D�p	�E�D���U��H��p���I��E����H�sH���H�S`H���H�ƘH�������pf��H�sH��I��H��t*H�S`H��t!H�ƘH������H��0����_��H��0���H�κ
L��L�;�4\��L��L��HDž���‰E���\��L���L��H�w,	�"g��H�����F\���
L��L��L�;��[��L��L��HDž���‰E��x\��L���L��H�,	��f��H�����[��H�;���H��p���H�g+	�f��H�3H�`_L��H��x���A�A����H��x����[��H��x����[��L���T��H��p����[��H��P����S��H��h����q[��H��X���H��X���H9�8����5H��X���H��@�����g��I�ŋ@��u���I�uL���7^��L���\��H�������L����m]��L���^���AoE8)������AoEH)���������fDE1�1��?���fDfo
�xfo�xH�H(H�s0HPHcFH�H����H�A�.fD�H�HHcE�H�H��uxH��)1�f�0E�~f�x���DfoHwH�HXHcE�H�H����H��)1�f�E�wf�H�'���@H��(����R������H��L��H��0����vQ��L��h���H��0���H���`���H��H��H��0����MQ��H��0���H������fDH��L��H��0����&Q��H��0���H���X����T����H���&�����H���a�����H���=�����H���v�����H���1�����H��鄺����H���l�����H��韺����H���T�����H���n���f.���H��tH��Ðff.���UH��AWAVAUATI��H��SM��$H���I��$�dL�,%(L�m�I��L��H����Cb��H��I��$�I��L��H���L��L��@����b��H��L��M�|$ H������
H�� ���H������X��L��H��HDž ����‰E��X��H�پ��L��H�5(	��b��H�� ����X���
L��L��M�|$ �W��L��H��HDž ����‰E��DX��H�پ��L��H��'	�b��H�� ����W��H������
L��M�t$ �XW��L��H��HDž ����‰E���W��H�پ��L��H�{'	�Fb��H�� ����jW��H������
L��M�t$ �W��L��H��HDž ����‰E��W��H�پ��L��H�'	��a��H�� ����W��I�t$ ���H��}H�����A�A�H��H�������V��H�������V��H���LO��H�E�dH+%(uH���[A\A]A^A_]��Q����H��������H���1�����H���u�����H���<�����H��逸��f.���UH����f�H��AWAVAUL��@���ATI��SH��H�����H�� ���dL�4%(L�u�I��)� ���fHn�fl�)�0����Y�H��8����
L��H�� ���H��(���H�����I�\$ H��H����L��0���H�����H�����H�����UU��L��H��HDž����‰E���U��H�����H��H��%	����?`��H������cU��I�|$ �
H����H�����L����T��L��H��HDž����‰E��U��H�����H��H�/%	�����_��H������U��I�D$ 1�H�����I�����tH����I)�I�G�I�wHH�
L���wT��L��H��HDž����‰E��U��H�����H��H�k$	����a_��H������T��H�����M�|$ 1�H=���tH����H)�H�P�H�pHH�
L���S��L��H��HDž����‰E��T��H�پ��L��H��#	��^��H������T��H������M����Ic�H��M�|$ I��$fHn�I��$�fl�H���)�����V��L��H�����H�ƺ
H������RS��L��H��HDž����‰E���S��H�پ��L��H�M#	�@^��H������dS��I�t$ H�8bH��H������A�A����H�������!S��H�������%S��H���K��H�E�dH+%(��H��[A\A]A^A_]��Hc����H��M�|$ I��$fHn�I��$�fl�H���)�����U��L��H�����H�ƺ
H������GR��L��H��HDž����‰E���R��H�پ��L��H�J"	�5]��H������YR���T����?M����H��鋴����H��馴����H��齴����H���ٴ����H������H��������H���-����f.���UH��AWAVI��AUL��@���ATI��H��SH�� ���H���H�����I��$�H���dL�<%(L�}�M��$L���.[��L��H��I�D$ H�������
H������Q��L��H��HDž ����‰E��Q��H�����H��H�/!	����\��H�� ����)Q��I�D$ �
L��H������H������P��L��H��HDž ����‰E��NQ��H�����H��H�� 	����[��H�� �����P��Ic�I�D$ H��fHn�I��$�L��fl�H�����H�Ƙ)� ����~S��L��H��(���H�ƺ
H�� ���� P��L��H��HDž ����‰E��P��H�����H��H�$ 	����
[��H�� ����.P��H��L��M�t$ Hc����fHn�I��$�fl�H���)� �����R��L��H��(���H�ƺ
H�� ����O��L��H��HDž ����‰E��P��H�پ��L��H��	�xZ��H�� ����O��I�t$ ���H��uH�����A�A�H��H������YO��H������]O��H����G��H�E�dH+%(uH���[A\A]A^A_]��J����H��釲����H��颲����H�������H��魲����H�����f���UH��AWAVAUATI��H��SH��hdH�%(H�]�H���0U����t,H�E�dH+%(��H��h[A\A]A^A_]�f.�H�L��p���I��$L��L�}��,H�fHn�I��$�fl�H���)�p����=Q��L��M�t$ H��x���H�ƺ
H��p����ZS��L��L��HDžp����‰E��oN��L���L��H��	��X��H��p�����M��H��P ������������u6I�|$ L��H��sH�	���H��p����sX��H��p����M��H��@$����������I�|$ L��H�psH��	���H��p����(X��H��p����LM������I�|$ L��H�qsH��	���H��p�����W���q���@���s���I�|$ L��H�aH�Y	���H��p����W���8���I�|$ L��H��`H�"	���H��p����W���T����G����H���˰����H�������H��������H��������H���6�����H���M����ff.���UH��AWAVI���AUL�m�ATI��L��S��H��8dL�<%(L�}�A���S��E����L��L��L����L�u���L��M�|$ L����H�]�L��L��H��PH��H�E��V��H�}��K��H�}��K��I�t$ H��L��H�>PA�A����H�E��tK��H�}��{K��L����C��L���B��H�E�dH+%(u$H��8[A\A]A^A_]�DL��L���]E���=����#F����H���G�����H���c�����H���8����ff.���U�
H��AWAVL�u�AUATSH��H��dL�,%(L�m�I���w�F�GL����O��D�`
�E�D���LC��H��0���E���,L��@���H�s A�A�H�
�	���L���aJ��H�{ H��0������H��	�%U��H��YL��`���H�{ ���L��8���H��`���L��H��YL��H��8�����T��H��8����J��H��`����I��H�s L��L��H�YA�A����H��8����I��H��8�����I���1�L��H���c���L���+B��L���#B��H��0����I��H�E�dH+%(usH�ĸ[A\A]A^A_]�fDfoHg�@h_I��H�x@HcM�H�	H��u1�E�gf�O���f.�L��H��(����@��H��(���H�����D����H���f�����H��鑮����H���b�����H���N�����H��釮��@��UH��AWAVAUATSH��hdH�%(H�E�1���u(H�E�dH+%(��H��h[A\A]A^A_]�fDL�u��
H��L���M��D�`�E�D���@��H��p���I��E����H�{ H�/IH��p������H��x���H��x�����R��H��x����H�����@��H�s A�H��I��A�H�
U	�����G��L�kL�cM��tL���N@���L����?��H��p����G������H�@H��H9�s
I�MH��H9�rsH�url(I�Ufo]e�#I�M&fA�uAE�@h_HcE�L�<H��uJ�9�)1�f�E�ef�H��H��L��L���>��H����DH��7I�U��A����H���Ĭ����H�������H��鹬��f.���UH��SH��H�_H��t*H�GH���:?��H��H�]����>���H�]���f.���UH��AUATI��SH��H��L�oM��tH�GL����>���L���c>��L���{B��f��uH��[A\A]]�L��H���-����CH�ߍp�H����pH��[A\A]]�;����f.���UA�.A�1ҹH��AWAVAUATL�e�SH��H��@L�o L��dL�4%(L�u�I��H�E�1�jjj�5?��H�E�H�� H�����L�}����L��H�E�L��H��	�EP��H�}�L�m��hE��L��H�E���B��L��H�E���B��H�u��L��H���P��A�~���L��L���z���H�u�H�U�L��H�E��@��H�u�H�������L���=B��H�}���D��H�{ L��H�	����O��H�s A�L��A�H�
�	����D��L��� =��H�}��D��H�}��D��H�E�dH+%(u*H�e�[A\A]A^A_]�1ɺH�5<L���L���;����@?�����e�����H��騪���f.���UH��AWAVAUATSH��H��H���H��0���H��P���dL�<%(L�}�I���@��f��u*H�E�dH+%(�{
H�e�[A\A]A^A_]��H������H�s A�A�H�
	H�Ǻ��H�� ����~C���3�
L��@���L��F��H��D�`�E�D���<��H��`���I��E����H������H�s A�A�H�
�	���H��H������C��H�{ H��`������H�0	��M��H����L�����H��0���f�fHn�L��HDž�fl�)����HDž������)���)�p���)������7A��H�����L��p���L��H��P���L��H��H��8���L��H�����J��H���H��H��8���HDž����H��H�����HDž���������L���H�����L��H��L������I���H��X����K��H��P���H������H��������A����H��L��h����Hi�ų��A��L��A��H�� ��D)�i�)�f��(����=��1�L���@��H�������L��H��@��H������1�L��H��@��L�p�L���z@��H��X�����(���L��H�����LE�L�pH������H��H��@����tG��1�L��L�s �6@��H�0�
L����@��H��H���L��HDž����‰E��WA��H��H������L��H��	�K��H�������@��1�L��L�s ��?��H�p�
L���a@��H��H���L��HDž����‰E���@��H��H������L��H��	�GK��H������k@���L��L�s �j?��H�0�
L���?��H��H���L��HDž����‰E��@��H��H������L��H�	��J��H������@���L��L�s �?��H�pL��
�?��L��L��H���HDž����‰E�L��� @��L���L��H��	�yJ��H������?��H�{ L��H��NH�	���H������GJ��H������k?��L����5��H�s ���H��8���A�A�H�
�	�+?��HDž���f�)��M��tM�oM�'M��M)�I��(�yH��P����
<���f�f��f���5�/�8��*��PL��������X����*��P�*��^����^��^�L;�����DI�G(I�A�W �AW�AO�AGH������H��P���� <���f�f��f����X����8��*��PL�������*��P�*����^��^��^�L;�����/H��.A�W �AWI�I�G(�AO�AGH������L��P���L����:��L��D���)6��L��D���-5��L��L��P���D���;��H��P���D���J?��H��P�������X����@��H��P����ȉ�(����P=��H��P�����������<4��AWD��X�����D��(��������AVL��H���H�����AUATL���(<��H�� L���,<��L����?��L���=��L���d?��H�����L�� ���I9�����-I����X���f.���X����AY_�A/��P���f(��LI����X����AYgI��E��f(��.I����X����AYgI��E��A��f(��I����P���H��@���H������A	�E	�D�������R���I��(M9��e���H�����H��tH��(���H��H)��74��H���H��tH�����H)��4��H��8����4��H������t4��H��`���D�hA��D���}4��H�����I��E����H�{ H��H������H��	�~F��H��0����1�H���H�H������;��H��`����;��H�� �����3������H�xH�H9�s	I9���H�8YI�FH�5YI�FHcE�H�H���h1�E�ffA�L�����H�HH��H9�sI�T$H��
H9��IH��XI�D$H��XI�D$A�D$(#H��`���HcBL�4H����L�)1�f�E�l$f�Q����f.�H��������L9��
L���U3��I��L��L��M9�t=ff.�ff.���oH��(H��(B��o@�B�H�H�H�J�I9�u�H���H��tH�����H)��2��K�7L���H�����H����������L���L��H���������L)�H��H��H��H�3333333H9������H���HE�H��OH�3333333H9�HG�H��L�$�L�爕����H������������(�����X����<2��H����������I����(�����X���H�������H��)�QH��Q �I�AM9���L��L��ff.�ff.�ff.�ff.�f��oH�H H��(H��(B��o@�H�J�B�I9�u�I�G�L)�H��M�|�(I��(M��tH�����L��L)��0��L���M�L������L������n���f�L���L��H���������L)�H��H��H��H�3333333H9������H���HE�H���H�3333333H9�HG�H��L�$�L�爕����H������������������(����0��H�����������I���������(���������H�H��Q �Q�I�AM9��H��L��ff.�ff.�ff.���oH�H H��(H��(B��o@�H�J�B�I9�u�I�G�L)�H��M�|�(I��(M��tH�����L��L)��/��L���M�L������L������f���f�H�rH��L���Q.��H������f�L��H��X����1.��H��X����}���fo�TAD$���fozTAF�G���M������I���V���H�E�dH+%(u�3���G1��I�����������I���������@�����H���ڜ����H���Μ����H���œ����H��鶜����H���0�����H��龜����H�������H���'�����H��醜����H��邜����H���b����@���W��I��(\��(H��H��H��I��H�����W��H��H��H��I��H�����	��H��H��H��I���H����	�����Uf�H��	H��AVAUATI��SH��H�H�GfHn�H��0�~r	�Gfl�H�G0G H�:H�{8H��tH��PL�-�	H��@I�uH��ty1�1�L��4��H���=��M�$$A�|$tH�e�[A\A]A^]�DI�uH����H��H��4��I�T$H��I�L$PL�
�4��L��;���?��XZH�e�[A\A]A^]��� 	��t%H�� 	L��H�0��2��I�u�a���f.�L�5� 	L���/����t��r��L��H�~ 	�Y3�����a 	��t%H�^ 	L��H�0�s2��I�u�?���f.�L�51 	L���a/����t��(r��L��H� 	�2�����I������ff.���UH��	fHn�H��AWAVAUI��ATI���HSH���~
�	fl�)M���)��H��M����I�$L��PfoM�f�L�c8L��H��
	CH�H�H�C0K I�$�C�PL�5�	L�{@I�6H����1�1�L��2��L���;��M�mA�}tjH���"<��M��t
I�$L��PH�e�H��[A\A]A^A_]Ðf��@fo]�@H�5
	H�H�H�C0H�C8[ �h����I�6H����H��I�UI�ML��H�^2��L�
G2��PL��9���z=��XZ�Y�����	��tH�~	L��H�0�0��I�6����H�=Y	�-����t��Sp��H�=D	H�E	� 1���fD�)	��tH�&	L��H�0�;0��I�6�O���H�=	�4-����t��o��H�=�	H��	��0�����I������I������ff.���UH��AWAVAUATSH��dH�%(H�]�H��H�HH��tH�H�CH�PH�{@H��tH�H�C@�PH�{8ƃ�ƃ�H��tcH��P��tYH�s8H�E�H��P���H��H��P H�E�H�V	�xt`H�����E1�E1���,��L�}�L�}�I������1�H�E�dH+%(��H�e؉�[A\A]A^A_]�f.�L�m�H���[	M��t�I�EL�}�H��	L��L���H�E��x����L�e�H�.0��L��H�E�H��H��X����&��M����H��X���H��P�����%����}��I��I�$L��L��L��H�E��x�m���L�m�H��X���L��H�E��%��M����I�EH�
\L��L��H�@ H�M���H�}�A���X/��E����I�EH�
�ZL��L��H�@ H�M���H�}�A���(/��E����I�EL��P���2��L��L��H��I�$�H�E��x��H��X���L��E1��$��H�;L�m��0��H��L���*��H�}�I��H��tH��PI�E�H�����I�$L��P�"���I�$L��PH�{@L�c@H��tH��P���I��I�$L��L��L��H�E��x�����H�E�H��X���L��H�E�H��H����L$��H��H�����
H��H���H��h���H��PH��h���L�5LZL��H�H�@(L�u���H�}���@�����-����@�������H��H���H��P���L��H�H�@(L�u���H�E��@����������H�E��H��X���L��f��@���L�5�Y�#��H�}��g-��H��h���ƃ�L��HDžp���H�H�@(L�u���H�}���8����/-����8�����tuH��H���H��P���L��H�H�@(L�u���H�5�	H����	L��X���H��H�M�L�
-��L�I4��H��p���AVH�U��'8��L��L����"��H�}��,��A[A^H��p���H����H�D��@����P(A9�}{H��h���H�NXH��x���H��x���H��H�H��@����P(����H��H���H��@���L��H��P(H�E��x�i	H��X���L���D"��ƃ�H��x����,��H��p���H��tH��P��	�����=�	L�5z	�TI�$L��L��L���H�E��x�����H�E�H��X���L��H�E�H��@����!��H��@�����	H��@���H��x���H��P(L��x���M���K���I�L���PH��x���H��tH��PI�L���P����I�L���PH��@���H��PH��h���H��tH��PH��H���H��P���DH��X���L��L�m�H�E��!������H�=�	L�5�	�I�$L��L��L���H�E��x���L�u�H��X���L��H�E�� ��M���1	I�L��L���P0H�}��W��t[�n*��H�;L��L��H�:���H�E�� 5��H�}��G*��I�L���P���f�I�EL��1�P�����*��H�{PH��tH�H�CP�PH�{xH�CxH��tH��X����_"��H��X������!��H�{p1�ƃ�f���H�CpH��tH��X����!"��H��X�����!��H��TH�;H��P���L��H�E����H��BH�E��34��H�}��Z)��H�}��Q)��H�;L��L��H�9���H�E��4��H�}��*)����"��H�3E1�E1�H�
`����H��I����(��L�{pL�kpM�������L���g!���L���� �����DH���H�=m	�h%������I�L���PH�{HL�sHH���W���H��P�L����%��H�8H��@����-���=m	L��@���tDI�:�'���{����L�5�	L����#�����I����p��L��H��	�'���0����	��	L�C����L��H��x���1ɺ!L��8���HDžp���HDžx����/��H��x���1�H��P����#H�5H�E�H�E��c/��1ɺ<L��H�5�H�E��E/��H�E�L�M�1�PH�M�A��jH��p���jjH��@����0��H��@���H�� ��(��H�}��9'��H�}��0'��H��x����$'��H��p����&��L��8������@H��X���L�����H�}���&�����H�E�f��N���H���H�=u	�p#�����H���L���T#�������ƃ�H�J	H�0H����H��P���1�L��&��1��7/��H��p���D��L��H��P0H�
	H�0H���H����X���H�M�L�
L&��H�U�L��-��H��P����u1��H��X���L��A���#��AYH�M�AZE���BHcA����H�@L�qA����H��L��@���L�L��8���E��H��0���I��L��A���f���
tCH��0I9���H�;�G��
u�H���
H�5/��������H�;�G�fDH���
H�5��c����t�L��H�E��"��H�C�x�8H�}�D�GE��tD�w�
%���j���E��H��0���H�M�D��fA��L��@���L��8���fD������fA��ufE��tfA��w���f���f��)�����H�_	H�0H���H��X���H�}���(���a���H�C�@���.��������H�CD�(���H�=�	L��@�������L��@���L�l���)���H��P���L��1ɺ!L��0���L��8���H�E��+���H�E��'��H�U�E1�E1�H��L���"��L���\%��H�}��3#����I��H�U��H�H��H��@����
&��H�}��#��H��@���H�=	H�	��"��L��0���L��8����a����H�`
H�=�	���H�5�	�J���H�CfD�(�����	����H��	H�=�	H�0�!��H��	H�0����o	����H�h	H�=�	H�0�y!��H��	H�0�L���H�E�H��X���L�����@���������@���������{��������	����H��	H�=6	H�0�!��H�'	H�0����H�=�	������\�����`��H�=�	H��	�!���?���L�5�	L�����������`��L��H��	�c!������fǃ�ƃ��+���H�CL��H�0�*��������L�5A	L���q�����5����4`��L��H�*	�!�������r������@�����H���J�����H���j�����H���y�����H���2������N���鞌����H�������H���9�����H�����������H���ԍ����H��鱍����H���{�����鈍��鄎����H��銎����H��閎����H��銎��饌����H��霊����H���{�����H���}�����H��������H��逎����H������������v���fD��UH��AWAVAUATSH��H�~���dL�,%(L�m�I���
H�~���I���	
H��H��I��������tL����������	H����H�3A�A�H��H�
F����H��`�������L�������L���������m���L���������}����H��L������Hi�ų����L��L��h�����H�� ��)ȉ�I�$i�)�I�D$f������I�L$H=���HD�H�H��H��?H��H�I�D$H�H=���H�����HD�H�H��H��?H�L��H�H���������H�����������L��H��H��x����-%��H�� ���L������H��(���L��D������H������� ����L��A��D������Hi���QH��%�����������L��A��D������Hi���QH��%������������L��A��D������Hi���QH��%�����������L��A��D������Hi���QH��%�������p����L��A��D������Hi���QH��%�������H�����5�		�
A��L��@���L��Hi���QH��%�������F�j		��"���H	�E��ω������J��������I������
I�}M�E���H�;L���H����E(��H������HDž����H��H����������L��������TL��������CI�$f�I�D$E1��H*�������H=���tH)�H�P�L�hLH�L���W ����I�T$f�f��I��E1��H*��H*��Y
I�D$�X�����������fI~�H=���tH)�H�P�L�hLH�L���5����f�f��I���H*��Y�I�D$�X�����������H=���tI+D$��H��f���H*�I�D$f�H=���tI+$�QH��f��H*��W���Y?H�;L�����H�N+L���H�o�H������������&��H����������5�L�+fIn��g9��Y��������X�f(�fT�f.�v3�H,�f���%�fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj���H�����H�� H�������L�����H������L��L��H������%��H����������������Y������X�
�k8�%�L�+f(�fT�f.�v3�H,�f���%fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj����H�����H�� H�������L��H������L��H�������$��H���������������Y������X
��7�=�
L�+f(�fT�f.�v3�H,�f���%
fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj����H�����H�� H������H�����L��L��L��H�F���H�������#��H������	��H�������������H�
�EH�3���A�H�����A�L��H��H��p������H����������������V
H������H��������^��H��L�+A�.1�A��1�L��HDž���f�jjj����H�����H�� H������H�����H���L��L��H�¾��H��x�����"��H��������H�{�H�;H������H�¾��H�������"��L�-&�H�3���A�A�L��L�����L���?�����������	H������H�������]��H�L��H�������m����f�����5F�*��Y
�f(��\��Y������
5�Xzf(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�g��H�����H�� H�������H��x���H������L��H������q!��H��������H�;���H������H�������J!��H�3A�L��L��A�����K��L��������fDL���
�����1���L�������� ���fDH�E�dH+%(��H�e�L��[A\A]A^A_]�w���H�������H��H�������%��L������1��~����fօp���L������H�������L���~�p���fHn�fl�H��8����~����fօp���H=���HD�H�������t���~�p���������H��x���H������������x��L�����H�;H�w$���L��H���H���������H��������H������1�L�+���H�0�
L�����L��L��HDž����‰E��$��L���L��H����}��H��������H������1�L�+���H�p�
L���/��L��L��HDž����‰E�����L���L��H�Z����H������A��H�������L�+�=��H�0�
L������L��L��HDž����‰E��b��L���L��H������H���������H�������L�+����H�p�
L���j��L��L��HDž����‰E����L���L��H����X��H������|����R��H�3A�H��A�H�
�����H��p����8��L��� ����f�L���*��������	���e���4�Y�����L����������	����H������H��������HD�����H�������/Y��H��L�+A�.1�A��1�L��HDž���jjj�������"��H�����H�� H�������H�����L�����H���L��L��H�¾��H��x������H������C��H���H�;H������H�¾��H����������L�-W�H�3���A�A�L��L������L���p
��L���������L�������tHDž������������RH������H�������X����-_�?/�%Wf(��\�����L�;�������Y��X�f(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�H��A�.1�1��^�����A��L��HDž���jjj�
��H�����H�� H������H��x���L��L��H��������H��������H�;���H������H�������h��H�3A�L��L��A�����i��L������H����������H�������Y��H��p���H�������H���M��H��h������H��`������H�E�dH+%(��H�e�[A\A]A^A_]�H������1ɺH�5���������������H�xH���H9�sI�PH��	H9��/H��-I�@H��-I�@HcE�A�_fE�PH�H���mE1�A�HfE�L���H������1ɺH�5-�������f����������H������H�������U��H�H��A�.1�A��1�L��H��X����"�HDž���jjj�l��H�����H�� H����|��H��x���H��X���L��H������v��H��������H�;���H������H�������O��H�3A�L��L��A�����P��L�������t���H������1ɺH�5��������H������1ɺH�5�������r����L��L��p���������H�������t��L��p���������H�������^���H��f��H*���fDH��f���H*��j�fDH������1ɺH�5m��N���i���f�fo�+A@�����Y����H���o{����H����{�����|����H���|����H���{����H���	|����H���{����H���X{����H����{����H����{����H����{����H����z����H����z����H���j{����H���|����H���|����H���|����H���;|����H���m{����H���U|����H���I|����H���=|����H���G|����H���f|����H���/|����H���N|����H���|����H���6|����H���{����H���|����H����{����H���|����H����{�����Sz���fD��UH��AWAVAUATSH��H��8dL�4%(L�u�I��H����M��M����L�}�I��H�E�L�����L��L��L��H����H�}�L�e��G�����S��H�\8L��L��L��H�E�H��H��H�E��lv��H�}��#��H�}����H�E�dH+%(�0H��8[A\A]A^A_]��L�e�H��H��H�/8L��H�5��H�E��v��H�}�L�}��
���g���f.�D�hD���D��H�E�I��E��u0L�e�H�;���H�=�L���M��H�}��t
��H�}�����H�HH���H9�s I�T$H��H9�sH��I�D$�@H�url(I�D$�#fA�t$H�u�HcFH�H��uHѸ)1�f�E�l$f�Q�Z���f�H��H��H�U��`��H�U�H����������H����y����H���z����H���y����H���!z��f���UH��AWAVH��0���AUI��H��ATSH��H���dL�$%(L�e�I��H������G��H��L��L�����A�|$�ƅ���uA�D$8�������H��`���H�����H�����E1�A�|$8I���tM�D$0I�T$I�t$H������I�D$@�@���TIcD$����A�D$H���Q����A�D$L������qI�D$I9D$ �H��@����1�HDž@���H��H�� ���DžH����o��I��I�T$H�����H��P���H�����I9T$ ��>fDf/�����s�XA��,�H�fHn�I���H�����H�����fl�H���)�P�����
��H��P���L��H���H��X���H��t9H��@���L��H���H�� ���A�H�
�L����(����R�����(���H��@���H�M���H��H��(���D�z�
���H��(���H�� ���L��A��D���&��I�T$I�D$ H��H)�H��H9�sL��f��f/������f/����\/��,�H����@L��H���f�H�� ���L��I�] ���H��P���H��P������H��H��,H��8���H��8����m��H��8������H��P������H��@����y��H����������1�L��H������H�����H�E�dH+%(��H���[A\A]A^A_]ÐH�),I�} ���H�y�H��P���H��P���H������H��P�������Q���f�H��I�} ���H�A�H��P���H��P���H�����H��P������A�D$L�������H��I�} ���H���H��P���H��P���H���L���t����H��+I�} ���H���H��P���H��P���H������{���fDfHn�I���I��H��@���fl�H���)�@������H��L�u�H��I�] H��H��@���H��L���
H��H����
��L��HDžP����‰E�H��P���I��H�����L�����H��H�a��l��H��P���������I�} I�L$@���H����>�����H���R����H�����H���t����H���1u����H���u����H���,u����H���<u����H���"u����H���2u����H���t�����UH��AWAVAUATSH��H��HdL�$%(L�e�A��u����E��E�umA�� t�C`�E�H�C@L�c0H��(I9����E��}�A�D$A�$uQ�E�I��(A�D$�L�c0H�E�dH+%(�H��H[A\A]A^A_]��H�wPH�}��K���E��DH�u�I�|$�R
���M�H�C0A�D$�E��U�A�L$ H��(�E�H�C0��t�H�}��E��e
���o���L�sHH�s(H���������M��I)�M��I��I��L��H��L+c8I��H�@L��I��H�C H+CH��H��H�H�fffffffH9���s��H�H�SL��H)�H��H��H)�H��vo���5���I�F�U�L�c0�E�A�D$A�$�����E��E��E�A�D$ H�CHH�HH�@H�KHH���fHn�fHn�fl�C8���I�GH�<H9���H)�H��L�<�I�VH)�I9��H���L�����I�O�4/L�{(L�sHH���fHn�fHn�fl�CI�H���fHn�fHn�fl�C8����f.�H�u�I�|$���A�D$�U�����H�ҸHE�H�L�rL��H��<��J�<�H�U����H�U�I��H�s(L)�H��L�<�H�CHH�PH)�H��~lL������H�CH�;H�4�����L�#L�s�����K�|/H��~BH)����������H�I����I��=t0H�E�dH+%(u:����u�H�I�������H�H�G����H�E�dH+%(u����8����3����.�����H���q��f���UH��AVAUATSH�� dL�$%(L�e�L�g0L9g�"H�G8H��I9�t^E�l$�A��urA�� �!I�D$�A�|$�H�C0��A�D$�H�E�dH+%(�5I�|$�H�� [A\A]A^]���DH�WHH�J�D���H���A��t:I��L�u�L���}��A�|$�L����H�{P���L������L��H�C8L�c0A�� t�R��S`I9��L���L����0���H�CHH�x�H�P�H�SHH������H�{8H�C@H���H�C0uMff.�f�H�E�dH+%(uSH�� [A\A]A^]�@L���|����I�t$��H���fDƇ�H�E�dH+%(uH�������i�����H���p���ff.����UH��AUATSH��8dH�%(H�]�H��H�PH��tH�H�CP�PL�cxH�CxM��tL������L������L�cp1�ƃ�f���H�CpM��tL���Y����L������H����������L�m�H�E�L���#������f����f���`1ɺH�5f�L���2��L�e�H�;L���H��&L��H�E�� ��H�}��G���H�;H�U�L��H�V&���H�E�H�FH�E�����H�}�����H�}�����H�}������@L�e�H�;H�U����H�9(L��H�E�H��H�E����H�}�����H�}����L������L��H��0���L���!����w���H�3E1�E1�H�
�����H��I���g���L�kpL�cpM��tL�����L���e���uƃ�H�E�dH+%(uIH��8[A\A]]�1ɺH�5�L���������D1ɺH�5��L������{���������H���m����H���m����H���m����H����m�����UH��AWAVAUATL������SH��XdH�%(H�]�H��L���C ���L��H��0���L������H�;L���H��$H������H������H�WH���������H����������H����������H�CL��pL���P���f����H�C���tGL�+1ɺL��H�5��HDž�������L���L��H�����H�����������y�H�3E1ɺ��A�H�
��H��I���f���L�khL�chM��tL�����L���d�H�E�dH+%(�PH�e�H��[A\A]A^A_]����H��@���L���H����
H��L������H����������
L��L���E����L�4����'���f�H��1ҘA�.A�1��*��Y���L��HDž����jjj�$�L������H�� M����k��HcE�Hc�4���L������H�L
IcEL�4D����H������E��u5L���E���H�;L���H�k����H�������"����&���DH�xH��H9�sH�pH��H9���H�rotaH�HA�(�@tefD�PIcEH�H����Hc�4���H�A� fD�L�GH�H��umI�� f�0H�xHcE�L�<H��u8J�?�)1�f�H������D�rf�H����fDH�I�H�P�g���H������L����H���@L��L��H��������H������I���r����I�uH��������H������H���+��������H���>j����H���j����H���Uj����H���j��ff.����UH��ATSH��H�� dL�$%(L�e�I��I��$�H��p���H�����I��$�H�}�H�E�I��$H�E�H�Ƙ�6���H��H����H�E�dH+%(uH�� H��[A\]�����I���j���ff.���UH��AWAVAUATSH��HdH�%(H�E�1�H���u/H�E�dH+%(�=	H��H[A\A]A^A_]�f.�H�)H��H�?L������H������L��H�����H��p���H��p���H��H�����)��H��p����M���H�������A���H�3���H��0���A�A�H��H�����H�
}�����H���HDž�H��H������o�H������HDž����H��H�������N�H�����HDž���H��H�������-�H�����HDž���H��H��������L���M����I�D$D�pA��D����I��E����H���L����H���H�;L���H�����H��H��������H����������H�;L���H�uH����H������H�H��p������H��p������H���������H��P���H�3A�A�H�
����H��H�������H��@���I�t$0�
H��H�����+�I�t$(�
�E�H������H��H��������HcUĉ�4���H�L�tD�����I��E����H������L������� �H�;L���H������H��H����������H���������H�{I�T$ 1�E1�H�5�#��H�3H����A�A�H�
 ������A�t$8H�;�p������8M�|$L����H����H�ƺ
�'�L���E���H������H�ƺ
��HcUĉ�4���H�H�L��H���������H������I�Dž��oH�����L�������H�;L���H������H��H���������H���������A�t$8�
H�������D�p�E�D���]�I��E����H�����L�������H�;���H������H���S���H�3H�	�L��H��(���A�A����H��(����B�H��(����F�L����H������H�������M�$$M�������L���M��t8ff.�f�M��M�$$I�}�p���I�}���HL�����M��u�H���H���1�H�����H�����Hǃ�Hǃ���H�������H�������~�H����r�H������������L������L���<���A�D$8L�����L��HDž���L��f�������}�H�{����H�{I�t$�1���H�{L��L�������L�� ���1�L��L���v���H�;H���L��L���H���������H��������H�3���H�:�H��(���A�A�L��H��(����h�H��(����l�L�����H�� ����X�H�{�o�H������C�L��������fDH�x4H�6�H9�sH�HH�BH9���foWA�G0e-H�platI�G(AGfoDAGHcM�H�	H����1�E�wf�O�����H��A�Ge(I�I�GHc�4���H�H����H�A�,fD�H�xHcE�L�4H����J�7�)1�f�0A�Of�x�(����fo�
�@e(H�x@Hc�4���H�H����H�A�,fD�H�xHcE�H�H��ufH�A�)E1�fD�E�wfD�P����fo�H�x @H���I�GI�D$HcHH�	H��uc1�E�wf�O�A���@H����H��������H������H���x���fDH������H���������H������H���1���fDH�pH������H����H���1�ff.�ff.�@f�fA�LGH��H��u�����H����H�������c�H������H������H����L��H�������>�H������H���E���H������H������H��������H������H������H�����j���H���`����H���%a����H���7a����H���Za����H����`����H���Xa����H���Za����H���r`����H���_a����H���da����H���B`����H���*`��f.���UH��ATSH��H�PH��tH�H�CP�PL�cxH�CxM��tL���"��L����L�cp1�ƃ�f���H�CpM��tL������L���o�H�{(H��tH�H�C(�PH�{8H��tH�H�C8�PH�{@H��tH�H�C@�PL�chH�ChM��tL�����L����H����h��C H�����H�����H��[A\]�8������Uf�H��AUATSH��H�0L�� H��H�w�H�O�H�W�H�G��G�G���f�H���C8CHCXChCx���1�1�ƃ�f���f�H���H���H���f���ǃ�Hǃ�ǃ�Hǃ�Hǃ�Hǃ�ǃ��?Hǃ�Hǃ�Hǃ����/�H���Hǃ���H��Hǃ��H��Hǃ���H��Hǃ���ƃL���T���H��0�H���H��[A\A]]���I���^����I���^���@��UH��AUATSH��H��H�PH��tH�H�CP�PL�cxH�CxM��tL���L��L�����L�cp1�ƃ�f���H�CpM��tL�����L����H��0��H�� ���H���e�H���Y�H���M�H����A�H����5�L���M��t4f�M��M�$$I�}��I�}���HL���
�M��u�H���H���1�H����H���H���Hǃ�Hǃ�H���H9�t	H����H�����L�cxM��tL�����L����L�cpM��tL������L���g�L�chM��tL������L���I�H�{PH��tH��PH�{HH��tH��PH�{@H��tH��PH�{8H��tH��PH�{0���H�{(H��tH��PH�{H��t$H�Hx��ouH�H�@H��[A\A]]��H��[A\A]]���I���]�����U�fn��
fp�H��AWL�(AVI��AUI��ATSH��H��(dH�%(H�E�1�f�H�w GL���H�H�C0�@��H�S0H�C(��H������H��L�$����I�$fHn�H�fIn�fHn�fl�L�cxfl�K8L��CHKXCh���ǃ�H��L��H���L���H���H��L���L���L���Hǃ�H�E�������[���1�1�H��I�����L���L��L���1�ƃH���1�Hǃƃ��L�u�1�L����L��L����L������H���H��t
H�H�R��DH���H���H��tH�Hx��ot/L��H�E�dH+%(u!H��([A\A]A^A_]�f.�H��P������I���\����H�E��4\����I���<\����I���P\����I���[����I���\����I���[����H���*\����I���[��fD��UH��AWAVI��AUATSH��(H���HLJ�H��t!H�H�x�H���H�HX��k�dI�����I���H��tH�Hx��o�/I������I���H��tH������H�����I�~x���I�FXI�NPI�VHM�n`H�E�I�FpL�aH�U�I�^8H�E�H�M�I9���ff.�M�<$A��UA�@�cA�h�qA����A�����A�����A����A��0��A��X��A�����A����A�����H�E�I��I9��L���H�U�H9U��BH�E�H9���{uH��(H9]���{t��CH�{H��(��H9]�u�L9m���fDI�~(H��tBI�FpI�^PL�`L9�s fDH�;��H�����L9�r�I�~(I�F0H�4�����I�^H��t=H�{@����{8�jH�{H��tH�s(H)����H���<���PH�����I�^H���$H�����H��(H�߾[A\A]A^A_]�o���A�EI�}���I��(L9m�����A�}t���H��(H9]������{t��CH�{H��(��H9]�u����AƇ�I���I���h�H�E�I9��_���M�<$A������A�GI��>�A�@�����A�G@I�0�%�A�h�����A�GhI�X��A��������AƇ�I������A����m���AƇ�I������A����Y���AƇ�I�����A���E���AƇI�����A��0�1���AƇ0I�� �b�A��X����AƇXI��H�@�A����	���AƇ�I��p��A��������AƇ�I���������H��P����H�H��P���H��([A\A]A^A_]��C8H�{0�"�H�{H������������I���W��@��UH��AWAVAUI��ATI��SH��H��������H�wdL�4%(L�u�L��p���L���I�H�CL��pL���������H�sH��t-H�S`H��t$H�ƘL���=����tƃ��@1�1����u�H9��tG���uH���H��H9��ƃ�H�����H��H����{p�����tA�f���fD�����L�{P���H��M��t.I�L��P���L��L��H��P����xtH�5���L������E1��&DH�5���L��L��`���HDž`������H�;L��P����h�L��P���H��L���f��H��P���I��H��tH��PI�D�PE���Y��trH�qH��0���H���@���hH��L��0����@����H�;H�%�L��L���H��P�����H��P�������H��0�������1�H���V��H����H��t1H�;H�L���H���H��P����i�H��P������H�{H�����E1�1�H�5j
�����H�;u%���tH����P���*f.�H���@����H�H��0���L���H��P���H�*�H��0������H��0�������H��P�������H�3E1�E1�H�
&����L�����H�H��H�xpH��P8L���-��H�{E1�E1������1�L������H��L����H�E�dH+%(�&H���[A\A]A^A_]�H�{@�H�;�-��H��H�s@��H�s@�H���������H�����H��H��t/H�L��P���L��H��P����x�}H�5&��L�����1�H�;H��P������L��P���H��L�����H�8H��(������H��P���H��tH��PH��(���D�_E����������@H�1H��0���L���H��P���H��
H��0����(�H��0����L��H��P����@��H�3E1�E1�H�
�����L�����H�L��H�xpH��P8�Y���fDL���P���=���H�;H���L��L���H��P�����H��P��������u���fDL��0�������������L���Ɖ�����
�H��0���H��A� HcPHcNH�TPfD�
H�zH�	H����1�f�4O������H�D��������S����H���1�H�ߺ�zk�����DH�L��0���L���H��P���L��H��H��0�����H��0�������H��P�������H���H�;H�L�H�����H�������H�3E1�E1�H�
����L�����H�;H��������H���H�H�3H��E1�E1�H��(������L��H��(����=��H��(����A��H�L��H�xpH��P8L�����L������o���@���������L���Ɖ�����l�H��0���H��A� HcPHcNH�TPfD�H�zH�	H���_���H��H������6��H�����H��H��0����9���L��(���H���H���L���b�H���L���#�L��H��H��������H�����H�;L���������o���B���Bf�B(H���L��H��P������H��P����
��H�;L���H�k�H��0���H��P���H��H��0�����H��0�������H��P�������H�3E1�E1�H�
����L�����L�����H��(������L���	����@H��`���H�5���L��HDž`���H������x��H������`����7����H���O����H���sO����H���O����H���LO����H���	O����H���]O����H���O����H���O����H����N����H���kO����H���N����H���N����H���O����H����N����H���N����H���yN����H���mN���f.���UH��AWAVAUATSH��xH��x���dH�%(H�E�H��@����� ƅw���H��I�������ƃ�t
�����H�}�H�E�L�m��p���H�sPH����H�L��P0H�}�H�E�H�}�H�E����H�}������WA��A)�DH�I�4$�N)ȉ����t3����D)�L�NIc�A�ȉ�H�|GL����������������k���H����W������H�sPL��H��P0H�}�H�E�H�}�H�E��!��H�}�����G�W����I�4$��E1��N)ʉ���ƒ��a���H��H�5����H�}��W���I�4$ƃ��N�/���@H�E�dH+%(�}H��x[A\A]A^A_]�fD�������ƅw���ƃ��V����^���H�5���L��L�u�H�E��e��H�
~�I�H�U�L��H�M�H�M�H��h���H��P(H�E��x�QH�5:��E1�H��h������H�}�����I�1�L��L��P@H�}�H�E�H�}�H�E�����I�L���PI�L���PH�}��G��E1�����@����H���H�5�������tƃ�I�4$H�}��N�W���@H�}��_��H�CH��x���L��H�ߋ���#��w��������H�E�dH+%(�H��xH��[A\A]A^A_]�-�DL�sP�'��H��M��t(I�L��L��H�E��x�~���H�5��L������E1�����H�=P�L�}�tuM�������I�H�7�L��L��H�E��xt"H�5���L��H��`������H��`����a���H�5���L��L�}�H�E�H��`����i��H��`����6���H����H�=������n������I�4$�N�����H����J����H���K����H����J����H����J���ff.���UH��AWI��AVI��AUI��ATM��SH��H��L������dH�%(H�E�H�H��`���H��p����@������H�H��h���H�FH���H��H����������H���H��pH��H������������
Hc�p���H�����H���H��L��H��X���H������f�H������H���H������HDž���)��M����	E1�E1������1�L��H�����H������H���I��H�����H)�L9��gH��������L9��NJ��L���T��I��I����L��L��H������H���H��tH�����H)��N��L���M�L������L�����L�����L���g��f���H������L��@����
L�����H�������
�E�H������H��H�������~��L�4�������f�H��A�.�*��Y��1�1�HDž0���A��L��0���jL��jj���L��0���H�� M����I��HcE�Hc�4���L�����H�L
IcD$H���H����������H������H��0�������L�����H�{ L��H�A��������H��0�������H���E1�H�U1�H�5����H�����H�s E1�A�H�
$����H��H��x���������S	���������DH����A�D�q�H�Mc�L��0�����H����L��H������I�������B�D`HDž0���f����H����H��H�������~��E1�E1������H������1�L���R��f�H��0����H*��X������H,�H����������H������H������H9���H����!�H���„���H����������H�����H�Ǿ�i��H������������E1���d���H�����H������H��A�D��L��H����H������Dž���A�H��������PA��I�7XD��ZD)����D;f�]����H����H��tH��PH�C ��j�aH����������uH������v�����=H�����H��H����������f�f���*������Y��f/���	f/��I���������y	H�����������}f�f���*�p����YE�f/��c	f/c�H��������s
�XG��H,�L������L������1�L��I)����H��h���1�L��H�����L��L��H�I)�L�p����H��h���H�������L��H�T�H����1�L��I�����H�@�L��I�F����L��I�����H��L��I��q��1�L��I���d��H�H�L��L�H��H��I�F�E��1�L��I���8��H��L��I��%���L��I�����H�@L��L��I�F�����1�L��H���~��L���x���H������|�����7L������H������1�L��N�4`���H��h���1�L��H����L��L��H�I)�L�p���H��h���H�������L��H�T�H��g��1�L��I���Z��H�@�L��I�F�E���L��I���5��H��L��I��"��1�L��I�����L`�L��I��M�f���1�L��I������H��L��I�$�����L��I������H�@L��L��I�D$����1�L��H���E}��L���-���H���������H��x������H���H��tH�����H)��j���H��p�������H�E�dH+%(��	H�e�[A\A]A^A_]�@H������I��I)�M9���K�D5H������I���	L��L�����H������M)�I����H������H��L�����H��L�H���������f��������ƅ����D��L��HDž0���L��@������H��0����
L����d���H����H�C H���������L��L��HDž0����‰E����H������L��H�L��������H��0������H�C �
L��H������H���������L��L��HDž0����‰E��<��H������L��H��������H��0������H�s E1�L��A�H�
��������H�C H������H�xpH��P8L�����������u&H�����b���X���Dƅ�������@H���A�D$�L��H��,�H��X���H�fHn�H���fl�H���)�0������������H����E��H��0���H��8���ȉ�d��������q���fDH��A�����E1�L��jL��0���H���H��jL��j�q����X���f��H�� f/��'f/��H��������H�������B����X���H,�H�������)����H������L��@����
L�c L��L��0�������L��L��HDž0����‰E��g��L���L��H�����H��0�������H������L��L�c �
�|��L��L��HDž0����‰E����L���L��H����j��H��0������H�s E1�L��A�H�
ϕ����]��H�C L��H�xpH��P8L���Խ���\����I�?A��H����wH������������L����HDž��L������v����vI�7�m�L��0����N9���H��H�{ L���H��0���H����H���H�����w��H����L��@������H��0������H������L��L�{ �
� ��L��L��HDž0����‰E����L���L��H�c����H��0����2��H������L��L�{ �
����L��L��HDž0����‰E��_��L���L��H�����H��0�������H�s E1�L��A�H�
�������H�C L��H�xpH��P8L���"���H�����������H������������W��t�����H�H������A�D�
��f/����\v��H,�H��������DI���L��L������H������H��L�H9����H���������f��X���L,�M��LN��i���f��
�f/��.�\��H,����@�
�f/����\����L,�M��LN������H�xH�j�H9�sH�pH��H9��3H�rotaH�PA�(�@tefD�PIcD$H�H���mHc�4���H�A� fD�L�GH�H���I�A� fD�H�xHcE�H�H����H�H��0����)1�f�0�Jf�x��@f��f������H����H*������H*������^���L��f(�H��H��f�H��H�ff.�ff.�fH��fY�@�H9�u�A���>�I��J���Y��)�@L��H������H������肸��H������H������H������@H������L��H������H�������K���H������H������I�����DI�t$H������H����������H������H������H���e���f�L�-�L���!������s����߮L��跿���\���f�HDž0���L��)��[��H����H��0���H�����!����A���H��H�P����������AE�����)���H����������������AE�����E1�����AE��X�H��H�������u�A��'�H���o��l�����H���8����H����8����H���8����H����8�����
9����H���8����H���9����H���9����H���"9����H���E8����H���8����H���8����H���9����H���9����H���9����H���
9����H���O9����H���9����H���I9����H����8����H���8���f���UH��AWAVI��AUI��ATL��p���SH��H��H��X���H���L��L��P���dL�<%(L�}�M�����L���C����uL��������L���G������H������������H���=����������AoEL�牕D���)�`��������fo�`�����D����z�fHn�fl�f�H��M��L��H��)�`���L��P���H��`���RH��X�������H����$L��P���M��L��L��H��X���H���i�XZL�����H�E�dH+%(�FH�e�[A\A]A^A_]�DDžH������1��#����L�������� �E�L��P�Hc��Hi����*H��")Ѓ�H�H��H����#��H��H���H��1҃�H�H���fHn����fl���H�������@��H��H)�H������Hi��H������H�4�H�pH��H=��[�AoUH��M��L��L��P���H��`���H��f��)�`���RH��X����2�_L��AX�g�����u3��H���H��M��L��L��P���H��X���L��H��P��Y^�L���(������y����Ao]H��M��L��H�����L��P���H��H��X���fHn�H���H��`���fl����f��)�`���PH��H�������AoeL��P���M��fHn�H���L��H��fl�H��X���H��H������f��)�`����$�1�I�EM��L��H��L��P���H��X���H��H��H���fHn�H���AE���)�`����$���H����AoEM��L��f�
�L��P���H�ߋ��H��X���)�`���H��H����$��I�E�A~EM��L��L��P���H��X���H��H��H��H���fHn�H���flŋ��)�`����$�L�I�E�A~EM��L��L��P���H��X���H��H��H��H���fHn�H���flƋ��)�`����$��H����AoEM��L��f�0�L��P���H�ߋ��H��X���)�`���H��H����$��I�EM��L��H��L��P���H��X���H��H��H���fHn�H���AE���)�`����$�g��$�������H�����fHn�fl�f������L���@��������H���H�����P����������������H���3���@��UH��AWAVI��AUM��ATM��SH��H��xH�EH������H������H������dH�<%(H�}�H��讶�����0I��H��tH�x�g
H������H��H��H���������H�CPH�����H��t����H�tP�H�CXH�����H��t����H�|P��AoEI�$H�����)�P���H��t����H�TP�fH~�H�I�D$H��`���H����H��t�����H�LH�fH~�H�H9�fo�H��h�����fs�H9���f��fH~�uH��tH������H��P�����H������蕵��A�Ą�t>H�����袹��H���������H�E�dH+%(�kH�e�[A\A]A^A_]�@H�����������H��H����������H�����H��H�������Z���H������t^H������L�8�Q��H��M��t2I�L��p���L��L��H��p����x��H�5����L��觬��H�������������E1�A��ƅ�����"ƅ�����oCPf��f��fH~�)�p����H*��H*�x���f(��^0�f(��^,��_�f/x��E1���������H��������<����h������H���H������H�0H���L������L�ѵ����L���w�������2��H�����HDž��H��H������Dž������H�����������PH����H��p����"A�H�
��H��H���b���H������L��賰��I���M��H������L��H���蟾��I��I���H������H��L��H����̷��I�N L��H��x����
L��p���H������H������H��@���H��I���R���L��L��HDžp����‰E�L���������H������L��H�������5���H��p����Y���H��H�������
M�f H�����H��L��HDžp����‰E�H�������|���L���L��H�"��վ��H��p������L������H�������
I�^ L��芳��L��L������L��‰E�L�%��HDžp�������L��L���H���n���H��p���蒳��H��x���H�������
I�^ �&���H������L��HDžp����‰E�跳��L���H��H�
�����H��p����4���H��������	H����������H��H����	H�w�H�5x�1�艺��H��H����	H���%���H��@����	H�@�I�~ L���H��p���H���H��0���H��0���H��H�������i���H��0���荲��H��p���聲��H���I�~ L��H������H��p������H���H��0�������H��0����A���H��p����5���H�^�I�v A�H��p���H���A�L���H��H���������H��p������H�
��I�~ H������H��p���H�
�����H��0���L��艼��H��0���譱��H��p���衱��H�
J�I�v A�H��p���A����H�����H��L��H��H�������R���H��p����V���I�N �
H������H������H��h������H������L��HDžp����‰E��t���L��L���H��h����ͻ��H��p�����H��x���H�������
M�f 腰��H������L��HDžp����‰E�����L���L��H�l��o���H��p���蓰��L������I�~ L��H�����L��H��p���H��0����3���H��0����W���H��p����K���I�~ L��L��H������H��p���H��0�����H��0�������H��p����
���I�~ L��L��H�I����H��p���H��0���豺��H��0����կ��H��p����ɯ��H�
��I�~ L��H��p���H�
�����H��0���L��L�������b���H��0���膯��H��p����z���H��p���H������M�f 賨��H�
L�H���������L��H��0���L��H��p�������H��0����+���H��p�������H�
��I�v H������H��p���A�L���A��ݮ��H��p������H��M�f ����H���H��L��L���H��p���脹��H��p���H�F�衮��H��p���I�~ H�O�H�����L��H��������H���A���H������e���H��p����Y���H�
��I�v A�H�����A�H��L�������H���������L��藦��H������苦��H����������H�������s����fDH���`���I��A��H�y�;H�AH��u�n���ff.�f�H�H���U���D;xu�H���I��HDž�H��H���������I���H������H��H������I��H	�H��ttH��@����
H��H���������L��
�E�H������H��H�������¬��HcUĉ�4���H�L�l
D��虥��H��E���=H���H����ڬ��I���H������H��H���譯��H������
H������H��H������I��H�������1���H��L��L���s���L��p���H������H��H��L���W���L������H������H��L��L�������7���L�������1�蓱��L��fH~����1���z����
��fI~�fHn�裨�����{H������迮��H��H�����1�1�H������A�.A�H��HDž����jjj�?���H�����H�� H���lL���c���H��H������1�1�HDž���A�A�.�jjj���L�����H�� M���4(��IcPHcCL�d
E����L���+���H���#���H���D�@E���gH��@���D���
H��H������葤���X	�Eĉ�脣��H��0���I�ą���I�~ H��0������H�Cz膵��H�?�I�v H��P���A�H��P���A����H�����H��H���j���H��P����n���H�����H��0����Z���H�������.���H����B�����DL��p���H��L���f���H�������L�����H��x�������A�H��tFH�WH�OH�H9���	H����8���G�P��W����
E�����M��tI�(����L���L����`L��蟡��H�����H��t=H�WH�OH�H9��H���8���G�P��W���M
H�������j������DH�i�I�~ L���H��p���H��H��0���H��0���H��H�������³��H��0������H��p����ڨ��H��p���H������I�^ ����L��H�Ax���H��H��p����u���H��p���虨��I�v ���H������H��A�A�L��H��0����W���H��0����[���L���Ӡ��H�����G���H�������(�&M��tI�(航��L���Ы���`L���#���H�����H��tGH�WH�OH�H9���H����8���G�P��W��u詽��f�H���������H���������H�������L����a��H�y��1�H��H�L��I��M���#�I��HA9�t*H�0H�����NI��1҉�H��I9����H��A9�u�I�9��������fDH������A�H�
x}H���<��������^п`�^��H,�H��p����H,�H��x���趟��H��H��I��舤��H��p���1�L��藣��L�����I�~ H���������H��v�\����x�����
�fIn��������C����f����H���_����`�f�H���H������L������D`D��蟲��H���L������HcQH�H�DH�TH�
D|H��H9�s
H�QH9��vH� scaH�A�(�@leL�hfD�HIc@H�H��� HcCI�A�E, I�}H�H����A�D)H���D�`�T����H�������$���H��H���٩�������������L��p���H������L��襞����p�����������ƅ����ƅ����H��������L������M��t?I�UI�MH�H9���H����8��A�E�P�A�U���A������b�DH�xH��zH9�sH�QH��
H9���H���H�AH���H�AHc�4����Ae(H�H���"HcE�H��, L�OH�H����I�A�)E1�fD�D�ifD�X�4������������?���f�H�قH�0H���WH������H�����:������DL������H�5���L��HDž�����ߙ��M���/�I�L��L��HDž����PH��p���H�
��H�H�@(H��0���H��0���H������H���H��0����������^���H��p���H��tH��P�������I�H�
5�L��L��H������H�@(H��0�����H�5�H���H��H�����H�
)���H������L�
���L�T���H��QH��p���H��x����-���H�5����L���ޘ��H��0���貢��ZYH������L��豙��H������L���˜��H��x���H��t=H�WH�OH�H9���H���8���G�P��W���uH�����H��tH��PI�L���P��f�H�HH�XxH9�s	I9���H��I�D$H�̿I�D$HcE�L�,H���~L�)1�f�1A�\$f�y��H�����H���������D�H�������W���H�=`�H�0�(���H�Q�H������H�0��f������������f�H�H�
f���H�GH�PH9��~H�PH�
v���H9��c�P����DH�H�
&���H�GH�PH9��]H�PH�
6���H9��B�P�%���D�����������f�H�sL������H�������9���L������H����������fDI�pL��L������H����������L������H��������������������f�H������H��L�����H���h���fDH�H�
F���H�GH�PH9���H�PH�
V���H9����P�J����H�sH�=ҍ蝜��H�5ƍ����H�H�
��H�GH�PH9���H�PH�
����H9����P�]�����\���H�=e~H�0�-���H�V~H�0���H��H����H������L��H������H�������Җ��H������H������I�����H������H������H������袖��H������H������H�����fo�AD$�
����Դ�����fo'�A�e���蹴������说��������}���H��������H������H��j��������H��������H������H����������������H��x������L��A��踣��H������H��L���&����2���ƅ���������H��������H������H�����������H��������H������H��H�����������+���I�EH�
���I�EH�PH9�u4H�PH�
���L��H9�u�P���L��蝳����裘�������L���I�E���H�������H��������H���`���������H��������H�������H�������H���(����H���-�������������H��������H�������H���]����H���m����H���V����H���[����H���U����H���C����H���7����H���+����H�������H�������H�������H���5����H�������H���.����H���
����H�������H�������H�������H���b����H���J����H��������H�������H��������?����H�������������H�������H��������H���:����H��������H���S����H���������UH��AWAVAUI��ATSH�����|���H������H��X���L��`���L��P���dH�%(H�E�H��PƇ���QƅG���H������E1�HDž����L�%��蹝��Džx���H������H��tjH������L��聧��D�pH��A����A��c~'A�F���1wIc�L�>��@H�I���H��PI��H������L������I9�r�H�E�dH+%(��,H�e�[A\A]A^A_]��H�H��I���H��P����PI���H��H��p���H����H�����H��H��H��h���趞��I�]H��tI�EH���}����H������H��h���H������f���HH��h���I���h���H��p����|����������|�������H�����H��H��h����=���A��l����H�K@H�S0H�sA��j��H��P���E1�A�H��H���\���H��h���H��轤��H��蕏��H��h���H������f��t\I���I���E1�1�H��lH��h�+���H��P���H��H��H��p���H���ϒ���1�H��L���}L��H���e���H��h���I������������|�������D��|���H�S1�L��H�sI���6/������|�������L�����H�sL��L��h�������H��P���L��H��H��p����0���H��0H����������H��������D��|���H��1�L��H��p����.����|����K���H��H�SpH�sL��`���L���I��H���L������AYAZ�������|��������A�����I���H��I���*Z����D��|�������L�K`f�L�sI��I���L��L��p���)�P������H��L��L��H�����L��p���H�����L��P���H�����H�Sp��`����:��A^X�V���f���|����C���H��P���H�sH��I��H��p����֙��H��H�KHL����`���H�S8L�KhL��L�CX����XH��x���ZI�����L���7������f���|�������A����_
I���H��I����U���D��|��������L�sL�����f�L��H�����I���)����H�����H��p����П��H��p���H������H������H������菞��L��H������H��P���H��H�����I��H��p����Ř��H��H�S8L����`���H������L��L�����L������������f���|�������H�C0�p������I�E ��k��
I���L�����L��L��h���H��p�?���L���G���H��X���I���I��HDžP���H���H��P���H��H��p����ڗ��H��L��诎��I���L��� ���oCL�s0E1�1�H��p���E1�L��L��)�P����&��H��h��������D��|������H�s �S0L��P���L���F��9ЋS,HDžP���N��u���H��P����WH���������I�E ��k��I���H��pH�����H��H��h�������H��h�������H��X���L��I���I��HDžP���H���輖��L��h���H��L��芍��I���L�����L�����D�K(1�E1�H�sL��L�����H��h�������H������t���I��������|��������H�s �S\L��P���L���F��9ЋSXHDžP���N��M���H��P����OH���������I�E ��k��I���H��pH�����H��H��h������H��h�����H��X���L��I���I��HDžP���H���蔕��L��h���H��L���b���I���L������H�S(H�C0H�sE1�L�����L��H)�H��H�I��H��L������H��h����Ǚ��H������;������fD��|��������H�s �S,L��P���L���F��9ЋS(HDžP���N�����H��P���D�GH�����E���a���I�E ��k�|
I���H��pH�����H��H��h���赒��H��h���蹒��H��X���L��I���I��HDžP���H����Z���L��h���H��L���(���I���L�����L�����H�sE1�1�E1�L��L��������fD��|����s���H��H���7���f���^���I���E1�1�I��I���H��lH��h�����1�H��L���rD���!���D��|�������L�sL��菔��f�������I���1�H�z�E1�I���H��h蠄��H�sL���tA��H��P���L��H��H��H��p����8����H��L����C��H��I���dž�����f���|����s���L�sH��L���ӆ������L���Æ������D��|���L��1�H��L��I���&�.���f.���|�������H��P���H�sH��H��p�������1����tH���H��H�KxH�ShL��L���PH��p���D��|���H����>A[H��A^I��������D��|������H�CPE1�H��H��H����͑���…��s�L��p���L��H���H��h���L��I���H��L��腛���xu��	H��I9�u�L��p���I���&�f���|�����L�sL���׊��f�����I���f�f�ɋ�h�������k��l��P����C�*��Y�����f/��Vf/m���
g~f(��X��,��X��,���S���E1�1�I��H��P��������H�����H��I����!����1�L��L���A���>�f.�H�I���H��PI�EXI;E8��I;E`�A�X�I�}(I���h����� ���I�]H��tI�EH������H���y���I���L��p�D����f�D�sH�H��I��I����PI�}(D���<��������|����s�I���E1�1�I��I���H��hH������H�S(H�s1�L����3���:�fDI����|����#�I���I���1�E1�H��hH���̀��H�s1�L��H���3������I����|������L�s I���1�E1�L��L��脀��H�sL��L��H���R3����D��|������I���E1�1�I��I���H��lH��h�1����K4�S0H�sL���5���N�f.���|����3�I���E1�1�I��I���H��lH��h����H�s1�1�L���95����@��|������I���E1�I���1�H��lH��h���H�C(L�CH=�����H��H�{ L)�H�NH�V�H�H�H��HH�H�S1�H�����t#H��H)���H��H�H�H��H��?H�H�L�H��P���L��I��H��H��?H�H��H�H��X���H��P���H����8��� �@A����H�@�p���I�������XI�U ��ku
��|�����H�xA��H�a�����A�ƅ����H�S�JH�Z������H�B	H�L

�%ff.�ff.�f�H��H9��N�x� H��u�E���>H��A���fD��u;H���H9�tH�x��H�r��Մ����uAƅ�s�@ƅG����j�@H��L���>��A�EL��p�I����p�@����I�EpH�@�H����1�L��H��L���E��I����H��p���1�H��L���D��H��p���I�����H��h����k���j�L�sL���ʒ��L��f�H�����H��P���H��H�����I��H��p���)�����Ջ��H��H�KHL����`���H�S8L��L�����L������������f�H��H�sL��)�P���H�SpL�K`I����`���H���L��P������A[[��H�x�H��^譈�����*H��p���E1�H������L�=�^L��h���L�������DL��蠔���P����"I��H������H�pH������H9�r�H��p���L��h���M����H������L�x��H��P���L�s0H��p����oCH��p���L��I��I���)�P����������L�����H�sI���L�����H��������L�����H�sI���L���ð����L�����H�sI���L��觰��H��������H�C�p���`���H�x�H��]�V������GH�C�p�7���H��h���H�s�~�������+���x��	��L�5�[H�x�	�	L���������H�C�x	���H�x�	H�f]�	�ņ��I�������H������L���ڒ���x�\L������H������H9������jI�����|���H������L��H���C.���tȃ�L�������B���H��I������'�H�x�H�g\��������H�C�p������|����{H�C�p������H�x�H�\�Ѕ��H�C�p����L�pH��h���L��p���L���
���L��f�H�����H��P���H��H�����I��H��p���)��������H��L����`���H���H���L��L�����L���������.�����
L������I�}(I���~����
���|���%�����C�����I�uH��tZL����z��M�uI�EM��t>I�~@�_���A�~8��I�~H��tI�v(H)��O|��L����z���PL���:|���CH�s H��P����¹H��H��p�������H��@���H��H��8���I���=���L��H������\������-ƅH�������
��H���u$�@f�H�������D����x�~
H������H�pH������H������H9�r�H�]�H��t=H�KH�SH�H9��H��a�8���C�P��S����H��8�����y��H��p����K����V���H�s �SH��P����H��H��p�����H�����H��H��H��h����k���H��p���E1�H������fD������H��認��H���{��������H��H��H��H9�s	f��������f����H������1�E1�HDžH���HDž8���H��0����8fD������f��C H��(C�f�[�A��fD;������?H��0���H��p����C|��H��p���H�������0|��H��p���H�������|��L�����H��p���L���|�������������������H9�H����Z���H��8���H��H���H���������H)�H��H��H��H�3333333H9����H���HE�H���H�3333333H9�HG�H��H��H��(���H��H����������������� ����y��H�����������I��������� ��������H�H��8���f��B f�BH9���
L��ff.�ff.�ff.�ff.�ff.��oH�H H��(H��(B��o@�H�J�B�H9�u�H��8���H�C�H)�H��������H��H��H��������H!�H�D�I��H��8���H��(H��t H��H���H��L��8���H)��x��L��8���H��(���L��8���L�H��H������H��H���H��8���H)�H��0���M�~I��L���v�����IL���v�����8D��|���L��1�L��L���?H��h����Cz��H��p���觅��H��8���H�������H��0���H���hw�����H�C H�SH=�����H��H)���H��H�H�H��H��1�H��?H�L��H���L������L������1��DL��萋���P�����H��H������H�pH������L9�r�H�������L�sH��L���~u������L���nu������D��|���L��1�H��L���.H������L�x���H��8���L��L��L��H����H����H����H��H���H����:�����H�x�H��T�~����u��|���%��tH�C�p�s�C��t�H�s L��P�����H�����L���L��p����̓��H��H��h����nv��H�������H��H��H���蓄��H�������H��H��8����x���H��L���=���H��H���H�����H��8���H������H������H��H��0���I�����L��H��蛄��I�}H����
�Yy��f���`
I�uL���ss��I�]I�EH���f
H�{@�|���{8�H�{H��tH�s(H)���t��H���ns���PH����t��I�EH���
��m�Y����f��I�����hf/��P��	f/�m�����s�
�l�X��,��� ���f�ɈPf/���	f/�l����s�
gl�X��,ЉPH��h���H�p輆����,���I�}���t1���������(����GH���t
1�������GL�x��f���c
I�uH��tVL���r��I�]I�EH��t=H�{@�{���{8��H�{H��tH�s(H)��s��H���r���PH���s�����u#�8DH������L�����x�DH������I��L������I9�r�H��0����q��H��8����q��H��H����q��H��8���H��tH��H���H)��r��H�����I���~q��H������rq��H��h����&q��H��p��������E����1�H��P���HDžP���H��H��p����	x���LD��H��H��p���A��}��H��P����@D�pD���r��H��P���H�����H��E����H���4z��L�����I�} H��IL�Ѿ�����H��p���I�u H��}H�����A�A����H�����H����y��H�����I����y��H���Dr��H������y�����H��A��A)����H��P���H�K@E1�A�H�S0H�sH��H���r���,�H��P���E1�A�H���pr����H���G�f/�r4f/lj��������
ai������H���7����
@i1�f/�����\��,�����
if/��
f(��\��,���H������H��H��h���H�����H��8���H���:|��H����t��f���0�P�oq���H��H���o��H�C����f�H�{@�CH�C(�C8H�C@C��u��M�uH�CHI�]M��t>I�~@�-x��A�~8�&I�~H��tI�v(H)��p��L���n���PL���p����G����GI�}H��h����z��f��I�U��h�Y�P�����H����Bf/���f/�h�����s�
�g�X��,���H����B�P�B8��H������>I���-M�uA�N8������}�yI��A�~8�H������L������I9���H������L��趃���PH�Á�u�H�C�x�M�u�1�L��H��L���2��H������L�x�8��H�x�
��H���
L���
� w����������L��1�1���A�#H�x
fD�@HcAH�H���1�D�sf�t
�+��������������5�H��� ���H�sI�^0��u}H���ky��A�F8�7���ƅH���H��h����l���U�H�@�x�t�H�x��H��L�av������H�����L�����1�1���H�s0I�^0��t�A�F8H��H��0����x��H��0����c����}�ƅH��������ƅH������H�x�H��H��u����tH�C�p��H��`���H��tZH�=�cH���H��tDH��P���H�|cH��H��p���H��H��H��P����x��H��p���H�53u���k��I���L������H����L��p���L��L������M��D��|���ff.�f�L9�sSH������L��D��H���H��������x�L��p���I�׃�����H������H��I���U�H���x������L��p���I�����H��`���H��p���H�5tt��HDž`����Tj��H���-���H�H��PI���I���H��tH��PH��P���H��I��H��P���HDž0���1�HDžH���HDž8������
�c1�f/�� ����\��,�������x����
�F��x���H���H��H��0����x��H��X�����4���H�H�HcRH�\���k��I�ƅ��I�EH�x@L�p@�<s���L���H�@�x
�	���H�x�
�
H��I�s�����@����f�H�@�x�����H�x��H��I�Hs�������c����
vcf/����
�b�\��,��x����
�b1�f/��,����\��,�����H��E�H�=�`�o���"���ƅH����3���H�qH��H���H��h�����i��H��H���H��h������H�x�H�yE�r����tH�C�p�c�I���I�������]��H������I�_H���~���x�oL������H������I9����|���H������I���L��H����L��������xƃ�����H������L��H��I���Y�H���s������H��H����m��f��uH��8����m��f���w���I�uL���g��I�E������PH�H�PH�PH;P tH�P H��H���H�@HH���2m��f��t%I�}H���1s����G����DI�uL���8g��H��8���H���l��f��t%I�}H���r����G�����I�uL���f��I�]I�EH������H�{@�p���{8��H�{H��tH�s(H)��rh��H���f���PH���]h���y���������H�H�
@p��H�CH�PH9���H�PH�
Pp��H��H9��h�P���A�F8I�~0��r������H�x��H��F�?p����������S�V���I�}1��Dz��H��0���H���f��������y�P�nh���H��H���nv��H�C����f�H�{@�CH�C(�C8H�C@C��l��M�uH�CHI�]M��t>I�~@�,o��A�~8��I�~H��tI�v(H)��g��L���e���PL���g����G���L������sH��0���L��L��(����h��I�}H��(����p��H��(����Qe��I�E���L����������C8H�{0�oq�����H���b����J�A�F8I�~0�Oq����H�@�x�����H�x��H��A�n�����a���I�����H�xH��X���H�HcPH�H����Hc�4���H�f�_H�yH�H���uA�^f�D����C8H�{0�p���������C8H�{0�p���>���H��������H��(���H���[����b�H���H��m����sh��A�F8I�~0�Up���O�����x���H��@����
L��(���H��I�ƍ^�yr��fIn�H��(���H�������E�H��X���H������H��BH�����H������fHn�fl�)�����+I�EH������H�x@H�P@��l����x���L��(������H�@�x	���H�x�	L��	�m�����	���s���x���L��@����
L���^�q��fIn�L�����H�������E�H��X���L��H������H�2BH�����H������fHn�fl�)������*I�EH������H�x@H�P@�l����x����+�����x���L��@����
L���^�"q��fIn�L�����H�������E�H��X���L��H������H��AH�����H������fHn�fl�)�����A*I�EH������H�x@H�P@�k����x�������H��0���H�� ���H��(�����b��H�� ���H��(����^���H��H�pH��(����b��H��(���H��������H������I������H���}���H�������H���9���H���\���H������H���
���H���F���H���	���H���I���H������H������H�����������H���&���H�������I������H������H������H���j���I������H�������H������H���2���H���I���H�������H�������H���j���H���R���H���q���H���q���H���q���H���q���H������H������H���p���H���+���H�������H���$�f���UH��AWAVAUATSH��H��H��h���H��P���H��@���D��L���dH�<%(H�}�H���4e��f��u/H�E�dH+%(��H�ĸ[A\A]A^A_]�f.�H������H�s A�A�H�
9H�Ǻ��H��0����h���s�
L��@���L��F�C�m��D�`�E�D���a��H��x���I��E���H������H�s A�A�H�
�8���H��H��(����h��H�{ H��x������H�>8��r��L��P���H��h���L���f��f�H����L��H��)����fHn�H�����fl�)� ����'���H������
H��(���H�����L�{ H��8���H��L��L�� ���H��`���H��X����2g��L��L��HDžP����‰E���g��L���L��H�u7� r��H��P����Dg��H��`���L��L�{ �
��f��L��L��HDžP����‰E��qg��L���L��H�7��q��H��P�����f��L�{ 1�I�����tH��X���I)�I�F�I�vHH�
L���lf��L��L��HDžP����‰E��g��L���L��H�_6�Zq��H��P����~f��H��8���L�s 1�H=���tH��`���H)�H�P�H�pHH�
L���e��L��L��HDžP����‰E��f��L���L��H��5��p��H��P���L��0����f��H�{ L��L��H�@u���H��P���H��iH��0����p��H��0�����e��H��P����e��H��iH�s A�H��P���H�����A�L���H��H��8����me��H��P����qe��H��`����
L��H���
e��H��X����
�E�H������H��H��H��`�����d��HcUĉ�4���H�L�|D���]��H������E���)H�{ H���������H�*5�o��L���H�s A�A�H�
75���L���d��L���[��H��P���H���H���H��h���L����Z����L���E1�E1�L��H��TL��H��H��0�������H��0����`d��L���(i��L����\��H�������Dd��H��8����\��H��(����\��H��x����@D�pD���\��H��P���I��E����H�{ L���H� 4�n��H��h����1�H�����H��P�����c��H��x����c��H��0����1\�����@H��@���H������L������L���f��H��h���L���
b��L��L��L���\k��L���Df�������H�HH��8H9�sI�UH��
H9���H�0�I�EH�-�I�EH��x���A�E(#HcFL�<H���)J�9�)1�f�E�uf�H���fDH�HH�9H9�sH�pH��
H9���H���H�PH���H�P�@e(Hc�4���H�H����HcE�H�A�,fD�H�yH�H����H�H�������)1�f�0D�zf�x�A���f.�H�xH�F9H9�sI�VH��H9���H�pattI�FHcE�A�nA�FerfE�VL�<H��uyE1�E�ffG�L>����H��H��L���IY��H������L��H��`����1Y��H��`���H���6���f�H��`���H��H��X����
Y��H��X���H�����L��L����X���w����foXAE�-���fDH�qRI�F�'����foh@�v����
\����H���6���H���B���H������H������H������H������H������H�������H���~���H������H������H������H�������H�����f���UH��AWA��AVM��AUI��ATI��H��SH��H���W����t
H���W����u#H��L��H��L��[L��A\A]A^A_]����@H��E��H��L��[L��1�A\A]A^A_]����ff.���UH��AWAVM��AUI��ATI��SH��H��H�EH����D�����H�����dH�%(H�E�1�H�����HDž���H��H������\��L���]��L��I���p\��A�9��A�t$�
�FA�D$H�E�H��H������`d��D�x�E�D���W��H�����I��E���I�t$ H�� ���A�A�H�
O/���H��H�������^��I�|$ H��������H��.�i��I�t$ H�R�L��`���A�H��`���H��@���A�L�����H��H������j^��H��`����n^��H����H��oH����)�`���H��t����H�DB�fH~�H�H�SH��p���H����H����H��x���H�����L��H��H�����h��H�����L��H���a��H���Z���H�߉������5U��H��A���z[��H��H���T��H���V����H���`��H������H���MX��A��H���qY��HDžp���f�)�`���M��t'I�vM�.1�I��M)���L��H��h����2j��M��H���T�����H����L��H��L�����H��`���H��tH��p���H)��U��H����_��H�����S��H������oU��H������cU��H�����D�hA��D���lU��H��E����H�����H������\��H������\��I�|$ H�������H��,�Tg��H������x\��H�E�dH+%(�MH�e�[A\A]A^A_]�fD�����H�TB�fH~�H�����DH���R�������D�����H��1�L��H�����������H�xH�3H9�sI�PH��H9��gH�maskI�@HcE�H�H����1�E�xfA�t����L���X�����Kf��H��`���H��H)�H���H�@HDž`���HiɗH�H��H�����H�HH�����*��^
L�\���H��A�.1�1�jA��jj�T��H��`���H�� H�����H�����H�;H���Z��H�������Z���V���fDH�HH��1H9�sH�SH��
H9��GH�@yH�CH��xH�CH������C(#HcFL�4H����J�1�)1�f�D�kf�H����H��A�.1�1�jA��jj�S��L��`���H�� M���{��A�FD�h	D���R��H��E���,H�����H�������Y��L����Y���;���@H��������L9���L��H�������R��H������I��L��L��L9�t7ff.�fD�oH��(H��(B��o@�B�H�H�H�J�H9�u�H��`���H��tH��p���L������H)��XQ��L������K�0L��`���H��p�������f.�H�����L������H������P��L������H������;���H��H��L���aP��H���g���f�H�xH��/H9�s
H�SH��	H9�ryH�<wH�CH�9wH�CIcFA� fD�CL�<H��u=1�D�kfB�|;�x���@H�	wI�@���fo�vC����I�vL���O���fo�vC�H�E�dH+%(u
�xU���S���R�����B����I���u����H�������H�������I���l����H���k����H���k����H��������Uf�H��AWAVAUATI��H��SH��H����0���H��H���H��(���dH�%(H�E�1�)�`����Z��I��I�D$H���H��P���H��H��@����WV��I�D$�������7���H�L�iH��8���M9���1�L�=zxH��H���L���c��I���@=��B��o~-��p��#w%Ic�L�>��I�I�t$L��P���I��M9�r�E1�I�D$H��t-I�T$`H��t#H���H��`����`��I��$�I��$�H��(��������L�(E���61��/fDH��p���I�pL�� ���H��H��8����U����0���H��8���H��X���L��HDžX����P�������L�� ���E1�I�|$I��$�A���tM���H��I���I�PxPI�phD��0�������H��8���XZ�qZ��I�|$H���I�T$`H��t(H���H��`����_��I��$�I�|$I��$���~f.��kU��I�|$��u�H��@����K����7���I�|$��_���H��@�����L��H�E�dH+%(�9H�e؉�[A\A]A^A_]��I�I�t$L��PI����M9���������DI�I�t$L��PI��M9����������Ao@pI�|$)�`���H�������1�� ���fD�Ao@8I�|$)�`���H������1����fDI�@0f�x������Ao@I�|$)�`���H�������1�����fA�x0�\����Ao@I�|$)�`���H���a���1����f.�fA�x\u�I��M9���������fDfA�x,u�I��M9���������fD=���I�x�G��	ti������H����H��&��S���������I��M9��O������@H��8���I���X��M9��-������f.�H���	H�*�	L��8����oS����tHL��8���I�x�G��	�[���H���	�	H��'�:S����tL��8���I�x�G�*���A�����H��X���H��p���HDžX����
P��L�5�(L�������tdI�t$PH��H��P0H��X���H��p���H��p���H��X����ER��H��X����G��t���u�H���L���AI����t�AƄ$��f�L���� ��H��p���L�5&(��u}H��X�����Q��I�D$H���I�T$`H����H���H��`����[[��I��$�H��(���I��$�L�(������x���H�zL����H����t	AƄ$�L���������s���I�t$PH��H��P0H��p���H��X���H��X���H��p����:Q��H��X����B��t���u��I�T$`H��t4H���H��`����Z��I��$�H��(���1�I��$�L�(����H��(���1�L�(���H��(���L�(�&����K����H�������H��������H�����ff.���UH��AWAVI��AUI��ATI��SH��H��HH�EL�E�D�M�H�E�dH�<%(H�}�H�~ �V��I�L$(H�L�xI�D$0H���?H���NI�6H)�I�VH��L)�H	���D���H�E�E���TH��8�H����H��L��L��H��jL�M�D�E�H�M����X�Z�H��H�s A�H��I��A�H�
 ����O��H������L�u��jU���U�H��?E1�E1�L��L��H��H�E��ȳ��H�}��OO��H����cO��M��tL���G���L���9G��E����H�E�dH+%(�[H�e�[A\A]A^A_]�fDE1��a���f��f��I*U�H*��^�H����f��f��H*��I*M�^��!?f.�z��f(�L��H�U��M��U���V��H�U�f��U��M��H*��Y�f��f/��Rf/�>H��������s
�Xv>�H,�f��I*��Y�f�f/��6f/
V>I������������X
6>�L,�����@�`>f.�z�����f(��6���f��f��H*��I*M�^��)>f.�z�����f(����@H��8H��H�E��H��H��L��L��H��8H��PL�M�D�E�H�M���^_�l���H�u�H��8�J��H�E�dH+%(��H�}�H�e�[A\A]A^A_]�&M��fDL����Y�������H=f/�sA�\*=�H,�����(=f/�s�\
=�L,����I�����H���q����G����H��������H��������H��������H��������H�������H�������@��UH��AWI��AVI��AUATL�e�SH��L��H��H�EH��h���D��d���H��P���H�EL��X���H��H���dH�4%(H�u�H�q �K��I�F(I�N0L��H��p���H��x����	C��H�L��H�U��@�E��Q��H�H������H�U��@�E��Q��L�m�1�L���8K��L��L��L���zN��L��H��@���I���XC��H��p���L��L���VI��L�}�L��L���WI��L��L����E��H��x���H��@���L���&I��L�}�L��L���'I��L��L����P��L�}�1�L���J��H��h���L��L���T��L��H�E�H�U���B��L���P���of�E�L��L��)E��|U��H���L���-A��L�kH�CM��t>I�}@�J��A�}8��I�}H��tI�u(H)��B��L���A���PL���~B��L��H���L��P���L��H��H��X�����d���踮��H��H��tHǃH��PL��0Hǃ0M��tL���B���L���B��L��(1�ƃ�f��`Hǃ(M��tL���PB���L����A��L�kM��tH�CL���*B���L���A��H�sH��tWH����?��L�kH�CM��t>I�}@�rI��A�}8��I�}H��tI�u(H)��bA��L����?���PL���MA��H����QI��L���	A��H�E�dH+%(uMH�Ę[A\A]A^A_]��A�E8I�}0��K��I�}H���V����]���A�E8I�}0�K���f����C����H���P����H���k����H���@��@��U�H��AWAVL��0���AUL�����ATI��L��SH��dL�<%(L�}�I��H�2HcVH���ON��L���7?��H�����L��H���I��1�L��H����N�����>��I�L$@I�t$8L��H��H���f���H���nQ��L��H���L��H�H��H��H��H�@H9�u=�?��L���L��L���M��H�E�dH+%(uH��[A\A]A^A_]�������B����I���U����H���]����I���p����I���:�����H��(������g?�����H��0�S?����H��(�C?����H�� �3?����UH��AVAUATI��SH��H��dL�,%(L�m�I���h5��t<H�e5I��H��L��L����R��H�E�dH+%(u@H��L��[A\A]A^]�DL�5!5L���AB����t�H�62L��H�5��E����`A����UH��AVAUATI��SH�^�H��dL�,%(L�m�I����4��t;H��4I��H��L��L���SR��H�E�dH+%(u?H��L��[A\A]A^]�@L�5�4L���A����t�H��1L��H�l4�7E����@����UH��AVAUATI��SH�^�H��dL�,%(L�m�I���'4��t;H�$4I��H��L��L���Q��H�E�dH+%(u?H��L��[A\A]A^]�@L�5�3L���A����t�H��0L��H��3�D���� @����UH��AVAUATI��SH�^�H��dL�,%(L�m�I����3��t;H��3I��H��L��L���Q��H�E�dH+%(u?H��L��[A\A]A^]�@L�5A3L���a@����t�H�V0L��H�,3�C����?����H�=,3H�%3t�f.�UH��H��H���A��H��2]�f.�D���M�����H��0�M����H��(�M����H�� �sM����UH��ATL�%�"SH��I�4$H��t"H��L��C��1�1��L��H��[A\]����vG��L��H�0�KB��I�4$��D��UH��ATL�%_"SH��I�4$H��t"H��L��C��1�1��?L��H��[A\]����G��L��H�0��A��I�4$��D��UH��ATSH��dH�%(H�]�H����1��t.H�5�1H���G��H�E�dH+%(u;H��H��[A\]�@L�%i1L���>����t�H�~.L��H�T1�B����=�����UH��ATSH��dH�%(H�]�H���1��t.H�51H���wF��H�E�dH+%(u;H��H��[A\]�@L�%�0L���=����t�H��-L��H��0�A����=�����UH��SH��H�H��tH���:��H��H�]����:���H�]���f.���UH��SH��H�H��tCH�{@��A���{8u<H�{H��tH�s(H)��9��H���?8��H��H�]��P��9��DH�]���f��C8H�{0�SD��H�{H��u�����UH��AWAVAUI��ATI��SH��H�H�H�HcPH�FHc@DL�tD����9��I�$E��uH��[A\A]A^A_]�H�XI�EM�mL�xH�H�0HcFH�H��uEfA�H�H�{f�IcEDL�<H��uII�$D�p1�fB�D;H��[A\A]A^A_]�f.�H��H��H�U��8��H�U��f.�L��L���7�����UH��AVAUATSH��H��dL�$%(L�e�I��H�wH��t(H�W`H��tH�ƘI�|$8��I��H���H�����H���T�����ƃ�tƃ�ƃ�L��L��P�������
L����h9��H�S0�E�H�HcRL�lD���N8��H�� ���E����L��0���H�;H�MO���H�� ���L��H��0����BJ��H��0����f?��H�;L���H��gH��(���H��0���H�_XH��(����J��H��(����'?��H��0����?��H�3E1�E1�H�
[���L����>��L���v7��L�cxH�CxM��tL���]7���L����6��H�� �����>��H�E�dH+%(�8H��[A\A]A^]ÐH�H.H�5�H9�s@H�xH�VH9�s31�ff.�fDf�<f�|PH��H��u��2f.�foh\�(�@(erf�x,@fo\\@H�s0HcFL�4H��uWHcE�L�.f�1H�yL�4H��u+J�7�)1�f�H�� ���D�jf�H�;���f�L��L���E5��H����H��H��L���15��H���H��(����=��H��0����=��H�� ����=��H�E�dH+%(t �d8����H������H�����H���H���Q>�����UH��AVAUATSH��H��dL�$%(L�e�I��H�wH��t(H�W`H��tH�ƘI�|$p�F��H���H�����H���4�����ƃ�tƃ�ƃ�L��L��P����w���
L����H6��H�S0�E�H�HcRL�lD���.5��H�� ���E����L��0���H�;H�-L���H�� ���L��H��0����"G��H��0����F<��H�;L���H�ddH��(���H��0���H�?UH��(�����F��H��(����<��H��0����;��H�3E1�E1�H�
;���L����;��L���V4��L�cxH�CxM��tL���=4���L���3��H�� ����;��H�E�dH+%(�8H��[A\A]A^]ÐH�H.H�5�H9�s@H�xH�VH9�s31�ff.�fDf�<f�|PH��H��u��2f.�foHY�(�@(erf�x,@fo<Y@H�s0HcFL�4H��uWHcE�L�.f�1H�yL�4H��u+J�7�)1�f�H�� ���D�jf�H�;���f�L��L���%2��H����H��H��L���2��H���H��(����:��H��0����t:��H�� ����h:��H�E�dH+%(t �D5����H������H�����H���H���1;�����UH��AWAVI��L��AUATI��SH��H� H��H�W�L�H�u�H�w��&B����uBL�;L�M�M�f@K��H�H����H�I�H�L�0H�CH��L��[A\A]A^A_]�@I��H���H��H��<�H��H��H�U��b2��H�U�1�H��I���4��L�K0H�sH�CE1�H�{H��t,H��1�H�6H�A@I��I��L�M��tzI�H�H�H�H��u�H�;H�sL9�t	H���$1��L��1�L�kI��L�;M�f@I��K��H�H������H�CI�L�sI�H��tH�@@1�H�sM�4�H�CH�����L�SL�H�KH�8H�9tK��I���F���L�K0H�C0M������@I��=t��5���(0����H��L�{(�h9��f.�f.�@��UH��AWAVI��AUI��ATSH��H�HcX��~2H�Xff.�ff.�H��H��H���XH�H9�u�H��1�I�uI�EL��I��M����M� I�L$@�"�I�4$H��toH�N@1�M��H��I�uI9�uZI��H9�u�I�>I�T$�w;ru�H9�tH��H����L�E��2��L�Eȅ�u�I�H��tH��H��[A\A]A^A_]���H�.0��I�>H�I��H�xM�t$�32��1�f�L��A�D$ fA�D$8AD$AD$(�C��f�A�L��H��A�D$ L��L��AD$(����i�����H���	��H���$I�|$�6��H���.���HL���.���;��L���>��I�|$�6��L��H�.��H���~7����H����9��H���j7��f.���UH��AWAVAUATSH��(H�G(H�W0H�}�H�O L�HL�`L�o8H�_H�U�H�M�H�E�M9���fDM�4$A�~�A�~@�'A�~h�5A����CA����WA����kA���A��0��A��X��A�����A�����A����UI��M9��P���L9}���H�E�H9����{uH��(H9]����{t��CH�{H��(�<��H9]�u�L9m���ff.�H�E�H�8H����H�PHH�X(L�bH�U�L9�s(ff.�H�;��H����,��L9�r�H�E�H�8H�E�H�pH��([A\H��A]A^A_]�,��@A�EI�}�<��I��(L9m��t���A�}t����CH�{H��(��;��H�E�H9��J����{u�H��(H9]�u�H�E�H�8H���:���H��([A\A]A^A_]�AƆ�I���I���;��M9������M�4$A�~���A�FI�~�Z;��A�~@����A�F@I�~0�A;��A�~h����A�FhI�~X�(;��A��������AƆ�I����;��A��������AƆ�I�����:��A��������AƆ�I�����:��A�������AƆI����:��A��0�m���AƆ0I�� �~:��A��X�Y���AƆXI��H�\:��A����E���AƆ�I��p�::��A����1���AƆ�I����:��������UH��AUI��ATSH��H�_H��t/I��H�I�|$��9��I�|$�V2���HL���Y*��H��u�I�EI�}1�I��0H���Y-��I�}�I�u�I�E�I�E�L9�tH��H��[A\A]]�	*��f�H��[A\A]]���H��H���com.sun.star.document.XFilterlongHandleDIRECT_VALUEDEFAULT_VALUEAMBIGUOUS_VALUEStateaPropertyNameaValuevoidxListeneraListenervector::_M_realloc_appendSelectionOnlycom.sun.star.drawing.XShapescom.sun.star.io.XInputStreamPagePosvector::_M_default_appendIsPreviewFilterNameimpress_svg_Exportwriter_svg_Exportcalc_svg_Exportdraw_svgz_Export[]type[]byteServiceNameboolean[]stringcom.sun.star.frame.Desktopcom.sun.star.frame.XDesktop2 of type com.sun.star.lang.XUnoTunnelcom.sun.star.container.XNamed0 0 presentation_clip_pathcom.sun.star.awt.Rectangledrawing.GroupShapeGroupdrawing.GraphicObjectShapedrawing.OLE2ShapeOLE2drawing.TextShapepresentation.HeaderShapeHeaderpresentation.FooterShapeFooterpresentation.DateTimeShapeDateTimepresentation.SlideNumberShapePageNumberpresentation.TitleTextShapeTitleTextpresentation.OutlinerShapeOutline-animationsalpha-upperalpha-lowerroman-upperroman-lowerleftcenterrightcom.sun.star.drawing.XShapeMaster_SlidePageSTR_FILTER_DOC_SAVINGSaving: fltcom.sun.star.graphic.XGraphiccom.sun.star.text.XTextXTEXT_PAINTSHAPE_BEGINXTEXT_PAINTSHAPE_END-variable0123456789.:/-APMQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmIVXLCDMivxlcdm0123456789com.sun.star.io.XOutputStreamcom.sun.star.lang.XComponentFileNameFilterDataStatusIndicatoraArguments[]anycom.sun.star.uno.Exceptioncom.sun.star.xml.sax.Writercom.sun.star.xml.sax.XWriter embeddedboldnormalitaliccom.sun.star.svg.XSVGWriterrgb(none, monospace, serif, sans-serifobliqueunderline line-through XTEXT_EOPunderlineline-throughcom.sun.star.text.XTextRangecom.sun.star.text.XTextFieldPageNamePageCountURLC L  Zstop-color:gradientfill:url(#NumberingTypeBulletCharGradient_bullet-styleimage-stylenumber-stylerotate(rtl#bullet-char-template-.bp
	translate( scale(#bitmap(data:image/jpeg;base64,data:image/png;base64,BGRAD_SEQ_BEGINBGRAD_SEQ_ENDXGRAD_SEQ_BEGINXGRAD_SEQ_ENDXPATHFILL_SEQ_BEGINXPATHSTROKE_SEQ_BEGINXPATHFILL_SEQ_ENDXPATHSTROKE_SEQ_ENDXTEXT_EOLpatternopacity: maskmask:url(#bitmap-placeholder(com.sun.star.document.XImportercom.sun.star.document.XExportercom.sun.star.document.XExtendedFilterDetectioncom.sun.star.beans.PropertyValuecom.sun.star.beans.PropertyStatecom.sun.star.beans.XPropertySetcom.sun.star.beans.XPropertySet::getPropertySetInfocom.sun.star.beans.XPropertySet::setPropertyValuecom.sun.star.beans.XPropertySet::getPropertyValuecom.sun.star.beans.XPropertySet::addPropertyChangeListenercom.sun.star.beans.XPropertySet::removePropertyChangeListenercom.sun.star.beans.XPropertySet::addVetoableChangeListenercom.sun.star.beans.XPropertySet::removeVetoableChangeListenercom.sun.star.beans.UnknownPropertyExceptioncom.sun.star.beans.PropertyVetoExceptioncom.sun.star.lang.IllegalArgumentExceptioncom.sun.star.lang.WrappedTargetExceptioncom.sun.star.beans.XPropertySetInfocom.sun.star.beans.XPropertyChangeListenercom.sun.star.beans.XVetoableChangeListenercom.sun.star.frame.XControllercom.sun.star.drawing.framework.XControllerManagerprivate:resource/view/SlideSortercom.sun.star.view.XSelectionSuppliercom.sun.star.drawing.XDrawPagecom.sun.star.drawing.XDrawViewcom.sun.star.drawing.framework.XResourceIdcom.sun.star.drawing.XDrawPagesSuppliercom.sun.star.drawing.XMasterPagesSuppliercom.sun.star.drawing.XMasterPageTargetcom.sun.star.lang.XTypeProvidercom.sun.star.lang.XTypeProvider::getTypescom.sun.star.lang.XTypeProvider::getImplementationIdcom.sun.star.uno.RuntimeExceptioncom.sun.star.lang.XServiceInfocom.sun.star.lang.XServiceInfo::getImplementationNamecom.sun.star.lang.XServiceInfo::supportsServicecom.sun.star.lang.XServiceInfo::getSupportedServiceNamescom.sun.star.uno.DeploymentExceptioncomponent context fails to supply service com.sun.star.container.XEnumerationAccesscom.sun.star.container.XElementAccesscom.sun.star.container.XElementAccess::getElementTypecom.sun.star.container.XElementAccess::hasElementscom.sun.star.container.XEnumerationAccess::createEnumerationcom.sun.star.xml.sax.XExtendedDocumentHandlerM 8,1128 L 1137,1128 1137,0 8,0 8,1128 ZM 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 ZM 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 ZM 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 ZM 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 ZM 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 ZM 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 ZM -4,459 L 1135,459 1135,606 -4,606 -4,459 ZM 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Zcom.sun.star.container.XEnumerationcom.sun.star.container.XEnumeration::hasMoreElementscom.sun.star.container.XEnumeration::nextElementcom.sun.star.container.NoSuchElementExceptioncom.sun.star.animations.XAnimationNodeSuppliercom.sun.star.animations.XAnimationNodecom.sun.star.drawing.FillStylecom.sun.star.drawing.GraphicObjectShapecom.sun.star.lang.XComponent::disposecom.sun.star.lang.XComponent::addEventListenercom.sun.star.lang.XComponent::removeEventListenercom.sun.star.lang.XEventListenercannot create std::vector larger than max_size()com.sun.star.presentation.XPresentationSuppliercom.sun.star.task.XStatusIndicatorcom.sun.star.lang.XInitializationcom.sun.star.lang.XInitialization::initializecom.sun.star.drawing.GraphicExportFiltercom.sun.star.drawing.XGraphicExportFiltercom.sun.star.drawing.ShapeCollectioncom.sun.star.text.XTextContentcom.sun.star.container.XIndexReplacecannot create std::deque larger than max_size()N3com3sun4star3uno10XInterfaceEN3com3sun4star3uno16RuntimeExceptionEN3com3sun4star3uno9ExceptionEN3com3sun4star3uno19DeploymentExceptionEN3com3sun4star4lang13XTypeProviderEN3com3sun4star8document7XFilterEN3com3sun4star8document9XImporterEN3com3sun4star8document9XExporterEN3com3sun4star8document24XExtendedFilterDetectionEN3com3sun4star4lang12XServiceInfoEN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE9SVGFilterN3com3sun4star2io11IOExceptionE@+com.sun.star.document.ExtendedTypeDetection@"com.sun.star.document.ExportFilter@"com.sun.star.document.ImportFilter@ com.sun.star.comp.Draw.SVGFilter@Visible@svg_Scalable_Vector_Graphics@!svg_Scalable_Vector_Graphics_Draw@InputStream@�?�?�C��{�G�z�?F���8<@@?scalbitm�? scaurl(0 0 ������������A����rgb(@�@0C�o@{�G�zt?��������rotahar-�������?�p=
ף�?�@��@ffffff@�o@patt�?M `
���
���
���
���
��u
��u
���
��_	��*N12_GLOBAL__N_19TextFieldE*N12_GLOBAL__N_114FixedTextFieldE*N12_GLOBAL__N_118FixedDateTimeFieldE*N12_GLOBAL__N_111FooterFieldE*N12_GLOBAL__N_117VariableTextFieldE*N12_GLOBAL__N_121VariableDateTimeFieldE@ooo:slide-duration@ooo:display-name@ooo:has-custom-background@UsePositionedCharacters@Opacity@UseNativeTextDecoration@
EmbedFonts@	DTDString@TinyMode

ElapsedTime.prototype.getTimeBase = function()
{
return this.aTimeBase;
};

ElapsedTime.prototype.reset = function()
{
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
};

ElapsedTime.prototype.getElapsedTime = function()
{
this.nLastQueriedTime = this.getElapsedTimeImpl();
return this.nLastQueriedTime;
};

ElapsedTime.prototype.pauseTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
this.bInPauseMode = true;
};

ElapsedTime.prototype.continueTimer = function()
{
this.bInPauseMode = false;

var nPauseDuration = this.getElapsedTimeImpl() - this.nFrozenTime;

this.nStartTime += nPauseDuration;
};

ElapsedTime.prototype.adjustTimer = function( nOffset, bLimitToLastQueriedTime )
{
if( bLimitToLastQueriedTime == undefined )
bLimitToLastQueriedTime = true;

this.nStartTime -= nOffset;

if( this.bInHoldMode || this.bInPauseMode )
this.nFrozenTime += nOffset;
};

ElapsedTime.prototype.holdTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
this.bInHoldMode = true;
};

ElapsedTime.prototype.releaseTimer = function()
{
this.bInHoldMode = false;
};

ElapsedTime.prototype.getSystemTime = function()
{
return ( getCurrentSystemTime() / 1000.0 );
};

ElapsedTime.prototype.getCurrentTime = function()
{
var nCurrentTime;
if ( !this.aTimeBase )
{
nCurrentTime = this.getSystemTime();
}
else
{
nCurrentTime = this.aTimeBase.getElapsedTimeImpl();
}

assert( ( typeof( nCurrentTime ) === typeof( 0 ) ) && isFinite( nCurrentTime ),
'ElapsedTime.getCurrentTime: assertion failed: nCurrentTime == ' + nCurrentTime );


return nCurrentTime;
};

ElapsedTime.prototype.getElapsedTimeImpl = function()
{
if( this.bInHoldMode || this.bInPauseMode )
{
return this.nFrozenTime;
}

var nCurTime = this.getCurrentTime();
return ( nCurTime - this.nStartTime );
};


/*****
* @libreofficeend
*
* Several parts of the above code are the result of the porting,
* started on August 2011, of the C++ code included in the source files
* placed under the folder '/slideshow/source' and subfolders.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/

]]>}
else if ( aLhsEventEntry.nActivationTime < aRhsEventEntry.nActivationTime )
{
return 1;
}
else
{
return 0;
}
};


function ActivityQueue( aTimer )
{
this.aTimer = aTimer;
this.aCurrentActivityWaitingSet = [];
this.aCurrentActivityReinsertSet = [];
this.aDequeuedActivitySet = [];
}


ActivityQueue.prototype.dispose = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dispose();

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dispose();
};

ActivityQueue.prototype.addActivity = function( aActivity )
{
if( !aActivity )
{
log( 'ActivityQueue.addActivity: activity is not valid' );
return false;
}

this.aCurrentActivityWaitingSet.push( aActivity );
aActivityQueueDebugPrinter.print( 'ActivityQueue.addActivity: activity appended' );
return true;
};

ActivityQueue.prototype.process = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var nLag = 0.0;
for( var i = 0; i < nSize; ++i )
{
nLag = Math.max( nLag,this.aCurrentActivityWaitingSet[i].calcTimeLag()  );
}

if( nLag > 0.0 )
this.aTimer.adjustTimer( -nLag, true );


while( this.aCurrentActivityWaitingSet.length != 0 )
{
var aActivity = this.aCurrentActivityWaitingSet.shift();
var bReinsert = false;

bReinsert = aActivity.perform();

if( bReinsert )
{
this.aCurrentActivityReinsertSet.push( aActivity );
}
else
{
this.aDequeuedActivitySet.push( aActivity );
}
}

if( this.aCurrentActivityReinsertSet.length != 0 )
{
this.aCurrentActivityWaitingSet = this.aCurrentActivityReinsertSet;
this.aCurrentActivityReinsertSet = [];
}
};

ActivityQueue.prototype.processDequeued = function()
{
var nSize = this.aDequeuedActivitySet.length;
for( var i = 0; i < nSize; ++i )
this.aDequeuedActivitySet[i].dequeued();

this.aDequeuedActivitySet = [];
};

ActivityQueue.prototype.isEmpty = function()
{
return ( ( this.aCurrentActivityWaitingSet.length == 0 ) &&
( this.aCurrentActivityReinsertSet.length == 0 ) );
};

ActivityQueue.prototype.clear = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.clear invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dequeued();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dequeued();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.endAll = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.endAll invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].end();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].end();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.getTimer = function()
{
return this.aTimer;
};

ActivityQueue.prototype.size = function()
{
return ( this.aCurrentActivityWaitingSet.length +
this.aCurrentActivityReinsertSet.length +
this.aDequeuedActivitySet.length );
};


function ElapsedTime( aTimeBase )
{
this.aTimeBase = aTimeBase;
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
}
{
this.bIsActive = false;
};


function NextEffectEventArray()
{
this.aEventArray = [];
}


NextEffectEventArray.prototype.size = function()
{
return this.aEventArray.length;
};

NextEffectEventArray.prototype.at = function( nIndex )
{
return this.aEventArray[ nIndex ];
};

NextEffectEventArray.prototype.appendEvent = function( aEvent )
{
var nSize = this.size();
for( var i = 0; i < nSize; ++i )
{
if( this.aEventArray[i].getId() == aEvent.getId() )
{
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') already present' );
return false;
}
}
this.aEventArray.push( aEvent );
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') appended' );
return true;
};

NextEffectEventArray.prototype.clear = function( )
{
this.aEventArray = [];
};


function TimerEventQueue( aTimer )
{
this.aTimer = aTimer;
this.aEventSet = new PriorityQueue( EventEntry.compare );
}


TimerEventQueue.prototype.addEvent = function( aEvent )
{
this.DBG( 'TimerEventQueue.addEvent event(' + aEvent.getId() + ') appended.' );
if( !aEvent )
{
log( 'TimerEventQueue.addEvent: null event' );
return false;
}

var nTime = aEvent.getActivationTime( this.aTimer.getElapsedTime() );
var aEventEntry = new EventEntry( aEvent, nTime );
this.aEventSet.push( aEventEntry );

return true;
};

TimerEventQueue.prototype.forceEmpty = function()
{
this.process_(true);
};


TimerEventQueue.prototype.process = function()
{
this.process_(false);
};

TimerEventQueue.prototype.process_ = function( bFireAllEvents )
{
var nCurrentTime = this.aTimer.getElapsedTime();

while( !this.isEmpty() && ( bFireAllEvents || ( this.aEventSet.top().nActivationTime <= nCurrentTime ) ) )
{
var aEventEntry = this.aEventSet.top();
this.aEventSet.pop();

var aEvent = aEventEntry.aEvent;
if( aEvent.isCharged() )
aEvent.fire();
}
};

TimerEventQueue.prototype.isEmpty = function()
{
return this.aEventSet.isEmpty();
};

TimerEventQueue.prototype.nextTimeout = function()
{
var nTimeout = Number.MAX_VALUE;
var nCurrentTime = this.aTimer.getElapsedTime();
if( !this.isEmpty() )
nTimeout = this.aEventSet.top().nActivationTime - nCurrentTime;
return nTimeout;
};

TimerEventQueue.prototype.clear = function()
{
this.DBG( 'TimerEventQueue.clear invoked' );
this.aEventSet.clear();
};

TimerEventQueue.prototype.getTimer = function()
{
return this.aTimer;
};

TimerEventQueue.prototype.DBG = function( sMessage, nTime )
{
aTimerEventQueueDebugPrinter.print( sMessage, nTime );
};


TimerEventQueue.prototype.insert = function( aEventEntry )
{
var nHoleIndex = this.aEventSet.length;
var nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );

while( ( nHoleIndex > 0 ) && this.aEventSet[ nParent ].compare( aEventEntry ) )
{
this.aEventSet[ nHoleIndex ] = this.aEventSet[ nParent ];
nHoleIndex = nParent;
nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );
}
this.aEventSet[ nHoleIndex ] = aEventEntry;
};


function EventEntry( aEvent, nTime )
{
this.aEvent = aEvent;
this.nActivationTime = nTime;
}


EventEntry.compare = function( aLhsEventEntry, aRhsEventEntry )
{
if ( aLhsEventEntry.nActivationTime > aRhsEventEntry.nActivationTime )
{
return -1;
if( nOldSlide > nNewSlide )
{
this.aSlideViewElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', this.aSlideViewElement, 'href', '#' + aOldMetaSlide.slideContainerId );
aNewMetaSlide.aVisibilityStatusElement.parentNode.insertBefore( this.aSlideViewElement, aNewMetaSlide.aVisibilityStatusElement );
aOldMetaSlide.hide();
}

var aLeavingSlide = aOldMetaSlide;
var aEnteringSlide = aNewMetaSlide;
var aTransitionEndEvent = makeEvent( bind2( this.notifyTransitionEnd, this, nNewSlide ) );

var aTransitionActivity =
this.createSlideTransition( aSlideTransitionHandler, aLeavingSlide,
aEnteringSlide, aTransitionEndEvent );

if( aTransitionActivity )
{
this.bIsTransitionRunning = true;
this.aActivityQueue.addActivity( aTransitionActivity );
this.update();
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}

};

SlideShow.prototype.update = function()
{
this.aTimer.holdTimer();

this.aTimerEventQueue.process();
this.aActivityQueue.process();

this.aFrameSynchronization.synchronize();

this.aActivityQueue.processDequeued();

this.aTimer.releaseTimer();

var bActivitiesLeft = ( ! this.aActivityQueue.isEmpty() );
var bTimerEventsLeft = ( ! this.aTimerEventQueue.isEmpty() );
var bEventsLeft = ( bActivitiesLeft || bTimerEventsLeft );


if( bEventsLeft )
{
var nNextTimeout;
if( bActivitiesLeft )
{
nNextTimeout = MINIMUM_TIMEOUT;
this.aFrameSynchronization.activate();
}
else
{
nNextTimeout = this.aTimerEventQueue.nextTimeout();
if( nNextTimeout < MINIMUM_TIMEOUT )
nNextTimeout = MINIMUM_TIMEOUT;
else if( nNextTimeout > MAXIMUM_TIMEOUT )
nNextTimeout = MAXIMUM_TIMEOUT;
this.aFrameSynchronization.deactivate();
}

this.bIsIdle = false;
window.setTimeout( 'aSlideShow.update()', nNextTimeout * 1000 );
}
else
{
this.bIsIdle = true;
}
};

SlideShow.prototype.dispose = function()
{
this.aTimerEventQueue.clear();
this.aActivityQueue.clear();
this.aNextEffectEventArray = null;
this.aEventMultiplexer = null;
};

SlideShow.prototype.getContext = function()
{
return this.aContext;
};

var aSlideShow = null;


function SlideShowContext( aTimerEventQueue, aEventMultiplexer, aNextEffectEventArray, aInteractiveAnimationSequenceMap, aActivityQueue)
{
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMultiplexer = aEventMultiplexer;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aActivityQueue = aActivityQueue;
this.bIsSkipping = false;
}


function FrameSynchronization( nFrameDuration )
{
this.nFrameDuration = nFrameDuration;
this.aTimer = new ElapsedTime();
this.nNextFrameTargetTime = 0.0;
this.bIsActive = false;

this.markCurrentFrame();
}


FrameSynchronization.prototype.markCurrentFrame = function()
{
this.nNextFrameTargetTime = this.aTimer.getElapsedTime() + this.nFrameDuration;
};

FrameSynchronization.prototype.synchronize = function()
{
if( this.bIsActive )
{
while( this.aTimer.getElapsedTime() < this.nNextFrameTargetTime )
;
}

this.markCurrentFrame();

};

FrameSynchronization.prototype.activate = function()
{
this.bIsActive = true;
};

FrameSynchronization.prototype.deactivate = function()
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
}
this.update();

i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
}
}
else  // there is no playing effect
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
if( aEffect.isEnded() )  // Well that is almost an assertion.
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
}

this.bIsRewinding = false;
};

SlideShow.prototype.rewindToPreviousSlide = function()
{
if( this.isTransitionPlaying() )
{
this.rewindTransition();
return;
}
if( this.isAnyEffectPlaying() )
return;
var nNewSlide = nCurSlide - 1;
this.displaySlide( nNewSlide, true );
this.skipAllEffects();
};

SlideShow.prototype.rewindAllEffects = function()
{
if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

while( this.hasAnyEffectStarted() )
{
this.rewindEffect();
}
};

SlideShow.prototype.exitSlideShowInApp = function()
{
if (window.webkit !== undefined &&
window.webkit.messageHandlers !== undefined &&
window.webkit.messageHandlers.lok !== undefined)
window.webkit.messageHandlers.lok.postMessage('EXITSLIDESHOW', '*');
}

SlideShow.prototype.displaySlide = function( nNewSlide, bSkipSlideTransition )
{
var aMetaDoc = theMetaDoc;
var nSlides = aMetaDoc.nNumberOfSlides;
if( nNewSlide < 0 && nSlides > 0 )
nNewSlide = nSlides - 1;
else if( nNewSlide >= nSlides ) {
nNewSlide = 0;
this.exitSlideShowInApp();
}

if( ( currentMode === INDEX_MODE ) && ( nNewSlide === nCurSlide ) )
{
aMetaDoc.getCurrentSlide().show();
return;
}

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

var nOldSlide = nCurSlide;
if( nOldSlide !== undefined )
{
var oldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
if( this.isEnabled() )
{
if( oldMetaSlide.aSlideAnimationsHandler.isAnimated() )
{
oldMetaSlide.aSlideAnimationsHandler.end( bSkipSlideTransition );

this.dispose();
}
}

if( this.automaticAdvanceTimeout !== null )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = null;
}
}

this.notifySlideStart( nNewSlide, nOldSlide );

if( this.isEnabled() && !bSkipSlideTransition  )
{
if ( ( ( nOldSlide !== undefined ) &&
( ( nNewSlide > nOldSlide ) ||
( ( nNewSlide == 0) && ( nOldSlide == (aMetaDoc.nNumberOfSlides - 1) ) ) ) ) ||
(  ( nOldSlide === undefined ) &&  ( nNewSlide == 0) )  // for transition on first slide
)
{

var aOldMetaSlide = null;
if( nOldSlide === undefined ) // for transition on first slide
{
aOldMetaSlide = aMetaDoc.theMetaDummySlide;
}
else
{
aOldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
}
var aNewMetaSlide = aMetaDoc.aMetaSlideSet[nNewSlide];

var aSlideTransitionHandler = aNewMetaSlide.aTransitionHandler;
if( aSlideTransitionHandler && aSlideTransitionHandler.isValid() )
{
var sRef = 'url(#' + aPresentationClipPathShrinkId + ')';
aOldMetaSlide.slideElement.setAttribute( 'clip-path', sRef );

{
if( aEffect.isMainEffect() )
this.aEventMultiplexer.notifySkipEffectEvent();
else
this.aEventMultiplexer.notifySkipInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipNextEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

assert( !this.isAnyEffectPlaying(),
'SlideShow.skipNextEffect' );

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.bIsSkipping = true;
this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
this.aEventMultiplexer.notifySkipEffectEvent();
++this.nCurrentEffect;
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipPlayingOrNextEffect = function()
{
if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
return this.skipAllPlayingEffects();
else
return this.skipNextEffect();
};


SlideShow.prototype.skipAllEffects = function()
{
if( this.bIsSkippingAll )
return true;

this.bIsSkippingAll = true;

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
}
else if( !this.aNextEffectEventArray
|| ( this.nCurrentEffect >= this.aNextEffectEventArray.size() ) )
{
this.bIsSkippingAll = false;
return false;
}

while( this.nCurrentEffect < this.aNextEffectEventArray.size() )
{
this.skipNextEffect();
}
this.bIsSkippingAll = false;
return true;
};

SlideShow.prototype.rewindTransition = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsRewinding = true;
this.aActivityQueue.endAll();
this.update();
this.bIsRewinding = false;
};

SlideShow.prototype.rewindEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

if( this.automaticAdvanceTimeout !== null && !this.automaticAdvanceTimeout['rewindedEffect'] )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = { 'rewindedEffect': this.nCurrentEffect };
}

if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

this.bIsRewinding = true;

var nFirstPlayingEffectIndex = undefined;

var i = 0;
for( ; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
nFirstPlayingEffectIndex = i;
break;
}
}

if( nFirstPlayingEffectIndex !== undefined )
{
i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindCurrentEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindRunningInteractiveEffectEvent( aEffect.getId() );
}
}
else if( aEffect.isEnded() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
var nTimeout = Math.ceil(theMetaDoc.aMetaSlideSet[nCurSlide].fDuration * 1000);
if( nTimeout < 0 )
return;

this.automaticAdvanceTimeout = window.setTimeout('switchSlide(1, false)', nTimeout);
};

SlideShow.prototype.notifySlideStart = function( nNewSlideIndex, nOldSlideIndex )
{
this.nCurrentEffect = 0;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;

var aAnimatedElementMap;
var sId;
if( nOldSlideIndex !== undefined )
{
aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nOldSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideEnd();
}

aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nNewSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideStart( this.aContext );
};

SlideShow.prototype.notifyTransitionEnd = function( nSlideIndex )
{
if( theMetaDoc.getCurrentSlide() )
{
var sRef = 'url(#' + aPresentationClipPathId + ')';
theMetaDoc.getCurrentSlide().slideElement.setAttribute('clip-path', sRef);
}

this.bIsTransitionRunning = false;
if( this.bIsRewinding )
{
theMetaDoc.aMetaSlideSet[nSlideIndex].hide();
var nIndex = nCurSlide !== undefined ? nCurSlide : -1;
this.displaySlide( nIndex, true );
this.skipAllEffects();
this.bIsRewinding = false;
return;
}

theMetaDoc.setCurrentSlide(nSlideIndex);

if( this.aSlideViewElement )
{
theMetaDoc.getCurrentSlide().aVisibilityStatusElement.parentNode.removeChild( this.aSlideViewElement );
this.aSlideViewElement = null;
}
if( this.isEnabled() )
{
this.dispose();

var aCurrentSlide = theMetaDoc.getCurrentSlide();
if( aCurrentSlide.aSlideAnimationsHandler.elementsParsed() )
{
aCurrentSlide.aSlideAnimationsHandler.start();
this.aEventMultiplexer.registerAnimationsEndHandler( bind2( SlideShow.prototype.notifyAnimationsEnd, this ) );
}
else
this.notifyAnimationsEnd();

this.update();
}
else
this.notifyAnimationsEnd();
};

SlideShow.prototype.notifyInteractiveAnimationSequenceStart = function( nNodeId )
{
++this.nTotalInteractivePlayingEffects;
var aEffect = new Effect( nNodeId );
aEffect.start();
this.aStartedEffectIndexMap[ nNodeId ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );
};

SlideShow.prototype.notifyInteractiveAnimationSequenceEnd = function( nNodeId )
{
assert( this.isInteractiveEffectPlaying(),
'SlideShow.notifyInteractiveAnimationSequenceEnd: no interactive effect playing.' );

this.aStartedEffectList[ this.aStartedEffectIndexMap[ nNodeId ] ].end();
--this.nTotalInteractivePlayingEffects;
};

SlideShow.prototype.nextEffect = function()
{
if( !this.isEnabled() )
return false;

if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
return true;
}

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
++this.nCurrentEffect;
this.update();
return true;
};

SlideShow.prototype.skipTransition  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsSkipping = true;

this.aActivityQueue.endAll();
this.aTimerEventQueue.forceEmpty();
this.aActivityQueue.endAll();
this.update();
this.bIsSkipping = false;
};

SlideShow.prototype.skipAllPlayingEffects  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

this.bIsSkipping = true;
for( var i = 0; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
this.bIsNextEffectRunning = false;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;
this.automaticAdvanceTimeout = null;
}

SlideShow.prototype.setSlideEvents = function( aNextEffectEventArray,
aInteractiveAnimationSequenceMap,
aEventMultiplexer )
{
if( !aNextEffectEventArray )
log( 'SlideShow.setSlideEvents: aNextEffectEventArray is not valid' );

if( !aInteractiveAnimationSequenceMap )
log( 'SlideShow.setSlideEvents:aInteractiveAnimationSequenceMap  is not valid' );

if( !aEventMultiplexer )
log( 'SlideShow.setSlideEvents: aEventMultiplexer is not valid' );

this.aContext.aNextEffectEventArray = aNextEffectEventArray;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aContext.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aContext.aEventMultiplexer = aEventMultiplexer;
this.aEventMultiplexer = aEventMultiplexer;
this.nCurrentEffect = 0;
};

SlideShow.prototype.createSlideTransition = function( aSlideTransitionHandler, aLeavingSlide, aEnteringSlide, aTransitionEndEvent )
{
if( !aEnteringSlide )
{
log( 'SlideShow.createSlideTransition: entering slide element is not valid.' );
return null;
}

if( this.bNoSlideTransition ) return null;

var aAnimatedLeavingSlide = null;
if( aLeavingSlide )
aAnimatedLeavingSlide = new AnimatedSlide( aLeavingSlide );
var aAnimatedEnteringSlide = new AnimatedSlide( aEnteringSlide );

var aSlideTransition = aSlideTransitionHandler.createSlideTransition( aAnimatedLeavingSlide, aAnimatedEnteringSlide );
if( !aSlideTransition ) return null;

var nDuration = 0.001;
if( aSlideTransitionHandler.getDuration().isValue() )
{
nDuration = aSlideTransitionHandler.getDuration().getValue();
}
else
{
log( 'SlideShow.createSlideTransition: duration is not a number' );
}

var aCommonParameterSet = new ActivityParamSet();
aCommonParameterSet.aEndEvent = aTransitionEndEvent;
aCommonParameterSet.aTimerEventQueue = this.aTimerEventQueue;
aCommonParameterSet.aActivityQueue = this.aActivityQueue;
aCommonParameterSet.nMinDuration = nDuration;
aCommonParameterSet.nMinNumberOfFrames = aSlideTransitionHandler.getMinFrameCount();
aCommonParameterSet.nSlideWidth = WIDTH;
aCommonParameterSet.nSlideHeight = HEIGHT;

return new SimpleActivity( aCommonParameterSet, aSlideTransition, FORWARD );

};

SlideShow.prototype.isEnabled = function()
{
return this.bIsEnabled;
};

SlideShow.prototype.isRunning = function()
{
return !this.bIsIdle;
};

SlideShow.prototype.isTransitionPlaying = function()
{
return this.bIsTransitionRunning;
};

SlideShow.prototype.isMainEffectPlaying = function()
{
return this.bIsNextEffectRunning;
};

SlideShow.prototype.isInteractiveEffectPlaying = function()
{
return ( this.nTotalInteractivePlayingEffects > 0 );
};

SlideShow.prototype.isAnyEffectPlaying = function()
{
return ( this.isMainEffectPlaying() || this.isInteractiveEffectPlaying() );
};

SlideShow.prototype.hasAnyEffectStarted = function()
{
return ( this.aStartedEffectList.length > 0 );
};

SlideShow.prototype.notifyNextEffectStart = function()
{
assert( !this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectStart: an effect is already started.' );
this.bIsNextEffectRunning = true;
this.aEventMultiplexer.registerNextEffectEndHandler( bind2( SlideShow.prototype.notifyNextEffectEnd, this ) );
var aEffect = new Effect();
aEffect.start();
this.aStartedEffectIndexMap[ -1 ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );

var aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler.aAnimatedElementMap;
for( var sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifyNextEffectStart( this.nCurrentEffect );
};

SlideShow.prototype.notifyNextEffectEnd = function()
{
assert( this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectEnd: effect already ended.' );
this.bIsNextEffectRunning = false;

this.aStartedEffectList[ this.aStartedEffectIndexMap[ -1 ] ].end();
if( this.automaticAdvanceTimeout !== null )
{
if( this.automaticAdvanceTimeout['rewindedEffect'] === this.nCurrentEffect )
{
this.automaticAdvanceTimeout = null;
this.notifyAnimationsEnd();
}
}
};

SlideShow.prototype.notifyAnimationsEnd = function()
{
if( nCurSlide + 1 === theMetaDoc.nNumberOfSlides )
return;

assert (this.automaticAdvanceTimeout === null,
'SlideShow.notifyAnimationsEnd: Timeout already set.')

case NUMBER_PROPERTY :
evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight );
break;
case BOOL_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
var aValue = booleanParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
case STRING_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case ENUM_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case COLOR_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValue = colorParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
case TUPLE_NUMBER_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
if( typeof aValueSet[i] === 'string' )
{
var aTuple = aValueSet[i].split(',');
aValue = [];
evalValuesAttribute(aValue, aTuple, aBBox, nSlideWidth, nSlideHeight);
aValueList.push(aValue);
}
else
{
aValueList.push( undefined );
}
}
break;
default:
log( 'createValueListActivity: unexpected value type: ' + eValueType );
}

}


function evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var width = aBBox.width / nSlideWidth;
var height = aBBox.height / nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / nSlideHeight;

var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;

for( var i = 0; i < aValueSet.length; ++i )
{
var sValue = aValueSet[i];
if(sValue)
{
sValue = sValue.replace(reMath, 'Math.$&');
sValue = sValue.replace(/pi(?!\w)/g, 'Math.PI');
sValue = sValue.replace(/e(?!\w)/g, 'Math.E');
}
var aValue =  eval( sValue );
aValueList.push( aValue );
}
}


var BACKWARD    = 0;
var FORWARD     = 1;

var MAXIMUM_FRAME_COUNT                 = 60;
var MINIMUM_TIMEOUT                     = 1.0 / MAXIMUM_FRAME_COUNT;
var MAXIMUM_TIMEOUT                     = 4.0;
var MINIMUM_FRAMES_PER_SECONDS          = 10;
var PREFERRED_FRAMES_PER_SECONDS        = 50;
var PREFERRED_FRAME_RATE                = 1.0 / PREFERRED_FRAMES_PER_SECONDS;


function Effect( nId )
{
this.nId = ( typeof( nId ) === typeof( 1 ) ) ? nId : -1;
this.eState = Effect.NOT_STARTED;
}
Effect.NOT_STARTED = 0;
Effect.PLAYING = 1;
Effect.ENDED = 2;

Effect.prototype.getId = function()
{
return this.nId;
};

Effect.prototype.isMainEffect = function()
{
return ( this.nId === -1 );
};

Effect.prototype.isPlaying = function()
{
return ( this.eState === Effect.PLAYING );
};

Effect.prototype.isEnded = function()
{
return ( this.eState === Effect.ENDED );
};

Effect.prototype.start = function()
{
assert( this.eState === Effect.NOT_STARTED, 'Effect.start: wrong state.' );
this.eState = Effect.PLAYING;
};

Effect.prototype.end = function()
{
assert( this.eState === Effect.PLAYING, 'Effect.end: wrong state.' );
this.eState = Effect.ENDED;
};


function SlideShow()
{
this.aTimer = new ElapsedTime();
this.aFrameSynchronization = new FrameSynchronization( PREFERRED_FRAME_RATE );
this.aTimerEventQueue = new TimerEventQueue( this.aTimer );
this.aActivityQueue = new ActivityQueue( this.aTimer );
this.aNextEffectEventArray = null;
this.aInteractiveAnimationSequenceMap = null;
this.aEventMultiplexer = null;

this.aContext = new SlideShowContext( this.aTimerEventQueue,
this.aEventMultiplexer,
this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aActivityQueue );
this.bIsIdle = true;
this.bIsEnabled = true;
this.bNoSlideTransition = false;
this.bIsTransitionRunning = false;

this.nCurrentEffect = 0;
}

aActivityParamSet.aDiscreteTimes = aAnimationNode.getKeyTimes();

var aValueSet = aAnimationNode.getValues();
var nValueSetSize = aValueSet.length;

if( nValueSetSize != 0 )
{

if( aActivityParamSet.aDiscreteTimes.length == 0 )
{
for( var i = 0; i < nValueSetSize; ++i )
aActivityParamSet.aDiscreteTimes[i].push( i / nValueSetSize );
}

switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );

return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteValueListActivity,
bAccumulate,
eValueType );

default:
log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearValueListActivity,
bAccumulate,
eValueType );
}
}
else
{
switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
log( 'createActivity: discrete calculation case not yet implemented' );
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteFromToByActivity,
bAccumulate,
eValueType );

default:
log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearFromToByActivity,
bAccumulate,
eValueType );
}
}
}


function createValueListActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{
var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createValueListActivity: no operator set found' );

var aValueSet = aAnimationNode.getValues();

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

for( var i = 0; i < aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + aValueList[i] );
}

return new ClassTemplateInstance( aValueList, aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function createFromToByActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createFromToByActivity: no operator set found' );

var aValueSet = [];
aValueSet[0] = aAnimationNode.getFromValue();
aValueSet[1] = aAnimationNode.getToValue();
aValueSet[2] = aAnimationNode.getByValue();

ANIMDBG.print( 'createFromToByActivity: value type: ' + aValueTypeOutMap[eValueType] +
', aFrom = ' + aValueSet[0] +
', aTo = ' + aValueSet[1] +
', aBy = ' + aValueSet[2] );

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

ANIMDBG.print( 'createFromToByActivity: ' +
', aFrom = ' + aValueList[0] +
', aTo = ' + aValueList[1] +
', aBy = ' + aValueList[2] );

return new ClassTemplateInstance( aValueList[0], aValueList[1], aValueList[2],
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function extractAttributeValues( eValueType, aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var i;
switch( eValueType )
{
{
ValueListActivity.superclass.activate.call( this, aEndEvent );
for( var i = 0; i < this.aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + this.aValueList[i] );
}
};

ValueListActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation )
{
var aValue = this.aValueList[0];
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform(aValue);
}
};

ValueListActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.startAnimation: activity disposed or not valid animation' );
return;
}

ValueListActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

ValueListActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();
};

ValueListActivity.prototype.performContinuousHook = function( nIndex, nFractionalIndex, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}

assert( ( nIndex + 1 ) < this.aValueList.length,
'ValueListActivity.performContinuousHook: assertion (nIndex + 1 < this.aValueList.length) failed' );


var aValue = this.aInterpolator( this.aValueList[ nIndex ],
this.aValueList[ nIndex+1 ],
nFractionalIndex );

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performDiscreteHook = function( nFrame, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performDiscreteHook: activity disposed or not valid animation' );
return;
}

assert( nFrame < this.aValueList.length,
'ValueListActivity.performDiscreteHook: assertion ( nFrame < this.aValueList.length) failed' );

var aValue = this.aValueList[nFrame];

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.aFormula ? this.aFormula( this.aLastValue ) : this.aLastValue;
this.aAnimation.perform( aValue );
}
};

ValueListActivity.prototype.dispose = function()
{
ValueListActivity.superclass.dispose.call( this );
};


return ValueListActivity;
}


var LinearValueListActivity = instantiate( ValueListActivityTemplate, ContinuousKeyTimeActivityBase );
var DiscreteValueListActivity = instantiate( ValueListActivityTemplate, DiscreteActivityBase );


function createActivity( aActivityParamSet, aAnimationNode, aAnimation, aInterpolator )
{
var eCalcMode = aAnimationNode.getCalcMode();

var sAttributeName = aAnimationNode.getAttributeName();
var aAttributeProp = aAttributeMap[ sAttributeName ];

var eValueType = aAttributeProp[ 'type' ];
var eValueSubtype = aAttributeProp[ 'subtype' ];

if( ! aInterpolator )
{
aInterpolator = aInterpolatorHandler.getInterpolator( eCalcMode,
eValueType,
eValueSubtype );
}

var bAccumulate = ( aAnimationNode.getAccumulate() === ACCUMULATE_MODE_SUM )
&& !( eValueType === BOOL_PROPERTY ||
eValueType === STRING_PROPERTY ||
eValueType === ENUM_PROPERTY );

if( aAnimationNode.getFormula() )
{
var sFormula =  aAnimationNode.getFormula();
var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;
sFormula = sFormula.replace(reMath, 'Math.$&');
sFormula = sFormula.replace(/pi(?!\w)/g, 'Math.PI');
sFormula = sFormula.replace(/e(?!\w)/g, 'Math.E');
sFormula = sFormula.replace(/\$/g, '__PARAM0__');

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aBBox = aAnimatedElement.getBaseBBox();

var width = aBBox.width / aActivityParamSet.nSlideWidth;
var height = aBBox.height / aActivityParamSet.nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / aActivityParamSet.nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / aActivityParamSet.nSlideHeight;

aActivityParamSet.aFormula = function( __PARAM0__ ) {

return eval(sFormula);
};
}

FromToByActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );


var aAnimationStartValue = this.aAnimation.getUnderlyingValue();

if( this.aFrom )
{
if( this.aTo )
{
this.aStartValue = this.aFrom;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = this.aFrom;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}
else
{
this.aStartValue = aAnimationStartValue;
this.aStartInterpolationValue = this.aStartValue;

if( this.aTo )
{

this.bDynamicStartValue = true;
this.aPreviousValue = this.aStartValue;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = aAnimationStartValue;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}

ANIMDBG.print( 'FromToByActivity.startAnimation: aStartValue = ' + this.aStartValue + ', aEndValue = ' + this.aEndValue );
};

FromToByActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();
};

FromToByActivity.prototype.performContinuousHook = function( nModifiedTime, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}


if( this.bDynamicStartValue )
{
if( this.nIteration != nRepeatCount )
{
this.nIteration = nRepeatCount;
this.aStartInterpolationValue =  this.aStartValue;
}
else
{
var aActualValue = this.aAnimation.getUnderlyingValue();
if( !this.equal( aActualValue, this.aPreviousValue ) )
this.aStartInterpolationValue = aActualValue;
}
}

var aValue = this.aInterpolator( this.aStartInterpolationValue,
this.aEndValue, nModifiedTime );

if( this.bCumulative && !this.bDynamicStartValue )
{
aValue = this.add( this.scale( nRepeatCount, this.aEndValue ), aValue );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );

if( this.bDynamicStartValue )
{
this.aPreviousValue = this.aAnimation.getUnderlyingValue();
}

};

FromToByActivity.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
if (this.isDisposed() || !this.aAnimation) {
log('FromToByActivity.performDiscreteHook: activity disposed or not valid animation');
return;
}
};

FromToByActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.isAutoReverse() ? this.aStartValue : this.aEndValue;
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
}
};

FromToByActivity.prototype.dispose = function()
{
FromToByActivity.superclass.dispose.call( this );
};


return FromToByActivity;
}


var LinearFromToByActivity = instantiate( FromToByActivityTemplate, ContinuousActivityBase );
var DiscreteFromToByActivity = instantiate( FromToByActivityTemplate, DiscreteActivityBase );


function  ValueListActivityTemplate( BaseType ) // template parameter
{

function ValueListActivity( aValueList, aActivityParamSet,
aAnimation, aInterpolator,
aOperatorSet, bAccumulate )
{
assert( aAnimation, 'ValueListActivity constructor: invalid animation object' );
assert( aValueList.length != 0, 'ValueListActivity: value list is empty' );

ValueListActivity.superclass.constructor.call( this, aActivityParamSet );

this.aValueList = aValueList;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bCumulative = bAccumulate;
this.aLastValue = this.aValueList[ this.aValueList.length - 1 ];
this.aFormula = aActivityParamSet.aFormula;
}
extend( ValueListActivity, BaseType );

ValueListActivity.prototype.activate = function( aEndEvent )
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.front() == 0.0) failed' );

assert( aCommonParamSet.aDiscreteTimes[ nSize - 1 ] <= 1.0,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.back() <= 1.0) failed' );

ContinuousKeyTimeActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aLerper = new KeyStopLerp( aCommonParamSet.aDiscreteTimes );
}
extend( ContinuousKeyTimeActivityBase, SimpleContinuousActivityBase );


ContinuousKeyTimeActivityBase.prototype.activate = function( aEndElement )
{
ContinuousKeyTimeActivityBase.superclass.activate.call( this, aEndElement );

this.aLerper.reset();
};

ContinuousKeyTimeActivityBase.prototype.performContinuousHook = function( /*nIndex, nFractionalIndex, nRepeatCount*/ )
{
throw ( 'ContinuousKeyTimeActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousKeyTimeActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
var nAlpha = this.calcAcceleratedTime( nSimpleTime );

var aLerpResult = this.aLerper.lerp( nAlpha );

this.performContinuousHook( aLerpResult.nIndex, aLerpResult.nLerp, nRepeatCount );
};


function ContinuousActivityBase( aCommonParamSet )
{
ContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

}
extend( ContinuousActivityBase, SimpleContinuousActivityBase );


ContinuousActivityBase.prototype.performContinuousHook = function( /*nModifiedTime, nRepeatCount*/ )
{
throw ( 'ContinuousActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
this.performContinuousHook( this.calcAcceleratedTime( nSimpleTime ), nRepeatCount );
};


function SimpleActivity( aCommonParamSet, aNumberAnimation, eDirection )
{
assert( ( eDirection == BACKWARD ) || ( eDirection == FORWARD ),
'SimpleActivity constructor: animation direction is not valid' );

assert( aNumberAnimation, 'SimpleActivity constructor: animation object is not valid' );

SimpleActivity.superclass.constructor.call( this, aCommonParamSet );

this.aAnimation = aNumberAnimation;
this.nDirection = ( eDirection == FORWARD ) ? 1.0 : 0.0;
}
extend( SimpleActivity, ContinuousActivityBase );


SimpleActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation )
return;

ANIMDBG.print( 'SimpleActivity.startAnimation invoked' );
SimpleActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

SimpleActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();

};

SimpleActivity.prototype.performContinuousHook = function( nModifiedTime /*, nRepeatCount*/ )
{

if( this.isDisposed() || !this.aAnimation )
return;

var nT = 1.0 - this.nDirection + nModifiedTime * ( 2.0*this.nDirection - 1.0 );
this.aAnimation.perform( nT );
};

SimpleActivity.prototype.performEnd = function()
{
if( this.aAnimation )
this.aAnimation.perform( this.nDirection );
};


function FromToByActivityTemplate( BaseType ) // template parameter
{

function FromToByActivity( aFromValue, aToValue, aByValue,
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate )
{
assert( aAnimation, 'FromToByActivity constructor: invalid animation object' );
assert( ( aToValue != undefined ) || ( aByValue != undefined ),
'FromToByActivity constructor: one of aToValue or aByValue must be valid' );

FromToByActivity.superclass.constructor.call( this, aActivityParamSet );

this.aFrom = aFromValue;
this.aTo = aToValue;
this.aBy = aByValue;
this.aStartValue = null;
this.aEndValue = null;
this.aPreviousValue = null;
this.aStartInterpolationValue = null;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.equal = aOperatorSet.equal;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bDynamicStartValue = false;
this.nIteration = 0;
this.bCumulative = bAccumulate;
this.aFormula = aActivityParamSet.aFormula;
}
extend( FromToByActivity, BaseType );

FromToByActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation && this.aFrom )
{
var aValue = this.aFormula ? this.aFormula( this.aFrom ) : this.aFrom;
this.aAnimation.perform(aValue);
}
};

FromToByActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.startAnimation: activity disposed or not valid animation' );
return;
this.aWakeupEvent.setNextTimeout( nNextTimeout );

this.getEventQueue().addEvent( this.aWakeupEvent );
}
else
{
this.aWakeupEvent = null;

this.endActivity();
}

return false; // remove from queue, will be added back by the wakeup event.
};

DiscreteActivityBase.prototype.dispose = function()
{
if( this.aWakeupEvent )
this.aWakeupEvent.dispose();

this.aWakeupEvent = null;

DiscreteActivityBase.superclass.dispose.call(this);
};


function SimpleContinuousActivityBase( aCommonParamSet )
{
SimpleContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aTimer = new ElapsedTime( aCommonParamSet.aActivityQueue.getTimer() );
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nMinNumberOfFrames = aCommonParamSet.nMinNumberOfFrames;
this.nCurrPerformCalls = 0;

}
extend( SimpleContinuousActivityBase, ActivityBase );


SimpleContinuousActivityBase.prototype.startAnimation = function()
{
this.aTimer.reset();
};

SimpleContinuousActivityBase.prototype.calcTimeLag = function()
{
SimpleContinuousActivityBase.superclass.calcTimeLag.call( this );

if( !this.isActive() )
return 0.0;

var nCurrElapsedTime = this.aTimer.getElapsedTime();


var nFractionElapsedTime = nCurrElapsedTime / this.nMinSimpleDuration;

var nFractionRequiredCalls = this.nCurrPerformCalls / this.nMinNumberOfFrames;


if( nFractionElapsedTime < nFractionRequiredCalls )
{
return 0.0;
}
else
{
return ( ( nFractionElapsedTime - nFractionRequiredCalls ) * this.nMinSimpleDuration );
}
};

SimpleContinuousActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nCurrElapsedTime = this.aTimer.getElapsedTime();
var nT = nCurrElapsedTime / this.nMinSimpleDuration;


var bActivityEnding = false;

if( this.isRepeatCountValid() )
{

var nRepeatCount = this.getRepeatCount();
var nEffectiveRepeat = this.isAutoReverse() ? 2.0 * nRepeatCount : nRepeatCount;

if( nEffectiveRepeat <= nT )
{
bActivityEnding = true;

nT = nEffectiveRepeat;
}
}


var nRepeats;
var nRelativeSimpleTime;
if( this.isAutoReverse() )
{
nRepeats = Math.floor( nT );
var nFractionalActiveDuration =  nT - nRepeats;

if( nRepeats % 2 )
{
nRelativeSimpleTime = 1.0 - nFractionalActiveDuration;
}
else
{
nRelativeSimpleTime = nFractionalActiveDuration;
}

nRepeats /= 2;
}
else
{

nRepeats = Math.floor( nT );
nRelativeSimpleTime = nT - nRepeats;

if( this.isRepeatCountValid() && ( nRepeats >= this.getRepeatCount() ) )
{

nRelativeSimpleTime = 1.0;
nRepeats -= 1.0;
}
}


this.simplePerform( nRelativeSimpleTime, nRepeats );

if( bActivityEnding )
this.endActivity();

++this.nCurrPerformCalls;

return this.isActive();
};

SimpleContinuousActivityBase.prototype.simplePerform = function( /*nSimpleTime, nRepeatCount*/ )
{
throw ( 'SimpleContinuousActivityBase.simplePerform: abstract method invoked' );
};


function ContinuousKeyTimeActivityBase( aCommonParamSet )
{
var nSize = aCommonParamSet.aDiscreteTimes.length;
assert( nSize > 1,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.length > 1) failed' );

assert( aCommonParamSet.aDiscreteTimes[0] == 0.0,
nTPrime += 1.0 - this.nAccelerationFraction - this.nDecelerationFraction; // full second interval

var nTRelative = nT - 1.0 + this.nDecelerationFraction;

nTPrime += nTRelative - 0.5*nTRelative*nTRelative / this.nDecelerationFraction;
}
}

nT = nTPrime / nC;

}
return nT;
};

ActivityBase.prototype.getEventQueue = function()
{
return this.aTimerEventQueue;
};

ActivityBase.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

ActivityBase.prototype.isRepeatCountValid = function()
{
return !!this.nRepeats; // first ! convert to bool
};

ActivityBase.prototype.getRepeatCount = function()
{
return this.nRepeats;
};

ActivityBase.prototype.isAutoReverse = function()
{
return this.bAutoReverse;
};

ActivityBase.prototype.end = function()
{
if( !this.isActive() || this.isDisposed() )
return;

if( this.bFirstPerformCall )
{
this.bFirstPerformCall = false;
this.startAnimation();
}

this.performEnd();
this.endAnimation();
this.endActivity();
};

ActivityBase.prototype.performEnd = function()
{
throw ( 'ActivityBase.performEnd: abstract method invoked' );
};


function DiscreteActivityBase( aCommonParamSet )
{
DiscreteActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aOriginalWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aOriginalWakeupEvent.setActivity( this );
this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aDiscreteTimes = aCommonParamSet.aDiscreteTimes;
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nCurrPerformCalls = 0;
}
extend( DiscreteActivityBase, ActivityBase );


DiscreteActivityBase.prototype.activate = function( aEndElement )
{
DiscreteActivityBase.superclass.activate.call( this, aEndElement );

this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent.setNextTimeout( 0 );
this.nCurrPerformCalls = 0;
};

DiscreteActivityBase.prototype.startAnimation = function()
{
this.aWakeupEvent.start();
};

DiscreteActivityBase.prototype.calcFrameIndex = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
var nFrameIndex = nCurrCalls % (2 * nVectorSize);

if( nFrameIndex >= nVectorSize )
nFrameIndex = 2*nVectorSize - nFrameIndex; // invert sweep

return nFrameIndex;
}
else
{
return nCurrCalls % nVectorSize;
}
};

DiscreteActivityBase.prototype.calcRepeatCount = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
return Math.floor( nCurrCalls / (2*nVectorSize) ); // we've got 2 cycles per repeat
}
else
{
return Math.floor( nCurrCalls / nVectorSize );
}
};

DiscreteActivityBase.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
throw ( 'DiscreteActivityBase.performDiscreteHook: abstract method invoked' );
};

DiscreteActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nVectorSize = this.aDiscreteTimes.length;

var nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
this.performDiscreteHook( nFrameIndex, nRepeatCount );

++this.nCurrPerformCalls;

var nCurrRepeat = this.nCurrPerformCalls / nVectorSize;

if( this.isAutoReverse() )
nCurrRepeat /= 2;

if( !this.isRepeatCountValid() || nCurrRepeat < this.getRepeatCount() )
{


nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nCurrentRepeatTime = this.aDiscreteTimes[nFrameIndex];
nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
var nNextTimeout = this.nMinSimpleDuration * ( nRepeatCount + this.calcAcceleratedTime( nCurrentRepeatTime ) );

SetActivity.prototype.isActive = function()
{
return this.bIsActive;
};

SetActivity.prototype.dequeued = function()
{
};

SetActivity.prototype.end = function()
{
this.perform();
};

SetActivity.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'SetActivity.setTargets: target element is not valid' );
this.aTargetElement = aTargetElement;
};


function ActivityBase( aCommonParamSet )
{
ActivityBase.superclass.constructor.call( this );

this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.nRepeats = aCommonParamSet.nRepeatCount;
this.nAccelerationFraction = aCommonParamSet.nAccelerationFraction;
this.nDecelerationFraction = aCommonParamSet.nDecelerationFraction;
this.bAutoReverse = aCommonParamSet.bAutoReverse;

this.bFirstPerformCall = true;
this.bIsActive = true;

}
extend( ActivityBase, AnimationActivity );


ActivityBase.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bFirstPerformCall = true;
this.bIsActive = true;
};

ActivityBase.prototype.dispose = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aEndEvent.dispose();

this.aEndEvent = null;
};

ActivityBase.prototype.perform = function()
{
if( !this.isActive() )
return false; // no, early exit.

assert( !this.bFirstPerformCall, 'ActivityBase.perform: assertion (!this.FirstPerformCall) failed' );

return true;
};

ActivityBase.prototype.calcTimeLag = function()
{
if( this.isActive() && this.bFirstPerformCall )
{
this.bFirstPerformCall = false;

this.startAnimation();
}
return 0.0;
};

ActivityBase.prototype.isActive = function()
{
return this.bIsActive;
};

ActivityBase.prototype.isDisposed = function()
{
return ( !this.bIsActive && !this.aEndEvent );
};

ActivityBase.prototype.dequeued = function()
{
if( !this.isActive() )
this.endAnimation();
};

ActivityBase.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'ActivityBase.setTargets: target element is not valid' );

this.aTargetElement = aTargetElement;
};

ActivityBase.prototype.startAnimation = function()
{
throw ( 'ActivityBase.startAnimation: abstract method invoked' );
};

ActivityBase.prototype.endAnimation = function()
{
throw ( 'ActivityBase.endAnimation: abstract method invoked' );
};

ActivityBase.prototype.endActivity = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

this.aEndEvent = null;

};

ActivityBase.prototype.calcAcceleratedTime = function( nT )
{


nT = clamp( nT, 0.0, 1.0 );

if( ( this.nAccelerationFraction > 0.0 || this.nDecelerationFraction > 0.0 ) &&
( this.nAccelerationFraction + this.nDecelerationFraction <= 1.0 ) )
{
var nC = 1.0 - 0.5*this.nAccelerationFraction - 0.5*this.nDecelerationFraction;

var nTPrime = 0.0;

if( nT < this.nAccelerationFraction )
{
nTPrime += 0.5 * nT * nT / this.nAccelerationFraction; // partial first interval
}
else
{
nTPrime += 0.5 * this.nAccelerationFraction; // full first interval

if( nT <= ( 1.0 - this.nDecelerationFraction ) )
{
nTPrime += nT - this.nAccelerationFraction; // partial second interval
}
else
{
return c;
};

aOperatorSetMap[ COLOR_PROPERTY ].scale = function( k, v )
{
var r = v.clone();
r.scale( k );
return r;
};

aOperatorSetMap[ ENUM_PROPERTY ] = {};

aOperatorSetMap[ ENUM_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ ENUM_PROPERTY ].add = function( a )
{
return a;
};

aOperatorSetMap[ ENUM_PROPERTY ].scale = function( k, v )
{
return v;
};

aOperatorSetMap[ STRING_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];

aOperatorSetMap[ BOOL_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ] = {};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].equal = function( a, b )
{
assert( a.length === b.length, 'Tuples length mismatch.' );
return ( a.toString() === b.toString() );
};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].add = function( a, b )
{
assert( a.length === b.length, 'Tuples length mismatch.' );
var r = [];
for( var i = 0; i < a.length; ++i )
{
r.push(a[i] + b[i]);
}
return r;
};

aOperatorSetMap[ TUPLE_NUMBER_PROPERTY ].scale = function( k, v )
{
var r = [];
for( var i = 0; i < v.length; ++i )
{
r.push(k * v[i]);
}
return r;
};


function ActivityParamSet()
{
this.aEndEvent = null;
this.aWakeupEvent = null;
this.aTimerEventQueue = null;
this.aActivityQueue = null;
this.nMinDuration = undefined;
this.nMinNumberOfFrames = MINIMUM_FRAMES_PER_SECONDS;
this.bAutoReverse = false;
this.nRepeatCount = 1.0;
this.nAccelerationFraction = 0.0;
this.nDecelerationFraction = 0.0;
this.nSlideWidth = undefined;
this.nSlideHeight = undefined;
this.aFormula = null;
this.aDiscreteTimes = [];
}


function AnimationActivity()
{
this.nId = AnimationActivity.getUniqueId();
}


AnimationActivity.CURR_UNIQUE_ID = 0;

AnimationActivity.getUniqueId = function()
{
++AnimationActivity.CURR_UNIQUE_ID;
return AnimationActivity.CURR_UNIQUE_ID;
};

AnimationActivity.prototype.getId = function()
{
return this.nId;
};


function SetActivity( aCommonParamSet, aAnimation, aToAttr  )
{
SetActivity.superclass.constructor.call( this );

this.aAnimation = aAnimation;
this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.aToAttr = aToAttr;
this.bIsActive = true;
}
extend( SetActivity, AnimationActivity );


SetActivity.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bIsActive = true;
};

SetActivity.prototype.dispose = function()
{
this.bIsActive = false;
if( this.aEndEvent && this.aEndEvent.isCharged() )
this.aEndEvent.dispose();
};

SetActivity.prototype.calcTimeLag = function()
{
return 0.0;
};

SetActivity.prototype.perform = function()
{
if( !this.isActive() )
return false;

this.bIsActive = false;

if( this.aAnimation && this.aTargetElement )
{
this.aAnimation.start( this.aTargetElement );
this.aAnimation.perform( this.aToAttr );
this.aAnimation.end();
}

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

};
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_RGB ] =
function ( nFrom, nTo, nT )
{
return RGBColor.interpolate( nFrom, nTo, nT );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_HSL ] =
function ( bCCW  )
{
return  function ( nFrom, nTo, nT )
{
return HSLColor.interpolate( nFrom, nTo, nT, bCCW );
};
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ TUPLE_NUMBER_PROPERTY ] =
function ( aFrom, aTo, nT )
{
var aRes = [];
for( var i = 0; i < aFrom.length; ++i )
{
aRes.push( ( 1.0 - nT )* aFrom[i] + nT * aTo[i] );
}
return aRes;
};


function KeyStopLerp( aValueList )
{
KeyStopLerp.validateInput( aValueList );

this.aKeyStopList = [];
this.nLastIndex = 0;
this.nKeyStopDistance = aValueList[1] - aValueList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

for( var i = 0; i < aValueList.length; ++i )
this.aKeyStopList.push( aValueList[i] );

this.nUpperBoundIndex = this.aKeyStopList.length - 2;
}


KeyStopLerp.validateInput = function( aValueList )
{
var nSize = aValueList.length;
assert( nSize > 1, 'KeyStopLerp.validateInput: key stop vector must have two entries or more' );

for( var i = 1; i < nSize; ++i )
{
if( aValueList[i-1] > aValueList[i] )
log( 'KeyStopLerp.validateInput: time vector is not sorted in ascending order!' );
}
};

KeyStopLerp.prototype.reset = function()
{
KeyStopLerp.validateInput( this.aKeyStopList );
this.nLastIndex = 0;
this.nKeyStopDistance = this.aKeyStopList[1] - this.aKeyStopList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

};

KeyStopLerp.prototype.lerp = function( nAlpha )
{
if( nAlpha > this.aKeyStopList[ this.nLastIndex + 1 ] )
{
do
{
var nIndex = this.nLastIndex + 1;
this.nLastIndex = clamp( nIndex, 0, this.nUpperBoundIndex );
this.nKeyStopDistance = this.aKeyStopList[ this.nLastIndex + 1 ] - this.aKeyStopList[ this.nLastIndex ];
}
while( ( this.nKeyStopDistance <= 0 ) && ( this.nLastIndex < this.nUpperBoundIndex ) );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) / this.nKeyStopDistance;

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};

KeyStopLerp.prototype.lerp_ported = function( nAlpha )
{
if( ( this.aKeyStopList[ this.nLastIndex ] < nAlpha ) ||
( this.aKeyStopList[ this.nLastIndex + 1 ] >= nAlpha ) )
{
var i = 0;
for( ; i < this.aKeyStopList.length; ++i )
{
if( this.aKeyStopList[i] >= nAlpha )
break;
}
if( this.aKeyStopList[i] > nAlpha )
--i;
var nIndex = i - 1;
this.nLastIndex = clamp( nIndex, 0, this.aKeyStopList.length - 2 );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) /
( this.aKeyStopList[ this.nLastIndex+1 ] - this.aKeyStopList[ this.nLastIndex ] );

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};


var aOperatorSetMap = [];

aOperatorSetMap[ NUMBER_PROPERTY ] = {};

aOperatorSetMap[ NUMBER_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].add = function( a, b )
{
return ( a + b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].scale = function( k, v )
{
return ( k * v );
};

aOperatorSetMap[ COLOR_PROPERTY ] = {};

aOperatorSetMap[ COLOR_PROPERTY ].equal = function( a, b )
{
return a.equal( b );
};

aOperatorSetMap[ COLOR_PROPERTY ].add = function( a, b )
{
var c = a.clone();
c.add( b );
{
if( this.aSkipEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aSkipEffectEvent );
this.aSkipEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindCurrentEffectEvent = function( aEvent )
{
this.aRewindCurrentEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindCurrentEffectEvent = function()
{
if( this.aRewindCurrentEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindCurrentEffectEvent );
this.aRewindCurrentEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindLastEffectEvent = function( aEvent )
{
this.aRewindLastEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindLastEffectEvent = function()
{
if( this.aRewindLastEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindLastEffectEvent );
this.aRewindLastEffectEvent = null;
}
};

EventMultiplexer.prototype.registerSkipInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aSkipInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifySkipInteractiveEffectEvent = function( nNotifierId )
{
if( this.aSkipInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aSkipInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindRunningInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindRunningInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindEndedInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindEndedInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindedEffectHandler = function( aNotifierId, aHandler )
{
this.aRewindedEffectHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyRewindedEffectEvent = function( aNotifierId )
{
if( this.aRewindedEffectHandlerSet[ aNotifierId ] )
{
(this.aRewindedEffectHandlerSet[ aNotifierId ])();
}
};

EventMultiplexer.prototype.registerElementChangedHandler = function( aNotifierId, aHandler )
{
this.aElementChangedHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyElementChangedEvent = function( aNotifierId, aElement )
{
if( this.aElementChangedHandlerSet[ aNotifierId ] )
{
(this.aElementChangedHandlerSet[ aNotifierId ])( aElement );
}
};

EventMultiplexer.DEBUG = aEventMultiplexerDebugPrinter.isEnabled();

EventMultiplexer.prototype.DBG = function( sMethodName, eEventType, aNotifierId, nTime )
{
if( EventMultiplexer.DEBUG )
{
var sInfo = 'EventMultiplexer.' + sMethodName;
sInfo += '( type: ' + aEventTriggerOutMap[ eEventType ];
sInfo += ', notifier: ' + aNotifierId + ' )';
aEventMultiplexerDebugPrinter.print( sInfo, nTime );
}
};


var aInterpolatorHandler = {};

aInterpolatorHandler.getInterpolator = function( eCalcMode, eValueType, eValueSubtype )
{
var bHasSubtype = ( typeof( eValueSubtype ) === typeof( 0 ) );

if( !bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ];
}
else if( bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ];
}
else
{
log( 'aInterpolatorHandler.getInterpolator: not found any valid interpolator for calc mode '
+ aCalcModeOutMap[eCalcMode]  + ' and value type ' + aValueTypeOutMap[eValueType]  );
return null;
}
};

aInterpolatorHandler.aLerpFunctorMap = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_DISCRETE ] = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ] = [];


aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ NUMBER_PROPERTY ] =
function ( nFrom, nTo, nT )
{
return ( ( 1.0 - nT )* nFrom + nT * nTo );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ] = [];

};

InteractiveAnimationSequence.prototype.end = function()
{
aSlideShow.notifyInteractiveAnimationSequenceEnd( this.getId() );
this.bIsRunning = false;
};


function PriorityEntry( aValue, nPriority )
{
this.aValue = aValue;
this.nPriority = nPriority;
}

PriorityEntry.compare = function( aLhsEntry, aRhsEntry )
{
if ( aLhsEntry.nPriority < aRhsEntry.nPriority )
{
return -1;
}
else if (aLhsEntry.nPriority > aRhsEntry.nPriority)
{
return 1;
}
else
{
return 0;
}
};


function EventMultiplexer( aTimerEventQueue )
{
this.nId = EventMultiplexer.getUniqueId();
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMap = {};
this.aAnimationsEndHandler = null;
this.aSkipEffectEndHandlerSet = [];
this.aMouseClickHandlerSet = new PriorityQueue( PriorityEntry.compare );
this.aSkipEffectEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
this.aSkipInteractiveEffectEventSet = {};
this.aRewindRunningInteractiveEffectEventSet = {};
this.aRewindEndedInteractiveEffectEventSet = {};
this.aRewindedEffectHandlerSet = {};
this.aElementChangedHandlerSet = {};
}

EventMultiplexer.CURR_UNIQUE_ID = 0;

EventMultiplexer.getUniqueId = function()
{
++EventMultiplexer.CURR_UNIQUE_ID;
return EventMultiplexer.CURR_UNIQUE_ID;
};

EventMultiplexer.prototype.getId = function()
{
return this.nId;
};

EventMultiplexer.prototype.hasRegisteredMouseClickHandlers = function()
{
return !this.aMouseClickHandlerSet.isEmpty();
};

EventMultiplexer.prototype.registerMouseClickHandler = function( aHandler, nPriority )
{
var aHandlerEntry = new PriorityEntry( aHandler, nPriority );
this.aMouseClickHandlerSet.push( aHandlerEntry );
};

EventMultiplexer.prototype.notifyMouseClick = function( aMouseEvent )
{
var aMouseClickHandlerSet = this.aMouseClickHandlerSet.clone();
while( !aMouseClickHandlerSet.isEmpty() )
{
var aHandlerEntry = aMouseClickHandlerSet.top();
aMouseClickHandlerSet.pop();
if( aHandlerEntry.aValue.handleClick( aMouseEvent ) )
break;
}
};

EventMultiplexer.prototype.registerEvent = function( eEventType, aNotifierId, aEvent )
{
this.DBG( 'registerEvent', eEventType, aNotifierId );
if( !this.aEventMap[ eEventType ] )
{
this.aEventMap[ eEventType ] = {};
}
if( !this.aEventMap[ eEventType ][ aNotifierId ] )
{
this.aEventMap[ eEventType ][ aNotifierId ] = [];
}
this.aEventMap[ eEventType ][ aNotifierId ].push( aEvent );
};


EventMultiplexer.prototype.notifyEvent = function( eEventType, aNotifierId )
{
this.DBG( 'notifyEvent', eEventType, aNotifierId );
if( this.aEventMap[ eEventType ] )
{
if( this.aEventMap[ eEventType ][ aNotifierId ] )
{
var aEventArray = this.aEventMap[ eEventType ][ aNotifierId ];
var nSize = aEventArray.length;
for( var i = 0; i < nSize; ++i )
{
this.aTimerEventQueue.addEvent( aEventArray[i] );
}
}
}
};

EventMultiplexer.prototype.registerAnimationsEndHandler = function( aHandler )
{
this.aAnimationsEndHandler = aHandler;
};

EventMultiplexer.prototype.notifyAnimationsEndEvent = function()
{
if( this.aAnimationsEndHandler )
this.aAnimationsEndHandler();
};

EventMultiplexer.prototype.registerNextEffectEndHandler = function( aHandler )
{
this.aSkipEffectEndHandlerSet.push( aHandler );
};

EventMultiplexer.prototype.notifyNextEffectEndEvent = function()
{
var nSize = this.aSkipEffectEndHandlerSet.length;
for( var i = 0; i < nSize; ++i )
{
(this.aSkipEffectEndHandlerSet[i])();
}
this.aSkipEffectEndHandlerSet = [];
};

EventMultiplexer.prototype.registerSkipEffectEvent = function( aEvent )
{
this.aSkipEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifySkipEffectEvent = function()
}

this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;
this.nTargetSlideIndex = undefined;

this.sURL = getNSAttribute( 'xlink', this.aElement, 'href' );
if( this.sURL )
{
if( this.sURL[0] === '#' )
{
if( this.sURL.substr(1, 5) === 'Slide' )
{
var sSlideIndex = this.sURL.split( ' ' )[1];
this.nTargetSlideIndex = parseInt( sSlideIndex ) - 1;
}
}

this.aEventMultiplexer.registerElementChangedHandler( this.sId, bind2( HyperlinkElement.prototype.onElementChanged, this) );
this.aEventMultiplexer.registerMouseClickHandler( this, 1100 );

this.bIsPointerOver = false;
this.mouseEnterHandler = bind2( HyperlinkElement.prototype.onMouseEnter, this);
this.mouseLeaveHandler = bind2( HyperlinkElement.prototype.onMouseLeave, this);
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
else
{
log( 'warning: HyperlinkElement(' + this.sId + '): url is empty' );
}
}

HyperlinkElement.prototype.onElementChanged = function( aElement )
{
if( !aElement )
{
log( 'error: HyperlinkElement: passed element is not valid' );
return;
}

if( this.sURL )
{
this.aElement.removeEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.removeEventListener( 'mouseout', this.mouseLeaveHandler, false );
this.aElement = aElement;
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
};

HyperlinkElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

HyperlinkElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

HyperlinkElement.prototype.handleClick = function( )
{
if( !this.bIsPointerOver ) return false;

if( this.nTargetSlideIndex !== undefined )
{
aSlideShow.displaySlide( this.nTargetSlideIndex, true );
}
else
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
aWindowObject.open( this.sURL, this.sId );
}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

return true;
};

HyperlinkElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

HyperlinkElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function InteractiveAnimationSequence( nId )
{
this.nId = nId;
this.bIsRunning = false;
this.aStartEvent = null;
this.aEndEvent = null;
}

InteractiveAnimationSequence.prototype.getId = function()
{
return this.nId;
};

InteractiveAnimationSequence.prototype.getStartEvent = function()
{
if( !this.aStartEvent )
{
this.aStartEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.start, this ) );
}
return this.aStartEvent;
};

InteractiveAnimationSequence.prototype.getEndEvent = function()
{
if( !this.aEndEvent )
{
this.aEndEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.end, this ) );
}
return this.aEndEvent;
};

InteractiveAnimationSequence.prototype.chargeEvents = function()
{
if( this.aStartEvent )      this.aStartEvent.charge();
if( this.aEndEvent )        this.aEndEvent.charge();
};

InteractiveAnimationSequence.prototype.isRunning = function()
{
return this.bIsRunning;
};

InteractiveAnimationSequence.prototype.start = function()
{
aSlideShow.notifyInteractiveAnimationSequenceStart( this.getId() );
this.bIsRunning = true;
}

var bEventRegistered = false;
switch( eEventType )
{
case EVENT_TRIGGER_ON_CLICK:
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aEvent );
aEventMultiplexer.registerRewindedEffectHandler( aSourceEventElement.getId(),
bind2( aSourceEventElement.charge, aSourceEventElement ) );
bEventRegistered = true;
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
if( bEventRegistered )
{
var aStartEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getStartEvent();
var aEndEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getEndEvent();
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aStartEvent );
aEventMultiplexer.registerEvent( EVENT_TRIGGER_END_EVENT, nNodeId, aEndEvent );
aEventMultiplexer.registerRewindedEffectHandler(
nNodeId,
bind2( InteractiveAnimationSequence.prototype.chargeEvents,
aInteractiveAnimationSequenceMap[ nNodeId ] )
);
}
}
else  // no base event element present
{
switch( eEventType )
{
case EVENT_TRIGGER_ON_NEXT_EFFECT:
aNextEffectEventArray.appendEvent( aEvent );
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
}
break;
case SYNCBASE_TIMING:
eEventType = aTiming.getEventType();
sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aAnimationNode = aNodeContext.aAnimationNodeMap[ sEventBaseElemId ];
if( !aAnimationNode )
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
aEventMultiplexer.registerEvent( eEventType, aAnimationNode.getId(), aEvent );
}
else
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not specified' );
}
break;
default:
log( 'generateEvent: not handled timing type: ' + eTimingType );
}
}
}

registerEvent.DEBUG = aRegisterEventDebugPrinter.isEnabled();

registerEvent.DBG = function( aTiming, nTime )
{
if( registerEvent.DEBUG )
{
aRegisterEventDebugPrinter.print( 'registerEvent( timing: ' + aTiming.info() + ' )', nTime );
}
};


function SourceEventElement( sId, aElement, aEventMultiplexer )
{
this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;

this.aEventMultiplexer.registerMouseClickHandler( this, 1000 );

this.bClickHandled = false;
this.bIsPointerOver = false;
this.aElement.addEventListener( 'mouseover', bind2( SourceEventElement.prototype.onMouseEnter, this), false );
this.aElement.addEventListener( 'mouseout', bind2( SourceEventElement.prototype.onMouseLeave, this), false );
}

SourceEventElement.prototype.getId = function()
{
return this.sId;
};

SourceEventElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

SourceEventElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

SourceEventElement.prototype.charge = function()
{
this.bClickHandled = false;
this.setPointerCursor();
};

SourceEventElement.prototype.handleClick = function( /*aMouseEvent*/ )
{
if( !this.bIsPointerOver ) return false;

if( this.bClickHandled )
return false;

this.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_ON_CLICK, this.getId() );
aSlideShow.update();
this.bClickHandled = true;
this.setDefaultCursor();
return true;
};

SourceEventElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

SourceEventElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function HyperlinkElement( sId, aEventMultiplexer )
{
var aElement = document.getElementById( sId );
if( !aElement )
{
log( 'error: HyperlinkElement: no element with id: <' + sId + '> found' );
return;
}
if( !aEventMultiplexer )
{
log( 'AnimatedElement constructor: event multiplexer is not valid' );
return true;
};

DelayEvent.prototype.isCharged = function()
{
return !this.bWasFired;
};

DelayEvent.prototype.getActivationTime = function( nCurrentTime )
{
return ( this.nTimeout + nCurrentTime );
};

DelayEvent.prototype.dispose = function()
{
if( this.isCharged() )
this.bWasFired = true;
};

DelayEvent.prototype.charge = function()
{
if( !this.isCharged() )
this.bWasFired = false;
};


function WakeupEvent( aTimer, aActivityQueue )
{
WakeupEvent.superclass.constructor.call( this );

this.aTimer = new ElapsedTime( aTimer );
this.nNextTime = 0.0;
this.aActivity = null;
this.aActivityQueue = aActivityQueue;
}
extend( WakeupEvent, Event );


WakeupEvent.prototype.clone = function()
{
var aWakeupEvent = new WakeupEvent( this.aTimer.getTimeBase(), this.aActivityQueue );
aWakeupEvent.nNextTime = this.nNextTime;
aWakeupEvent.aActivity = this.aActivity;
return aWakeupEvent;
};

WakeupEvent.prototype.dispose = function()
{
this.aActivity = null;
};

WakeupEvent.prototype.fire = function()
{
if( !this.aActivity )
return false;

return this.aActivityQueue.addActivity( this.aActivity );
};

WakeupEvent.prototype.isCharged = function()
{
return true;
};

WakeupEvent.prototype.getActivationTime = function( nCurrentTime )
{
var nElapsedTime = this.aTimer.getElapsedTime();

return Math.max( nCurrentTime, nCurrentTime - nElapsedTime + this.nNextTime );
};

WakeupEvent.prototype.start = function()
{
this.aTimer.reset();
};

WakeupEvent.prototype.setNextTimeout = function( nNextTime )
{
this.nNextTime = nNextTime;
};

WakeupEvent.prototype.setActivity = function( aActivity )
{
this.aActivity = aActivity;
};


function makeEvent( aFunctor )
{
return new DelayEvent( aFunctor, 0.0 );
}


function makeDelay( aFunctor, nTimeout )
{
return new DelayEvent( aFunctor, nTimeout );
}


function registerEvent( nNodeId, aTiming, aEvent, aNodeContext )
{
var aSlideShowContext = aNodeContext.aContext;
var eTimingType = aTiming.getType();

registerEvent.DBG( aTiming );

if( eTimingType == OFFSET_TIMING )
{
aSlideShowContext.aTimerEventQueue.addEvent( aEvent );
}
else if ( aNodeContext.bFirstRun )
{
var aEventMultiplexer = aSlideShowContext.aEventMultiplexer;
if( !aEventMultiplexer )
{
log( 'registerEvent: event multiplexer not initialized' );
return;
}
var aNextEffectEventArray = aSlideShowContext.aNextEffectEventArray;
if( !aNextEffectEventArray )
{
log( 'registerEvent: next effect event array not initialized' );
return;
}
var aInteractiveAnimationSequenceMap =
aSlideShowContext.aInteractiveAnimationSequenceMap;
if( !aInteractiveAnimationSequenceMap )
{
log( 'registerEvent: interactive animation sequence map not initialized' );
return;
}

switch( eTimingType )
{
case EVENT_TIMING:
var eEventType = aTiming.getEventType();
var sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aEventBaseElem = document.getElementById( sEventBaseElemId );
if( !aEventBaseElem )
{
log( 'generateEvent: EVENT_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
var aSourceEventElement = aNodeContext.makeSourceEventElement( sEventBaseElemId, aEventBaseElem );

if( !aInteractiveAnimationSequenceMap[ nNodeId ] )
{
aInteractiveAnimationSequenceMap[ nNodeId ] = new InteractiveAnimationSequence(nNodeId);
if( !aAnimationRootElement )
return false;

this.aRootNode = createAnimationTree( aAnimationRootElement, this.aContext );

return ( this.aRootNode ? true : false );
};

SlideAnimations.prototype.parseElements = function()
{
if( !this.aRootNode )
return false;

if( !this.aRootNode.parseElement() )
return false;
else
this.bElementsParsed = true;
};

SlideAnimations.prototype.elementsParsed = function()
{
return this.bElementsParsed;
};

SlideAnimations.prototype.isFirstRun = function()
{
return this.aContext.bFirstRun;
};

SlideAnimations.prototype.isAnimated = function()
{
if( !this.bElementsParsed )
return false;

return this.aRootNode.hasPendingAnimation();
};

SlideAnimations.prototype.start = function()
{
if( !this.bElementsParsed )
return false;

this.chargeSourceEvents();
this.chargeInterAnimEvents();

aSlideShow.setSlideEvents( this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aEventMultiplexer );

if( this.aContext.bFirstRun == undefined )
this.aContext.bFirstRun = true;
else if( this.aContext.bFirstRun )
this.aContext.bFirstRun = false;

this.aContext.bIsInvalid = !this.aRootNode.init();
if( this.aContext.bIsInvalid )
return false;

return this.aRootNode.resolve();
};

SlideAnimations.prototype.end = function( bLeftEffectsSkipped )
{
if( !this.bElementsParsed )
return; // no animations there

this.aRootNode.deactivate();
this.aRootNode.end();

if( bLeftEffectsSkipped && this.isFirstRun() )
{
this.aContext.bFirstRun = undefined;
}
else if( this.isFirstRun() )
{
this.aContext.bFirstRun = false;
}

this.aContext.bIsInvalid = false;
};

SlideAnimations.prototype.dispose = function()
{
if( this.aRootNode )
{
this.aRootNode.dispose();
}
};

SlideAnimations.prototype.clearNextEffectEvents = function()
{
ANIMDBG.print( 'SlideAnimations.clearNextEffectEvents: current slide: ' + nCurSlide );
this.aNextEffectEventArray.clear();
this.aContext.bFirstRun = undefined;
};

SlideAnimations.prototype.chargeSourceEvents = function()
{
for( var id in this.aSourceEventElementMap )
{
this.aSourceEventElementMap[id].charge();
}
};

SlideAnimations.prototype.chargeInterAnimEvents = function()
{
for( var id in this.aInteractiveAnimationSequenceMap )
{
this.aInteractiveAnimationSequenceMap[id].chargeEvents();
}
};


function Event()
{
this.nId = Event.getUniqueId();
}


Event.CURR_UNIQUE_ID = 0;

Event.getUniqueId = function()
{
++Event.CURR_UNIQUE_ID;
return Event.CURR_UNIQUE_ID;
};

Event.prototype.getId = function()
{
return this.nId;
};


function DelayEvent( aFunctor, nTimeout )
{
DelayEvent.superclass.constructor.call( this );

this.aFunctor = aFunctor;
this.nTimeout = nTimeout;
this.bWasFired = false;
}
extend( DelayEvent, Event );


DelayEvent.prototype.fire = function()
{
assert( this.isCharged(), 'DelayEvent.fire: assertion isCharged failed' );

this.bWasFired = true;
this.aFunctor();
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( this.bIsValid && aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType] === undefined )
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition not valid: type: ' + sTypeAttr + ' subtype: ' + sSubTypeAttr );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.sFadeColor = null;
if( this.eTransitionType == FADE_TRANSITION &&
( this.eTransitionSubType == FADEFROMCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADEOVERCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADETOCOLOR_TRANS_SUBTYPE ) )
{
var sColorAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fadeColor' );
if( sColorAttr )
this.sFadeColor = sColorAttr;
else
this.sFadeColor='#000000';
}


this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
this.aDuration = new Duration( null ); // duration == 0.0
}

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;

};

SlideTransition.prototype.isValid = function()
{
return this.bIsValid;
};

SlideTransition.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

SlideTransition.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

SlideTransition.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

SlideTransition.prototype.getFadeColor = function()
{
return this.sFadeColor;
};

SlideTransition.prototype.isDirectionForward = function()
{
return !this.bReverseDirection;
};

SlideTransition.prototype.getDuration = function()
{
return this.aDuration;
};

SlideTransition.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

SlideTransition.prototype.info = function()
{

var sInfo ='slide transition <' + this.sSlideId + '>: ';
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( !this.isDirectionForward() )
sInfo += ';  direction: reverse';

sInfo += '; mode: ' + aTransitionModeOutMap[ this.getTransitionMode() ];

if( this.getDuration() )
sInfo += '; duration: ' + this.getDuration().info();

return sInfo;
};


function SlideAnimations( aSlideShowContext )
{
this.aContext = new NodeContext( aSlideShowContext );
this.aAnimationNodeMap = {};
this.aAnimatedElementMap = {};
this.aSourceEventElementMap = {};
this.aNextEffectEventArray = new NextEffectEventArray();
this.aInteractiveAnimationSequenceMap = {};
this.aEventMultiplexer = new EventMultiplexer( aSlideShowContext.aTimerEventQueue );
this.aRootNode = null;
this.bElementsParsed = false;

this.aContext.aAnimationNodeMap = this.aAnimationNodeMap;
this.aContext.aAnimatedElementMap = this.aAnimatedElementMap;
this.aContext.aSourceEventElementMap = this.aSourceEventElementMap;

this.aEventMultiplexer.registerMouseClickHandler( document, 100 );
}


SlideAnimations.prototype.importAnimations = function( aAnimationRootElement )
{

function SlideTransition( aAnimationsRootElement, aSlideId )
{
this.sSlideId = aSlideId;
this.bIsValid = false;
this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = false;
this.eTransitionMode = TRANSITION_MODE_IN;
this.sFadeColor = null;
this.aDuration = null;
this.nMinFrameCount = undefined;

if( aAnimationsRootElement )
{
if( aAnimationsRootElement.firstElementChild &&
( aAnimationsRootElement.firstElementChild.getAttributeNS( NSS['smil'], 'begin' ) === (this.sSlideId + '.begin') ) )
{
var aTransitionFilterElement = aAnimationsRootElement.firstElementChild.firstElementChild;
if( aTransitionFilterElement && ( aTransitionFilterElement.localName === 'transitionFilter' ) )
{
this.aElement = aTransitionFilterElement;
this.parseElement();
}
aAnimationsRootElement.removeChild( aAnimationsRootElement.firstElementChild );
}
}
}

SlideTransition.prototype.createSlideTransition = function( aLeavingSlide, aEnteringSlide )
{
if( !this.isValid() )
return null;
if( this.eTransitionType == 0 )
return null;

if( !aEnteringSlide )
{
log( 'SlideTransition.createSlideTransition: invalid entering slide.' );
return null;
}

var aTransitionInfo = aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'SlideTransition.createSlideTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( this.eTransitionType, this.eTransitionSubType );
return new ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, this.isDirectionForward() );

case TRANSITION_SPECIAL:
switch( this.eTransitionType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition class: TRANSITION_SPECIAL, ' +
'unknown transition type: ' + this.eTransitionType );
return null;

case PUSHWIPE_TRANSITION:
{
var aDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: PUSHWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aDirection = { x: -1.0, y: 0.0 };
break;
}
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aDirection, aDirection );
}

case SLIDEWIPE_TRANSITION:
{
var aInDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: SLIDEWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aInDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aInDirection = { x: -1.0, y: 0.0 };
break;
}
var aNoDirection = { x: 0.0, y: 0.0 };
if( !this.bReverseDirection )
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aNoDirection, aInDirection );
}
else
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aInDirection, aNoDirection );
}
}

case FADE_TRANSITION:
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: FADE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case CROSSFADE_TRANS_SUBTYPE:
return new FadingSlideChange( aLeavingSlide, aEnteringSlide );
case FADEOVERCOLOR_TRANS_SUBTYPE:
return new FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, this.getFadeColor() );
}
}
}
};

SlideTransition.prototype.parseElement = function()
{
this.bIsValid = true;
var aAnimElem = this.aElement;

this.eTransitionType = undefined;
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
aAnimatableElement.setAttribute( 'visibility', sVisibilityAttr );
aParagraphElement.setAttribute( 'visibility', 'inherit' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
if( aBulletCharElem )
aBulletCharElem.setAttribute( 'visibility', 'hidden' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapElemSet[i] )
aBitmapElemSet[i].setAttribute( 'visibility', 'hidden' );
}


aTextElement.appendChild( aParagraphElement );
aAnimatableElement.appendChild( aTextElement );

if( aBulletCharClone )
this.aGraphicGroupElement.appendChild( aBulletCharClone );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
this.aGraphicGroupElement.appendChild( aBitmapCloneSet[i] );
}
aAnimatableElement.appendChild( this.aGraphicGroupElement );
aAnimatedElementGroup.appendChild( aAnimatableElement );

this.aParentTextElement = aElement.parentNode;
this.aParagraphElement = aElement;
this.aAnimatedElementGroup = aAnimatedElementGroup;
this.nRunningAnimations = 0;

this.aHyperlinkIdSet = [];
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var sHyperlinkId;
for( i = 0; i < aHyperlinkElementSet.length; ++i )
{
sHyperlinkId = aHyperlinkElementSet[i].getAttribute( 'id' );
if( sHyperlinkId )
this.aHyperlinkIdSet.push( sHyperlinkId );
else
log( 'error: AnimatedTextElement constructor: hyperlink element has no id' );
}

AnimatedTextElement.superclass.constructor.call( this, aAnimatableElement, aEventMultiplexer );

}
extend( AnimatedTextElement, AnimatedElement );


AnimatedTextElement.prototype.setToElement = function( aElement )
{
var bRet = AnimatedTextElement.superclass.setToElement.call( this, aElement );
if( bRet )
{
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
}
return ( bRet && this.aGraphicGroupElement );
};

AnimatedTextElement.prototype.notifySlideStart = function( aSlideShowContext )
{
DBGLOG( 'AnimatedTextElement.notifySlideStart' );
AnimatedTextElement.superclass.notifySlideStart.call( this, aSlideShowContext );
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
this.restoreBaseTextParagraph();
};

AnimatedTextElement.prototype.notifySlideEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifySlideEnd' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
};

AnimatedTextElement.prototype.restoreBaseTextParagraph = function()
{
var aActiveParagraphElement = this.aActiveElement.firstElementChild.firstElementChild;
if( aActiveParagraphElement )
{
var sVisibilityAttr = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityAttr || ( sVisibilityAttr === 'visible' ) )
sVisibilityAttr = 'inherit';
if( sVisibilityAttr === 'inherit' )
this.aGraphicGroupElement.setAttribute( 'visibility', 'visible' );
else
this.aGraphicGroupElement.setAttribute( 'visibility', 'hidden' );

var aParagraphClone = aActiveParagraphElement.cloneNode( true );
aParagraphClone.setAttribute( 'id', this.sParagraphId );
aParagraphClone.setAttribute( 'visibility', sVisibilityAttr );
this.aParentTextElement.replaceChild( aParagraphClone, this.aParagraphElement );
this.aParagraphElement = aParagraphClone;


var aEventMultiplexer = this.aSlideShowContext.aEventMultiplexer;
var aHyperlinkIdSet = this.aHyperlinkIdSet;
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var i = 0;
for( ; i < aHyperlinkIdSet.length; ++i )
{
aEventMultiplexer.notifyElementChangedEvent( aHyperlinkIdSet[i], aHyperlinkElementSet[i] );
}
}
this.aActiveElement.setAttribute( 'visibility', 'hidden' );
};

AnimatedTextElement.prototype.notifyAnimationStart = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationStart' );
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
this.aParagraphElement.setAttribute( 'visibility', 'hidden' );
}
++this.nRunningAnimations;
};

AnimatedTextElement.prototype.notifyAnimationEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationEnd' );
--this.nRunningAnimations;
if( this.nRunningAnimations === 0 )
{
this.restoreBaseTextParagraph();
}
};

AnimatedTextElement.prototype.saveState = function( nAnimationNodeId )
{
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
}
AnimatedTextElement.superclass.saveState.call( this, nAnimationNodeId );
};

AnimatedTextElement.prototype.restoreState = function( nAnimationNodeId )
{
var bRet = AnimatedTextElement.superclass.restoreState.call( this, nAnimationNodeId );
if( bRet )
this.restoreBaseTextParagraph();
return bRet;
};

for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
break;
}

return colorParser( sStrokeColorValue );
};

AnimatedElement.prototype.setStrokeColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sStrokeColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'stroke', sValue );
}
}
};

AnimatedElement.prototype.getFontColor = function()
{
return new RGBColor( 0, 0, 0 );
};

AnimatedElement.prototype.setFontColor = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFontColor(' + sValue + ')' );
};

AnimatedElement.prototype.DBG = function( sMessage, nTime )
{
aAnimatedElementDebugPrinter.print( 'AnimatedElement(' + this.getId() + ')' + sMessage, nTime );
};


function AnimatedTextElement( aElement, aEventMultiplexer )
{
var theDocument = document;

var sTextType = aElement.getAttribute( 'class' );
var bIsListItem = ( sTextType === 'ListItem' );
if( ( sTextType !== 'TextParagraph' ) && !bIsListItem )
{
log( 'AnimatedTextElement: passed element is not a paragraph.' );
return;
}
var aTextShapeElement = aElement.parentNode;
sTextType = aTextShapeElement.getAttribute( 'class' );
if( sTextType !== 'SVGTextShape' )
{
log( 'AnimatedTextElement: element parent is not a text shape.' );
return;
}
var aTextShapeGroup = aTextShapeElement.parentNode;
var aAnimatedElementGroup = getElementByClassName( aTextShapeGroup, 'AnimatedElements' );
if( !aAnimatedElementGroup )
{
aAnimatedElementGroup = theDocument.createElementNS( NSS['svg'], 'g' );
aAnimatedElementGroup.setAttribute( 'class', 'AnimatedElements' );
aTextShapeGroup.appendChild( aAnimatedElementGroup );
}

var aAnimatableElement = theDocument.createElementNS( NSS['svg'], 'g' );
var aTextElement = theDocument.createElementNS( NSS['svg'], 'text' );
var aParagraphElement = aElement.cloneNode( true );

this.aGraphicGroupElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aGraphicGroupElement.setAttribute( 'class', 'GraphicGroup' );

var aBulletCharClone = null;
var aBulletCharElem = null;
var bIsBulletCharStyle =
( aElement.getAttributeNS( NSS['ooo'], aOOOAttrListItemNumberingType ) === 'bullet-style' );
if( bIsBulletCharStyle )
{
var aBulletCharGroupElem = getElementByClassName( aTextShapeGroup, 'BulletChars' );
if( aBulletCharGroupElem )
{
var aBulletPlaceholderElem = getElementByClassName( aElement, 'BulletPlaceholder' );
if( aBulletPlaceholderElem )
{
var sId = aBulletPlaceholderElem.getAttribute( 'id' );
sId = 'bullet-char-' + sId;
aBulletCharElem = theDocument.getElementById( sId );
if( aBulletCharElem )
{
aBulletCharClone = aBulletCharElem.cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
else
{
log( 'AnimatedTextElement: no bullet placeholder found' );
}
}
else
{
log( 'AnimatedTextElement: no bullet char group found' );
}
}

var aBitmapElemSet = [];
var aBitmapCloneSet = [];
var aBitmapPlaceholderSet = getElementsByClassName( aElement, 'BitmapPlaceholder' );
var i;
if( aBitmapPlaceholderSet )
{
for( i = 0; i < aBitmapPlaceholderSet.length; ++i )
{
sId = aBitmapPlaceholderSet[i].getAttribute( 'id' );
var sBitmapChecksum = sId.substring( 'bitmap-placeholder'.length + 1, sId.length - 1 );
sId = 'embedded-bitmap(' + sBitmapChecksum + ')';
aBitmapElemSet[i] = theDocument.getElementById( sId );
if( aBitmapElemSet[i] )
{
aBitmapCloneSet[i] = aBitmapElemSet[i].cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
}


this.sParagraphId = sId = aParagraphElement.getAttribute( 'id' );
aParagraphElement.removeAttribute( 'id' );
aAnimatableElement.setAttribute( 'id', sId +'.a' );
if( aBulletCharClone )
aBulletCharClone.removeAttribute( 'id' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
aBitmapCloneSet[i].removeAttribute( 'id' );
}

var sVisibilityAttr = aElement.getAttribute( 'visibility' );
if( nScaleFactorY == this.nScaleFactorY ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( this.nScaleFactorX, nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorY = nScaleFactorY;
};

AnimatedElement.prototype.setSize= function( aNewSize )
{
var nNewWidth = aNewSize[0];
var nNewHeight = aNewSize[1];
ANIMDBG.print( 'AnimatedElement.setSize:  = [' + nNewWidth + ',' + nNewHeight + ']');
if( nNewWidth < 0 )
{
log('AnimatedElement(' + this.getId() + ').setSize: negative width!');
nNewWidth = 0;
}
if( nNewHeight < 0 )
{
log('AnimatedElement(' + this.getId() + ').setSize: negative height!');
nNewHeight = 0;
}

var nBaseWidth = this.getBaseBBox().width;
var nScaleFactorX = nNewWidth / nBaseWidth;
if( nScaleFactorX < 1e-5 ) nScaleFactorX = 1e-5;

var nBaseHeight = this.getBaseBBox().height;
var nScaleFactorY = nNewHeight / nBaseHeight;
if( nScaleFactorY < 1e-5 ) nScaleFactorY = 1e-5;

if( nScaleFactorX == this.nScaleFactorX && nScaleFactorY == this.nScaleFactorY ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( nScaleFactorX, nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorX = nScaleFactorX;
this.nScaleFactorY = nScaleFactorY;
};

AnimatedElement.prototype.getOpacity = function()
{
return this.aActiveElement.getAttribute( 'opacity' );
};

AnimatedElement.prototype.setOpacity = function( nValue )
{
this.aActiveElement.setAttribute( 'opacity', nValue );
};

AnimatedElement.prototype.getRotationAngle = function()
{
return this.nRotationAngle;
};

AnimatedElement.prototype.setRotationAngle = function( nNewRotAngle )
{
this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(nNewRotAngle)
.scaleNonUniform( this.nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nRotationAngle = nNewRotAngle;
};

AnimatedElement.prototype.getVisibility = function()
{

var sVisibilityValue = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityValue || ( sVisibilityValue === 'inherit' ) )
return 'visible'; // TODO: look for parent visibility!
else
return sVisibilityValue;
};

AnimatedElement.prototype.setVisibility = function( sValue )
{
if( sValue == 'visible' )
sValue = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sValue );
};

AnimatedElement.prototype.getStrokeStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setStrokeStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setStrokeStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setFillStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFillStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
break;
}

return colorParser( sFillColorValue );
};

AnimatedElement.prototype.setFillColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'fill', sValue );
}
}
};

AnimatedElement.prototype.getStrokeColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sStrokeColorValue = '';
nStrokeWidth = nSW;
}
}

if( nStrokeWidth == 0 )
{
sStrokeWidth = ROOT_NODE.getAttribute( 'stroke-width' );
nStrokeWidth = parseFloat( sStrokeWidth );
}
if( nStrokeWidth != 0 )
{
nStrokeWidth *= 1.1;
var nHalfStrokeWidth = nStrokeWidth / 2;
var nDoubleStrokeWidth = nStrokeWidth * 2;

var aEBBox = document.documentElement.createSVGRect();
aEBBox.x = aBBox.x - nHalfStrokeWidth;
aEBBox.y = aBBox.y - nHalfStrokeWidth;
aEBBox.width = aBBox.width + nDoubleStrokeWidth;
aEBBox.height = aBBox.height + nDoubleStrokeWidth;
aBBox = aEBBox;
}
return aBBox;
};

AnimatedElement.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var aTranslation = SVGIdentityMatrix.translate( this.aClippingBBox.x,
this.aClippingBBox.y);
aClipPathContent.matrixTransform( aTranslation );
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


AnimatedElement.prototype.getX = function()
{
return this.nCenterX;
};

AnimatedElement.prototype.getY = function()
{
return this.nCenterY;
};

AnimatedElement.prototype.getPos = function()
{
return [this.getX(), this.getY()];
};

AnimatedElement.prototype.getWidth = function()
{
return this.nScaleFactorX * this.getBaseBBox().width;
};

AnimatedElement.prototype.getHeight = function()
{
return this.nScaleFactorY * this.getBaseBBox().height;
};

AnimatedElement.prototype.getSize = function()
{
return [this.getWidth(), this.getHeight()];
};

AnimatedElement.prototype.updateTransformAttribute = function()
{
this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
};

AnimatedElement.prototype.setX = function( nNewCenterX )
{
if( nNewCenterX === this.nCenterX ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( nNewCenterX - this.nCenterX, 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterX = nNewCenterX;
};

AnimatedElement.prototype.setY = function( nNewCenterY )
{
if( nNewCenterY === this.nCenterY ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( 0, nNewCenterY - this.nCenterY );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterY = nNewCenterY;
};

AnimatedElement.prototype.setPos = function( aNewPos )
{
var nNewCenterX = aNewPos[0];
var nNewCenterY = aNewPos[1];

if( nNewCenterX === this.nCenterX && nNewCenterY === this.nCenterY ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( nNewCenterX - this.nCenterX, nNewCenterY - this.nCenterY );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterX = nNewCenterX;
this.nCenterY = nNewCenterY;
};

AnimatedElement.prototype.setWidth = function( nNewWidth )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewWidth = ' + nNewWidth );
if( nNewWidth < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative width!');
nNewWidth = 0;
}

var nBaseWidth = this.getBaseBBox().width;
var nScaleFactorX = nNewWidth / nBaseWidth;

if( nScaleFactorX < 1e-5 ) nScaleFactorX = 1e-5;
if( nScaleFactorX == this.nScaleFactorX ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorX = nScaleFactorX;
};

AnimatedElement.prototype.setHeight = function( nNewHeight )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewHeight = ' + nNewHeight );
if( nNewHeight < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative height!');
nNewHeight = 0;
}

var nBaseHeight = this.getBaseBBox().height;
var nScaleFactorY = nNewHeight / nBaseHeight;

if( nScaleFactorY < 1e-5 ) nScaleFactorY = 1e-5;
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedElement.prototype.getId = function()
{
return this.aActiveElement.getAttribute( 'id' );
};

AnimatedElement.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimatedElement.prototype.setAdditiveMode = function( eAdditiveMode )
{
this.eAdditiveMode = eAdditiveMode;
};

AnimatedElement.prototype.setToElement = function( aElement )
{
if( !aElement )
{
log( 'AnimatedElement(' + this.getId() + ').setToElement: element is not valid' );
return false;
}

var aClone = aElement.cloneNode( true );
this.aPreviousElement = this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

return true;
};

AnimatedElement.prototype.notifySlideStart = function( aSlideShowContext )
{
if( !aSlideShowContext )
{
log( 'AnimatedElement.notifySlideStart: slideshow context is not valid' );
}
this.aSlideShowContext = aSlideShowContext;

var aClone = this.aBaseElement.cloneNode( true );
this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

this.initElement();
this.DBG( '.notifySlideStart invoked' );
};

AnimatedElement.prototype.notifySlideEnd = function()
{
};

AnimatedElement.prototype.notifyAnimationStart = function()
{
};

AnimatedElement.prototype.notifyAnimationEnd = function()
{
};

AnimatedElement.prototype.notifyNextEffectStart = function( /*nEffectIndex*/ )
{
};

AnimatedElement.prototype.saveState = function( nAnimationNodeId )
{
ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').saveState(' + nAnimationNodeId +')' );
if( !this.aStateSet[ nAnimationNodeId ] )
{
this.aStateSet[ nAnimationNodeId ] = {};
}
var aState = this.aStateSet[ nAnimationNodeId ];
aState.aElement = this.aActiveElement.cloneNode( true );
aState.nCenterX = this.nCenterX;
aState.nCenterY = this.nCenterY;
aState.nScaleFactorX = this.nScaleFactorX;
aState.nScaleFactorY = this.nScaleFactorY;
aState.nRotationAngle = this.nRotationAngle;

};

AnimatedElement.prototype.restoreState = function( nAnimationNodeId )
{
if( !this.aStateSet[ nAnimationNodeId ] )
{
log( 'AnimatedElement(' + this.getId() + ').restoreState: state '
+nAnimationNodeId  + ' is not valid' );
return false;
}

ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').restoreState(' + nAnimationNodeId +')' );
var aState = this.aStateSet[ nAnimationNodeId ];
var bRet = this.setToElement( aState.aElement );
if( bRet )
{
this.nCenterX = aState.nCenterX;
this.nCenterY = aState.nCenterY;
this.nScaleFactorX = aState.nScaleFactorX;
this.nScaleFactorY = aState.nScaleFactorY;
this.nRotationAngle = aState.nRotationAngle;
}
return bRet;
};

AnimatedElement.prototype.getBaseBBox = function()
{
return this.aBaseBBox;
};

AnimatedElement.prototype.getBaseCenterX = function()
{
return this.nBaseCenterX;
};

AnimatedElement.prototype.getBaseCenterY = function()
{
return this.nBaseCenterY;
};

AnimatedElement.prototype.getBBox = function()
{
return this.aActiveElement.parentNode.getBBox();
};

AnimatedElement.prototype.getBBoxWithStroke = function()
{
var aBBox = this.aActiveElement.parentNode.getBBox();

var aChildrenSet = this.aActiveElement.childNodes;

var sStroke, sStrokeWidth;
var nStrokeWidth = 0;
var i;
for( i = 0; i < aChildrenSet.length; ++i )
{
if( ! aChildrenSet[i].getAttribute  )
continue;

sStroke = aChildrenSet[i].getAttribute( 'stroke' );
if( sStroke && sStroke != 'none' )
{
sStrokeWidth = aChildrenSet[i].getAttribute( 'stroke-width' );
var nSW = parseFloat( sStrokeWidth );
if( nSW > nStrokeWidth )

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aSlideElement.parentNode.setAttribute( 'clip-path', sRef );
};

AnimatedSlide.prototype.cleanClipPath = function()
{
this.aSlideElement.parentNode.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedSlide.prototype.insertBefore = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.insertBefore( aElement, this.aSlideElement );
}
};

AnimatedSlide.prototype.appendElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.appendChild( aElement );
}
};

AnimatedSlide.prototype.removeElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.removeChild( aElement );
}
};

AnimatedSlide.prototype.getWidth = function()
{
return WIDTH;
};

AnimatedSlide.prototype.getHeight = function()
{
return HEIGHT;
};

AnimatedSlide.prototype.setOpacity = function( nValue )
{
this.aSlideElement.setAttribute( 'opacity', nValue );
};

AnimatedSlide.prototype.translate = function( nDx, nDy )
{
var sTransformAttr = 'translate(' + nDx + ',' + nDy + ')';
this.aSlideElement.setAttribute( 'transform', sTransformAttr );
};

AnimatedSlide.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


function AnimatedElement( aElement )
{
if( !aElement )
{
log( 'AnimatedElement constructor: element is not valid' );
}

this.aSlideShowContext = null;

this.aBaseElement = aElement.cloneNode( true );
this.aActiveElement = aElement;
this.sElementId = this.aActiveElement.getAttribute( 'id' );

this.aBaseBBox = this.aActiveElement.getBBox();
this.nBaseCenterX = this.aBaseBBox.x + this.aBaseBBox.width / 2;
this.nBaseCenterY = this.aBaseBBox.y + this.aBaseBBox.height / 2;


this.aClipPathElement = null;
this.aClipPathContent = null;

this.aPreviousElement = null;
this.aStateSet = {};

this.eAdditiveMode = ADDITIVE_MODE_REPLACE;
this.bIsUpdated = true;

this.aTMatrix = document.documentElement.createSVGMatrix();
this.aCTM = document.documentElement.createSVGMatrix();
this.aICTM = document.documentElement.createSVGMatrix();

this.initElement();
}

AnimatedElement.prototype.initElement = function()
{
this.nCenterX = this.nBaseCenterX;
this.nCenterY = this.nBaseCenterY;
this.nScaleFactorX = 1.0;
this.nScaleFactorY = 1.0;
this.nRotationAngle = 0.0;

this.aActiveElement.setAttribute( 'transform', makeMatrixString( 1, 0, 0, 1, 0, 0 ) );
};

AnimatedElement.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sElementId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
this.aClippingBBox = this.getBBoxWithStroke();
var nWidth = this.aClippingBBox.width;
var nHeight = this.aClippingBBox.height;
var sPathData = 'M ' + this.aClippingBBox.x + ' ' + this.aClippingBBox.y +
' h ' + nWidth + ' v ' + nHeight + ' h -' + nWidth + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aActiveElement.setAttribute( 'clip-path', sRef );
};

AnimatedElement.prototype.cleanClipPath = function()
{
this.aActiveElement.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
var len   = Math.floor( (e - edge/2) * edge1 * 4);
var w     = Math.PI / 2;

while(len > 0) {
var alen = Math.min(len, edge1);
len -= alen;
poly = createUnitSquarePath();
aTransform = SVGIdentityMatrix.scale(
pruneScaleValue( alen / this.sqrtElements ),
pruneScaleValue( 1.0 / this.sqrtElements ));
aTransform = aTransform.translate(
- pruneScaleValue( (edge / 2) / this.sqrtElements ),
pruneScaleValue( (edge / 2) / this.sqrtElements ));
aTransform = aTransform.rotate( w );
w -= Math.PI / 2;
aTransform = aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
}

return res;
}

SpiralWipePath.prototype.perform = function( nT ) {
var res         = createUnitSquarePath();
var innerSpiral = this.calcNegSpiral( 1.0 - nT );
innerSpiral.changeOrientation();
res.appendPath(innerSpiral);

return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function BoxSnakesWipePath(nElements, bFourBox) {
SpiralWipePath.call(this, nElements);
this.bFourBox = bFourBox;
}

BoxSnakesWipePath.prototype = Object.create(SpiralWipePath);

BoxSnakesWipePath.prototype.perform = function( nT ) {
var res = createUnitSquarePath(), aTransform;
var innerSpiral = SpiralWipePath.prototype.calcNegSpiral.call(this, 1.0 - nT);
innerSpiral.changeOrientation();

if(this.bFourBox) {
aTransform = SVGIdentityMatrix.scale(0.5, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
innerSpiral = flipOnYAxis(innerSpiral);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
else {
aTransform = SVGIdentityMatrix.scale(1.0, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function VeeWipePath() { }

VeeWipePath.prototype.perform = function( nT ) {
const d = pruneScaleValue(2.0 * nT);
var polyPath = 'M ' + 0.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 0.5 + ' ' + d + ' ';
polyPath += 'L ' + 1.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';

var aPolyPolyPath = document.createElementNS( NSS['svg'], 'path');
aPolyPolyPath.setAttribute('d', polyPath);
return aPolyPolyPath;
}


function AnimatedSlide( aMetaSlide )
{
if( !aMetaSlide )
{
log( 'AnimatedSlide constructor: meta slide is not valid' );
}

this.aMetaSlide = aMetaSlide;
this.aSlideElement = this.aMetaSlide.slideElement;
this.sSlideId = this.aMetaSlide.slideId;

this.aUsedAttributeSet = [];

this.aClipPathElement = null;
this.aClipPathContent = null;
this.bIsClipped = false;
}

AnimatedSlide.prototype.show = function()
{
this.aMetaSlide.show();
};

AnimatedSlide.prototype.hide = function()
{
this.aMetaSlide.hide();
};

AnimatedSlide.prototype.notifyUsedAttribute = function( sName )
{
if( sName == 'clip-path' )
{
this.initClipPath();
this.bIsClipped = true;
}
else
{
this.aUsedAttributeSet.push( sName );
}
};

AnimatedSlide.prototype.reset = function()
{
if( this.bIsClipped )
{
this.cleanClipPath();
this.bIsClipped = false;
}

var i;
for( i = 0; i < this.aUsedAttributeSet.length; ++i )
{
var sAttrName = this.aUsedAttributeSet[i];
this.aSlideElement.removeAttribute( sAttrName );
}
this.aUsedAttributeSet = [];
};

AnimatedSlide.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sSlideId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
var sPathData = 'M 0 0 h ' + WIDTH + ' v ' + HEIGHT + ' h -' + WIDTH + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.rotate((Math.PI)/2 + (Math.PI)/4);
aTransform.translate(edge + this.elementEdge, 0.0);
}
else {
aTransform = SVGIdentityMatrix.translate(-a, 0.0);
aTransform.rotate(-(Math.PI/4));
aTransform.translate(0.0, edge);
}

poly.matrixTransform(aTransform);
res.appendPath(poly);
}
else { //out
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(Math.floor(sqrtArea2)/this.sqrtElements);

let aPath, aPoint = document.documentElement.createSVGPoint();
if(edge != 0) {
aPoint.y = 1.0;
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 1.0;
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = ((1.0 - nT) * Math.SQRT2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.translate(0.0, -height);
aTransform.rotate(Math.PI/2 + Math.PI/4);
aTransform.translate(1.0, edge);
}
else {
aTransform = SVGIdentityMatrix.rotate(-(Math.PI/4));
aTransform = aTransform.translate(edge, 1.0);
}
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
return res;
}

SnakeWipePath.prototype.perform = function(nT) {
var res = createEmptyPath();
if(this.diagonal) {
if(nT >= 0.5) {
res.appendPath(this.calcHalfDiagonalSnake(1.0, true));
res.appendPath(this.calcHalfDiagonalSnake(2.0*(nT-0.5), false));
}
else
res.appendPath(this.calcHalfDiagonalSnake(2.0*nT, true));
}
else
res = this.calcSnake(nT);

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function ParallelSnakesWipePath(nElements, bDiagonal, bFlipOnYAxis, bOpposite) {
SnakeWipePath.call(this, nElements, bDiagonal, bFlipOnYAxis);
this.bOpposite = bOpposite;
}

ParallelSnakesWipePath.prototype = Object.create(SnakeWipePath);

ParallelSnakesWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath(), half, aTransform;
if(this.diagonal) {
assert(this.bOpposite);
half = SnakeWipePath.prototype.calcHalfDiagonalSnake.call(this, nT, false);
aTransform = SVGIdentityMatrix.scale(1, -1);
aTransform.translate(-0.5, 0.5);
aTransform.rotate(Math.PI/2);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
half.changeOrientation();
res.appendPath(half);

aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(half);
}
else {
half = SnakeWipePath.prototype.calcSnake.call(this, nT / 2.0 );
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI/2);
aTransform = aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(flipOnYAxis(half));
res.appendPath(this.bOpposite ? flipOnXAxis(half) : half);
}

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function SpiralWipePath(nElements, bFlipOnYAxis) {
this.nElements    = nElements;
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.bFlipOnYAxis = bFlipOnYAxis;
}

SpiralWipePath.prototype.calcNegSpiral = function( nT ) {
var area  = nT * this.nElements;
var e     = (Math.sqrt(area) / 2.0);
var edge  = Math.floor(e) * 2;

var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
var edge_ = pruneScaleValue(edge / this.sqrtElements);

aTransform = aTransform.scale(edge_, edge_);
aTransform = aTransform.translate(0.5, 0.5);
var poly = createUnitSquarePath();
poly.matrixTransform(aTransform);
var res = poly.cloneNode(true);

if(1.0 - nT != 0) {
var edge1 = edge + 1;
this.nElements = nElements;
this.aBasePath = createUnitSquarePath();
this.aPositionArray = new Array( nElements );
this.aClipPath = createEmptyPath();
this.nAlreadyAppendedElements = 0;

var fEdgeLength, nPos, aTransform;

if( bRandomBars ) // random bar wipe
{
fEdgeLength = 1.0 / nElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = { x: 0.0, y: pruneScaleValue( nPos * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scaleNonUniform( 1.0, pruneScaleValue( fEdgeLength ) );
}
else // dissolve wipe
{
var nSqrtElements = Math.round( Math.sqrt( nElements ) );
fEdgeLength = 1.0 / nSqrtElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = {
x: pruneScaleValue( ( nPos % nSqrtElements ) * fEdgeLength ),
y: pruneScaleValue( ( nPos / nSqrtElements ) * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scale( pruneScaleValue( fEdgeLength ) );
}
this.aBasePath.matrixTransform( aTransform );

var nPos1, nPos2;
var tmp;
for( nPos1 = nElements - 1; nPos1 > 0; --nPos1 )
{
nPos2 = getRandomInt( nPos1 + 1 );
tmp = this.aPositionArray[nPos1];
this.aPositionArray[nPos1] = this.aPositionArray[nPos2];
this.aPositionArray[nPos2] = tmp;
}
}

RandomWipePath.prototype.perform = function( nT )
{
var aPolyPath = createEmptyPath();
var aPoint;
var aPath;
var aTransform;
var nElements = Math.round( nT * this.nElements );
if( nElements === 0 )
{
return aPolyPath;
}
if( this.nAlreadyAppendedElements >= nElements )
{
this.nAlreadyAppendedElements = 0;
this.aClipPath = createEmptyPath();
}
var nPos;
for( nPos = this.nAlreadyAppendedElements; nPos < nElements; ++nPos )
{
aPoint = this.aPositionArray[nPos];
aPath = this.aBasePath.cloneNode( true );
aTransform = SVGIdentityMatrix.translate( aPoint.x, aPoint.y );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}

this.nAlreadyAppendedElements = nElements;
this.aClipPath.appendPath( aPolyPath );

return this.aClipPath.cloneNode( true );
};

function SnakeWipePath(nElements, bDiagonal, bflipOnYAxis)
{
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.elementEdge  = (1.0 / this.sqrtElements);
this.diagonal     = bDiagonal;
this.flipOnYAxis  = bflipOnYAxis;
this.aBasePath    = createUnitSquarePath();
}

SnakeWipePath.prototype.calcSnake = function(t)
{
var aPolyPath = createEmptyPath();
const area   = (t * this.sqrtElements * this.sqrtElements);
const line_  = Math.floor(area) / this.sqrtElements;
const line   = pruneScaleValue(line_ / this.sqrtElements);
const col    = pruneScaleValue((area - (line_ * this.sqrtElements)) / this.sqrtElements);

if(line != 0) {
let aPath = 'M '+ 0.0 + ' ' + 0.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + 0.0 + ' ';
aPath += 'L 0 0 ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}
if(col != 0) {
var offset = 0.0;
if((line_ & 1) == 1) {
offset = (1.0 - col);
}
let aPath = 'M ' + offset + ' ' + line + ' ';
aPath += 'L '+ offset + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + line + ' ';
aPath += 'L ' + offset + ' ' + line + ' ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}

return aPolyPath;
}

SnakeWipePath.prototype.calcHalfDiagonalSnake = function(nT, bIn) {
var res = createEmptyPath();

if(bIn) {
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(sqrtArea2 / this.sqrtElements);

var aPath, aPoint = document.documentElement.createSVGPoint();
if(edge) {
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = (nT * Math.SQRT1_2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
WaterfallWipePath.prototype.perform = function( nT ) {
var poly = this.aBasePath.cloneNode(true);
var aTransform = SVGIdentityMatrix.translate(0.0, pruneScaleValue(2.0 * nT));
poly.matrixTransform(aTransform);
var aHead = 'M ' + 0.0 + ' ' + -1.0 + ' ';
var aHeadPath= document.createElementNS( NSS['svg'], 'path');
aHeadPath.setAttribute('d', aHead);

var aTail = 'M ' + 1.0 + ' ' + -1.0 + ' ';
var aTailPath = document.createElementNS( NSS['svg'], 'path');
aTailPath.setAttribute('d', aTail);

poly.prependPath(aHeadPath);
poly.appendPath(aTailPath);

return this.bFlipOnYAxis ? flipOnYAxis(poly) : poly;
}

function DoubleDiamondWipePath() { }

DoubleDiamondWipePath.prototype.perform = function( nT ) {
var a = pruneScaleValue(0.25 + (nT * 0.75));
var aPath = 'M ' + (0.5 + a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - a) + ' ';
aPath += 'L ' + (0.5 - a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + a) + ' ';
aPath += 'L ' + (0.5 + a) + ' ' + 0.5 + ' ';
var poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
var res = poly.cloneNode(true);

var b = pruneScaleValue( (1.0 - nT) * 0.25);
aPath = 'M ' + (0.5 + b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + b) + ' ';
aPath += 'L ' + (0.5 - b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - b) + ' ';
aPath += 'L ' + (0.5 + b) + ' ' + 0.5 + ' ';
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);

return res;
}

function IrisWipePath(unitRect) {
this.unitRect = unitRect;
this.aBasePath = createUnitSquarePath();
}


IrisWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.multiply(SVGIdentityMatrix.scaleNonUniform(d, d).translate(0.5, 0.5));
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function ZigZagWipePath(nZigs) {
this.zigEdge = 1.0/nZigs;
const d = this.zigEdge;
const d2 = (d / 2.0);
this.aBasePath = 'M ' + (-1.0 - d) + ' ' + -d + ' ';
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + (1.0 + d) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (1.0 + d) + ' ';

for(var pos = (nZigs + 2); pos--; ) {
this.aBasePath += 'L ' + 0.0 + ' ' + ((pos - 1) * d + d2) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (pos - 1) * d + ' ';
}
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + -d + ' ';
}

ZigZagWipePath.prototype.perform = function( nT ) {
var res = document.createElementNS( NSS['svg'], 'path');
res.setAttribute('d', this.aBasePath);
res.matrixTransform(SVGIdentityMatrix.translate((1.0 + this.zigEdge) * nT, 0.0));
return res;
}

function BarnZigZagWipePath( nZigs ) { ZigZagWipePath.call(this, nZigs); }

BarnZigZagWipePath.prototype = Object.create(ZigZagWipePath);

BarnZigZagWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath();
var poly = document.createElementNS( NSS['svg'], 'path');
var aTransform = SVGIdentityMatrix.translate(
((1.0 + this.zigEdge) * (1.0 - nT)) / 2.0, 0.0);
poly.setAttribute('d', this.aBasePath);
poly.changeOrientation();
poly.matrixTransform(aTransform);
res.appendPath(poly);

aTransform = SVGIdentityMatrix.scale(-1.0, 1.0);
aTransform.translate(1.0, this.zigEdge / 2.0);
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', this.aBasePath);
poly.matrixTransform(aTransform);
res.appendPath(poly);

return res;
}

function CheckerBoardWipePath( unitsPerEdge )
{
this.unitsPerEdge = unitsPerEdge;
if( this.unitsPerEdge === undefined || this.unitsPerEdge < 1 )
this.unitsPerEdge = 10;
this.aBasePath = createUnitSquarePath();
}

CheckerBoardWipePath.prototype.perform = function( nT )
{
var d = pruneScaleValue(1.0 / this.unitsPerEdge);
var aMatrix = SVGIdentityMatrix.scaleNonUniform(pruneScaleValue( d*2.0*nT ),
pruneScaleValue( d ) );

var aPolyPath = null;
var i, j;
var aTransform;
var aPath;
for ( i = this.unitsPerEdge; i--; )
{
aTransform = SVGIdentityMatrix;

if ((i % 2) == 1) // odd line
aTransform = aTransform.translate( -d, 0.0 );

aTransform = aTransform.multiply( aMatrix );

for ( j = (this.unitsPerEdge / 2) + 1; j--;)
{
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
if (aPolyPath == null) aPolyPath = aPath;
else aPolyPath.appendPath( aPath );
aTransform = SVGIdentityMatrix.translate( d*2.0, 0.0 ).multiply( aTransform );
}

aMatrix = SVGIdentityMatrix.translate( 0.0, d ).multiply( aMatrix ); // next line
}

return aPolyPath;
};


function RandomWipePath( nElements, bRandomBars )
{
var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( nT ).translate( -0.5, -0.5 );
var aEllipse = this.aBasePath.cloneNode( true );
aEllipse.matrixTransform( aTransform );

return aEllipse;
};

function FanWipePath(bIsCenter, bIsSingle, bIsFanIn) {
this.bCenter = bIsCenter;
this.bSingle = bIsSingle;
this.bFanIn  = bIsFanIn;
this.aBasePath = createUnitSquarePath();
}

FanWipePath.prototype.perform = function( nT ) {
var res = this.aBasePath.cloneNode(true);
var poly = PinWheelWipePath.calcCenteredClock(
nT / ((this.bCenter && this.bSingle) ? 2.0 : 4.0), 1.0);
res.appendPath(poly);
var aTransform = SVGIdentityMatrix.flipY();
aTransform = aTransform.scaleNonUniform(-1.0, 1.0);
poly.matrixTransform(aTransform);
res.appendPath(poly);

if(this.bCenter) {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
res.matrixTransform(aTransform);

if(!this.bSingle)
res.appendPath(flipOnXAxis(res));
}
else {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 1.0).translate(0.5, 1.0);
res.matrixTransform(aTransform);
}
return res;
}

function ClockWipePath() { }

ClockWipePath.prototype.perform = function( nT ) {
const aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
var aPolyPath = PinWheelWipePath.calcCenteredClock(nT, 1.0);
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
}

function PinWheelWipePath( nBlades )
{
this.nBlades = nBlades;
if( !this.nBlades || this.nBlades < 1 )
this.nBlades = 1;
}

PinWheelWipePath.calcCenteredClock = function( nT, nE )
{
var nMAX_EDGE = 2;

var aTransform = SVGIdentityMatrix.rotate( nT * 360 );

var aPoint = document.documentElement.createSVGPoint();
aPoint.y = -nMAX_EDGE;
aPoint = aPoint.matrixTransform( aTransform );

var sPathData = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
if( nT >= 0.875 )
sPathData += 'L ' + '-' + nE + ' -' + nE + ' ';
if( nT >= 0.625 )
sPathData += 'L ' + '-' + nE + ' ' + nE + ' ';
if( nT >= 0.375 )
sPathData += 'L ' + nE + ' ' + nE + ' ';
if( nT >= 0.125 )
sPathData += 'L ' + nE + ' -' + nE + ' ';

sPathData += 'L 0 -' + nE + ' ';
sPathData += 'L 0 0 ';
sPathData += 'L '  + aPoint.x + ' ' + aPoint.y;

var aPath = document.createElementNS( NSS['svg'], 'path' );
aPath.setAttribute( 'd', sPathData );
return aPath;
};

PinWheelWipePath.prototype.perform = function( nT )
{
var aBasePath = PinWheelWipePath.calcCenteredClock( nT / this.nBlades,
2.0 /* max edge when rotating */  );

var aPolyPath = aBasePath.cloneNode( true );
var aPath;
var aRotation;
var i;
for( i = this.nBlades - 1; i > 0; --i )
{
aRotation = SVGIdentityMatrix.rotate( (i * 360) / this.nBlades );
aPath = aBasePath.cloneNode( true );
aPath.matrixTransform( aRotation );
aPolyPath.appendPath( aPath );
}

var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( 0.5 );
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
};

function BarnDoorWipePath(doubled) {
this.aBasePath = createUnitSquarePath();
this.doubled   = doubled;
}

BarnDoorWipePath.prototype.perform = function( nT ) {
if(this.doubled)
nT /= 2.0;
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.scaleNonUniform(pruneScaleValue(nT), 1.0).translate(0.5, 0.5);
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
var res = aPath;

if(this.doubled) {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI / 2).translate(0.5, 0.5);
aPath.matrixTransform(aTransform);
res.appendPath(aPath);
}
return res;
}

function WaterfallWipePath(nElements, bFlipOnYAxis) {
this.bFlipOnYAxis = bFlipOnYAxis;

var sqrtElements = Math.floor(Math.sqrt(nElements));
var elementEdge = 1.0/sqrtElements;

var aPath = 'M '+ 0.0 + ' ' + -1.0 + ' ';
for(var pos = sqrtElements; pos--; ) {
var xPos = sqrtElements - pos - 1;
var yPos = pruneScaleValue( ((pos+1) * elementEdge) - 1.0);

aPath += 'L ' + pruneScaleValue(xPos * elementEdge) + ' ' + yPos + ' ';
aPath += 'L ' + pruneScaleValue((xPos+1)*elementEdge) + ' ' + yPos + ' ';
}
aPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';
this.aBasePath = document.createElementNS( NSS['svg'], 'path');
this.aBasePath.setAttribute('d', aPath);
}

{
var i;
var aTransform;
var aPath;
for( i = this.nBars - 1; i > 0; --i )
{
aTransform = SVGIdentityMatrix.translate( i / this.nBars, 0.0 );
aTransform = aTransform.multiply( aMatrix );
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}
}
return aPolyPath;
};


function BoxWipePath(bIsTopCentered) {
this.bIsTopCentered = bIsTopCentered;
this.aBasePath = createUnitSquarePath();
}

BoxWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix;
if(this.bIsTopCentered) {
aTransform = aTransform.translate(-0.5, 0.0).scale(d, d).translate(0.5, 0.0);
}
else {
aTransform = aTransform.scale(d, d);
}
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function SweepWipePath(bCenter, bSingle, bOppositeVertical, bFlipOnYAxis) {
this.bCenter = bCenter;
this.bSingle = bSingle;
this.bOppositeVertical = bOppositeVertical;
this.bFlipOnYAxis = bFlipOnYAxis;
this.aBasePath = createUnitSquarePath();
}

SweepWipePath.prototype.perform = function( nT ) {
nT /= 2.0;
if(!this.bCenter)
nT /= 2.0;
if(!this.bSingle && !this.bOppositeVertical)
nT /= 2.0;

var poly = PinWheelWipePath.calcCenteredClock( nT + 0.25, 1.0 );
var aTransform;

if(this.bCenter) {
aTransform = SVGIdentityMatrix.translate(0.5, 0.0);
poly.matrixTransform(aTransform);
}
var res = poly;

if(!this.bSingle) {
if(this.bOppositeVertical) {
aTransform = SVGIdentityMatrix.scale(1.0, -1.0);
aTransform.translate(0.0, 1.0);
poly.matrixTransform(aTransform);
poly.changeOrientation();
}
else {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
}
res.appendPath(poly);
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function FourBoxWipePath( bCornersOut )
{
this.bCornersOut = bCornersOut;
this.aBasePath = createUnitSquarePath();
}

FourBoxWipePath.prototype.perform = function( nT )
{
var aMatrix;
var d = pruneScaleValue( nT / 2.0 );

if( this.bCornersOut )
{
aMatrix = SVGIdentityMatrix.translate( -0.25, -0.25 ).scale( d ).translate( -0.5, -0.5 );
}
else
{
aMatrix = SVGIdentityMatrix.translate( -0.5, -0.5 ).scale( d );
}


var aTransform = aMatrix;
var aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
var aPolyPath = aSquare;
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipX();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );

aMatrix = SVGIdentityMatrix.translate( 0.5, 0.5 );
aMatrix = aMatrix.scale( 1.1 );
aPolyPath.matrixTransform( aMatrix );

return aPolyPath;
};


function EllipseWipePath( eSubtype )
{
this.eSubtype = eSubtype;

var sPathData = 'M 0.5 -0.207107 ' +
'C 0.687536 -0.207107 0.867392 -0.132608 1 0 ' +
'C 1.13261 0.132608 1.20711 0.312464 1.20711 0.5 ' +
'C 1.20711 0.687536 1.13261 0.867392 1 1 ' +
'C 0.867392 1.13261 0.687536 1.20711 0.5 1.20711 ' +
'C 0.312464 1.20711 0.132608 1.13261 0 1 ' +
'C -0.132608 0.867392 -0.207107 0.687536 -0.207107 0.5 ' +
'C -0.207107 0.312464 -0.132608 0.132608 0 0 ' +
'C 0.132608 -0.132608 0.312464 -0.207107 0.5 -0.207107';

this.aBasePath = document.createElementNS( NSS['svg'], 'path' );
this.aBasePath.setAttribute( 'd', sPathData );
}

EllipseWipePath.prototype.perform = function( nT )
{

case THREEBLADE_TRANS_SUBTYPE:
nBlades = 3;
break;
case FOURBLADE_TRANS_SUBTYPE:
nBlades = 4;
break;
case EIGHTBLADE_TRANS_SUBTYPE:
nBlades = 8;
break;
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
return new PinWheelWipePath( nBlades );
case CLOCKWIPE_TRANSITION:
return new ClockWipePath();
case RANDOMBARWIPE_TRANSITION:
return new RandomWipePath( 128, true /* bars */ );
case CHECKERBOARDWIPE_TRANSITION:
return new CheckerBoardWipePath( 10 );
case ZIGZAGWIPE_TRANSITION:
return new ZigZagWipePath( 5 );
case BARNZIGZAGWIPE_TRANSITION:
return new BarnZigZagWipePath( 5 );
case IRISWIPE_TRANSITION:
switch(nSubtype)
{
case RECTANGLE_TRANS_SUBTYPE:
return new IrisWipePath(0);
case DIAMOND_TRANS_SUBTYPE:
return new IrisWipePath(1);
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
case BARNDOORWIPE_TRANSITION:
return new BarnDoorWipePath(false);
case SINGLESWEEPWIPE_TRANSITION:
return new SweepWipePath(
nSubtype == CLOCKWISETOP_TRANS_SUBTYPE ||
nSubtype == CLOCKWISERIGHT_TRANS_SUBTYPE ||
nSubtype == CLOCKWISEBOTTOM_TRANS_SUBTYPE ||
nSubtype == CLOCKWISELEFT_TRANS_SUBTYPE,
true,
false,
nSubtype == COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE ||
nSubtype == COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE );
case WATERFALLWIPE_TRANSITION:
return new WaterfallWipePath(128, // flipOnYAxis
nSubtype == VERTICALRIGHT_TRANS_SUBTYPE ||
nSubtype == HORIZONTALLEFT_TRANS_SUBTYPE);
case MISCDIAGONALWIPE_TRANSITION:
switch(nSubtype) {
case DOUBLEBARNDOOR_TRANS_SUBTYPE:
return new BarnDoorWipePath(true /* Doubled */);
case DOUBLEDIAMOND_TRANS_SUBTYPE:
return new DoubleDiamondWipePath();
default:
log( 'createClipPolyPolygon: unhandled subtype: ' + nSubtype );
return null;
}
case DISSOLVE_TRANSITION:
return new RandomWipePath( 16 * 16, false /* dissolve */ );
case VEEWIPE_TRANSITION:
return new VeeWipePath();
case SNAKEWIPE_TRANSITION:
return new SnakeWipePath( 8 * 8, // diagonal
nSubtype == TOPLEFTDIAGONAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE   ,
nSubtype == TOPLEFTVERTICAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE
);
case PARALLELSNAKESWIPE_TRANSITION:
return new ParallelSnakesWipePath(
8 * 8, // elements
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
nSubtype == VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE    ||
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE
);

case SPIRALWIPE_TRANSITION:
return new SpiralWipePath(
8 * 8, // elements
nSubtype == TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE );

case BOXSNAKESWIPE_TRANSITION:
return new BoxSnakesWipePath(
8 * 8,
nSubtype == FOURBOXVERTICAL_TRANS_SUBTYPE ||
nSubtype == FOURBOXHORIZONTAL_TRANS_SUBTYPE );
}
}


function createUnitSquarePath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 1 0 L 1 1 L 0 1 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function createEmptyPath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function pruneScaleValue( nVal )
{
if( nVal < 0.0 )
return (nVal < -0.00001 ? nVal : -0.00001);
else
return (nVal > 0.00001 ? nVal : 0.00001);
}


function BarWipePath( nBars /* nBars > 1: blinds effect */ )
{
this.nBars = nBars;
if( this.nBars === undefined || this.nBars < 1 )
this.nBars = 1;
this.aBasePath = createUnitSquarePath();
}

BarWipePath.prototype.perform = function( nT )
{

var aMatrix = SVGIdentityMatrix.scaleNonUniform( pruneScaleValue( nT / this.nBars ), 1.0 );

var aPolyPath = this.aBasePath.cloneNode( true );
aPolyPath.matrixTransform( aMatrix );

if( this.nBars > 1 )
this.aStaticTransformation = null;
this.bForwardParameterSweep = true;
this.bSubtractPolygon = false;
this.bScaleIsotropically = aTransitionInfo.scaleIsotropically;
this.bFlip = false;

assert( this.aParametricPolyPolygon,
'ClippingFunctor: parametric polygon is not valid' );

if( aTransitionInfo.rotationAngle != 0.0 ||
aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
{
this.aStaticTransformation = SVGIdentityMatrix.translate( 0.5, 0.5 );
if( aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
this.aStaticTransformation
= this.aStaticTransformation.scaleNonUniform( aTransitionInfo.scaleX,
aTransitionInfo.scaleY );
if( aTransitionInfo.rotationAngle != 0.0 )
this.aStaticTransformation
= this.aStaticTransformation.rotate( aTransitionInfo.rotationAngle );
this.aStaticTransformation = this.aStaticTransformation.translate( -0.5, -0.5 );
}
else
{
this.aStaticTransformation = document.documentElement.createSVGMatrix();
}

if( !bIsDirectionForward )
{
var aMatrix = null;
switch( aTransitionInfo.reverseMethod )
{
default:
log( 'ClippingFunctor: unexpected reverse method.' );
break;
case REVERSEMETHOD_IGNORE:
break;
case REVERSEMETHOD_INVERT_SWEEP:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
break;
case REVERSEMETHOD_SUBTRACT_POLYGON:
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_SUBTRACT_AND_INVERT:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_ROTATE_180:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.setToRotationAroundPoint( 0.5, 0.5, 180 );
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
break;
case REVERSEMETHOD_FLIP_X:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.a = -1; aMatrix.e = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
case REVERSEMETHOD_FLIP_Y:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.d = -1; aMatrix.f = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
}
}

if( !bIsModeIn )
{
if( aTransitionInfo.outInvertsSweep )
{
this.bForwardParameterSweep = !this.bForwardParameterSweep;
}
else
{
this.bSubtractPolygon = !this.bSubtractPolygon;
}
}
}

ClippingFunctor.aBoundingPath = document.createElementNS( NSS['svg'], 'path' );
ClippingFunctor.aBoundingPath.setAttribute( 'd', 'M -1 -1 L 2 -1 L 2 2 L -1 2 L -1 -1' );

ClippingFunctor.prototype.perform = function( nT, nWidth, nHeight )
{
var aClipPoly = this.aParametricPolyPolygon.perform( this.bForwardParameterSweep ? nT : (1 - nT) );


if( this.bSubtractPolygon )
{
aClipPoly.changeOrientation();
aClipPoly.prependPath( ClippingFunctor.aBoundingPath );
}

var aMatrix;
if( this.bScaleIsotropically )
{
var nScaleFactor = Math.max( nWidth, nHeight );
aMatrix = SVGIdentityMatrix.translate( -( nScaleFactor - nWidth ) / 2.0,
-( nScaleFactor - nHeight ) / 2.0 );
aMatrix = aMatrix.scale( nScaleFactor );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}
else
{
aMatrix = SVGIdentityMatrix.scaleNonUniform( nWidth, nHeight );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}

aClipPoly.matrixTransform( aMatrix );

return aClipPoly;
};


function createClipPolyPolygon( nType, nSubtype )
{
switch( nType )
{
default:
log( 'createClipPolyPolygon: unknown transition type: ' + nType );
return null;
case BARWIPE_TRANSITION:
return new BarWipePath( 1 );
case FOURBOXWIPE_TRANSITION:
return new FourBoxWipePath( nSubtype === CORNERSOUT_TRANS_SUBTYPE );
case BOXWIPE_TRANSITION:
return new BoxWipePath( nSubtype == LEFTCENTER_TRANS_SUBTYPE ||
nSubtype == TOPCENTER_TRANS_SUBTYPE ||
nSubtype == RIGHTCENTER_TRANS_SUBTYPE ||
nSubtype == BOTTOMCENTER_TRANS_SUBTYPE );
case ELLIPSEWIPE_TRANSITION:
return new EllipseWipePath( nSubtype );
case FANWIPE_TRANSITION:
return new FanWipePath(nSubtype == CENTERTOP_TRANS_SUBTYPE ||
nSubtype == CENTERRIGHT_TRANS_SUBTYPE, true, false);
case PINWHEELWIPE_TRANSITION:
var nBlades;
switch( nSubtype )
{
case ONEBLADE_TRANS_SUBTYPE:
nBlades = 1;
break;
case DEFAULT_TRANS_SUBTYPE:
case TWOBLADEVERTICAL_TRANS_SUBTYPE:
nBlades = 2;
break;
case TWOBLADEHORIZONTAL_TRANS_SUBTYPE:
nBlades = 2;
break;
};


function FadingSlideChange( aLeavingSlide, aEnteringSlide )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.bFirstRun = true;
}
extend( FadingSlideChange, SlideChangeBase );

FadingSlideChange.prototype.start = function()
{
FadingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( nT );
};

FadingSlideChange.prototype.performOut = function( nT )
{

this.aLeavingSlide.setOpacity( 1 - nT );
};


function FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, sFadeColor )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.sFadeColor = sFadeColor;
if( !this.sFadeColor )
{
log( 'FadingOverColorSlideChange: sFadeColor not valid.' );
this.sFadeColor = '#000000';
}
this.aColorPlaneElement = this.createColorPlaneElement();
}
extend( FadingOverColorSlideChange, SlideChangeBase );

FadingOverColorSlideChange.prototype.start = function()
{
FadingOverColorSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.insertBefore( this.aColorPlaneElement );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingOverColorSlideChange.prototype.end = function()
{
FadingOverColorSlideChange.superclass.end.call( this );
this.aLeavingSlide.removeElement( this.aColorPlaneElement );
};

FadingOverColorSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( (nT > 0.55) ? 2.0*(nT-0.55) : 0.0 );
};

FadingOverColorSlideChange.prototype.performOut = function( nT )
{
this.aLeavingSlide.setOpacity( (nT > 0.45) ? 0.0 : 2.0*(0.45-nT) );
};

FadingOverColorSlideChange.prototype.createColorPlaneElement = function()
{
var aColorPlaneElement = document.createElementNS( NSS['svg'], 'rect' );
aColorPlaneElement.setAttribute( 'width', String( this.aLeavingSlide.getWidth() ) );
aColorPlaneElement.setAttribute( 'height', String( this.aLeavingSlide.getHeight() ) );
aColorPlaneElement.setAttribute( 'fill', this.sFadeColor );
return aColorPlaneElement;
};


function MovingSlideChange( aLeavingSlide, aEnteringSlide,
aLeavingDirection, aEnteringDirection )
{
MovingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.aLeavingDirection = aLeavingDirection;
this.aEnteringDirection = aEnteringDirection;
}
extend( MovingSlideChange, SlideChangeBase );

MovingSlideChange.prototype.start = function()
{
MovingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'transform' );
this.aLeavingSlide.notifyUsedAttribute( 'transform' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

MovingSlideChange.prototype.performIn = function( nT )
{
var nS = nT - 1;
var dx = nS * this.aEnteringDirection.x * this.aEnteringSlide.getWidth();
var dy = nS * this.aEnteringDirection.y * this.aEnteringSlide.getHeight();
this.aEnteringSlide.translate( dx, dy );
};

MovingSlideChange.prototype.performOut = function( nT )
{
var dx = nT * this.aLeavingDirection.x * this.aLeavingSlide.getWidth();
var dy = nT * this.aLeavingDirection.y * this.aLeavingSlide.getHeight();
this.aLeavingSlide.translate( dx, dy );
};


function ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, bIsDirectionForward )
{
ClippedSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );

var bIsModeIn = true;
this.aClippingFunctor= new ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn );
}
extend( ClippedSlideChange, SlideChangeBase );

ClippedSlideChange.prototype.start = function()
{
ClippedSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'clip-path' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

ClippedSlideChange.prototype.performIn = function( nT )
{
var nWidth = this.aEnteringSlide.getWidth();
var nHeight = this.aEnteringSlide.getHeight();
var aPolyPolygonElement = this.aClippingFunctor.perform( nT, nWidth, nHeight );
this.aEnteringSlide.setClipPath( aPolyPolygonElement );
};

ClippedSlideChange.prototype.performOut = function( )
{
};


function ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn)
{
this.aParametricPolyPolygon = aParametricPolyPolygon;
this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;
};

GenericAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

GenericAnimation.prototype.perform = function( aValue )
{
if( this.aSetModifier )
aValue = this.aSetModifier( aValue );

this.aSetValueFunc( aValue );
};

GenericAnimation.prototype.getUnderlyingValue = function()
{
var aValue = this.aGetValueFunc();
if( this.aGetModifier )
aValue = this.aGetModifier( aValue );
return aValue;
};


function TupleAnimation( aGetValueFunc, aSetValueFunc, aDefaultValue, aReferenceSize )
{
TupleAnimation.superclass.constructor.call( this, aGetValueFunc, aSetValueFunc );
assert( aDefaultValue && aReferenceSize,
'TupleAnimation constructor: default value functor and/or reference size are not valid' );

this.aDefaultValue = aDefaultValue;
this.aReferenceSize = aReferenceSize;
}
extend( TupleAnimation, GenericAnimation );

TupleAnimation.prototype.perform = function( aNormValue )
{
assert(aNormValue.length === this.aReferenceSize.length);

var aValue = [];
for( var i = 0; i < aNormValue.length; ++i )
{
aValue.push( aNormValue[i] * this.aReferenceSize[i] );
}

this.aSetValueFunc( aValue );
};

TupleAnimation.prototype.getUnderlyingValue = function()
{
var aValue = this.aGetValueFunc();
assert(aValue.length === this.aReferenceSize.length);

var aNormValue = [];
for( var i = 0; i < aValue.length; ++i )
{
aNormValue.push( aValue[i] / this.aReferenceSize[i] );
}

return aNormValue;
};


function HSLAnimationWrapper( aColorAnimation )
{
assert( aColorAnimation,
'HSLAnimationWrapper constructor: invalid color animation delegate' );

this.aAnimation = aColorAnimation;
}


HSLAnimationWrapper.prototype.start = function( aAnimatableElement )
{
this.aAnimation.start( aAnimatableElement );
};

HSLAnimationWrapper.prototype.end = function()
{
this.aAnimation.end();
};
HSLAnimationWrapper.prototype.perform = function( aHSLValue )
{
this.aAnimation.perform( aHSLValue.convertToRGB() );
};

HSLAnimationWrapper.prototype.getUnderlyingValue = function()
{
return this.aAnimation.getUnderlyingValue().convertToHSL();
};


function SlideChangeBase(aLeavingSlide, aEnteringSlide)
{
this.aLeavingSlide = aLeavingSlide;
this.aEnteringSlide = aEnteringSlide;
this.bIsFinished = false;
}

SlideChangeBase.prototype.start = function()
{
};

SlideChangeBase.prototype.end = function()
{
if( this.bIsFinished )
return;

this.aLeavingSlide.hide();
this.aEnteringSlide.reset();
this.aLeavingSlide.reset();

this.bIsFinished = true;
};

SlideChangeBase.prototype.perform = function( nValue )
{
if( this.bIsFinished ) return false;

if( this.aLeavingSlide )
this.performOut( nValue );

if( this.aEnteringSlide )
this.performIn( nValue );

return true;
};

SlideChangeBase.prototype.getUnderlyingValue = function()
{
return 0.0;
};

SlideChangeBase.prototype.performIn = function( )
{
log( 'SlideChangeBase.performIn: abstract method called' );
};

SlideChangeBase.prototype.performOut = function( )
{
log( 'SlideChangeBase.performOut: abstract method called' );
aGetModifier,
aSetModifier);
}


function createPairPropertyAnimation( sTransformType, aAnimatedElement, nWidth, nHeight )
{
var aFunctorSet = aAttributeMap[ sTransformType ];
var sGetValueMethod = aFunctorSet.get;
var sSetValueMethod = aFunctorSet.set;

var aDefaultValue = [];
var aSizeReference = [];
if( sTransformType === 'scale' )
{
aDefaultValue[0] = aSizeReference[0] = aAnimatedElement.getBaseBBox().width;
aDefaultValue[1] = aSizeReference[1] = aAnimatedElement.getBaseBBox().height;
}
else if( sTransformType === 'translate' )
{
aDefaultValue[0] = aAnimatedElement.getBaseCenterX();
aDefaultValue[1] = aAnimatedElement.getBaseCenterY();
aSizeReference[0] = nWidth;
aSizeReference[1] = nHeight;
}
else
{
log( 'createPairPropertyAnimation: transform type is not handled' );
return null;
}

return new TupleAnimation( bind( aAnimatedElement, aAnimatedElement[ sGetValueMethod ] ),
bind( aAnimatedElement, aAnimatedElement[ sSetValueMethod ] ),
aDefaultValue,
aSizeReference );
}


function createShapeTransition( aActivityParamSet, aAnimatedElement,
nSlideWidth, nSlideHeight,
aAnimatedTransitionFilterNode )
{
if( !aAnimatedTransitionFilterNode )
{
log( 'createShapeTransition: the animated transition filter node is not valid.' );
return null;
}
var eTransitionType = aAnimatedTransitionFilterNode.getTransitionType();
var eTransitionSubType = aAnimatedTransitionFilterNode.getTransitionSubType();
var bDirectionForward = ! aAnimatedTransitionFilterNode.getReverseDirection();
var bModeIn = ( aAnimatedTransitionFilterNode.getTransitionMode() == FORWARD );

var aTransitionInfo = aTransitionInfoTable[eTransitionType][eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'createShapeTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( eTransitionType, eTransitionSubType );
var aClippingAnimation
= new ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn );
return new SimpleActivity( aActivityParamSet, aClippingAnimation, true );

case TRANSITION_SPECIAL:
switch( eTransitionType )
{
default:
var aAnimation
= createPropertyAnimation( 'opacity',
aAnimatedElement,
nSlideWidth,
nSlideHeight );
return new SimpleActivity( aActivityParamSet, aAnimation, bModeIn );
}
}

}


function ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn )
{
this.aClippingFunctor = new ClippingFunctor( aParametricPolyPolygon,
aTransitionInfo,
bDirectionForward, bModeIn );
this.bAnimationStarted = false;
}

ClippingAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement,
'ClippingAnimation.start: animatable element is not valid' );
this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.initClipPath();
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;

};

ClippingAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.aAnimatableElement.cleanClipPath();
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

ClippingAnimation.prototype.perform = function( nValue )
{
var nWidth = this.aAnimatableElement.aClippingBBox.width;
var nHeight = this.aAnimatableElement.aClippingBBox.height;
var aPolyPolygonElement = this.aClippingFunctor.perform( nValue, nWidth, nHeight );
this.aAnimatableElement.setClipPath( aPolyPolygonElement );
};

ClippingAnimation.prototype.getUnderlyingValue = function()
{
return 0.0;
};


function GenericAnimation( aGetValueFunc, aSetValueFunc, aGetModifier, aSetModifier )
{
assert( aGetValueFunc && aSetValueFunc,
'GenericAnimation constructor: get value functor and/or set value functor are not valid' );

this.aGetValueFunc = aGetValueFunc;
this.aSetValueFunc = aSetValueFunc;
this.aGetModifier = aGetModifier;
this.aSetModifier = aSetModifier;
this.aAnimatableElement = null;
this.bAnimationStarted = false;
}


GenericAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement, 'GenericAnimation.start: animatable element is not valid' );


return sInfo;
};


function createAnimationTree( aRootElement, aNodeContext )
{
return createAnimationNode( aRootElement, null, aNodeContext );
}


function createAnimationNode( aElement, aParentNode, aNodeContext )
{
assert( aElement, 'createAnimationNode: invalid animation element' );

var eAnimationNodeType = getAnimationElementType( aElement );

var aCreatedNode = null;
var aCreatedContainer = null;

switch( eAnimationNodeType )
{
case ANIMATION_NODE_PAR:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ITERATE:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SEQ:
aCreatedNode = aCreatedContainer =
new SequentialTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATE:
aCreatedNode = new PropertyAnimationNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SET:
aCreatedNode = new AnimationSetNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATEMOTION:
log( 'createAnimationNode: ANIMATEMOTION not implemented' );
return null;
case ANIMATION_NODE_ANIMATECOLOR:
aCreatedNode = new AnimationColorNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATETRANSFORM:
aCreatedNode = new AnimationTransformNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_TRANSITIONFILTER:
aCreatedNode = new AnimationTransitionFilterNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_AUDIO:
log( 'createAnimationNode: AUDIO not implemented' );
return null;
case ANIMATION_NODE_COMMAND:
log( 'createAnimationNode: COMMAND not implemented' );
return null;
default:
log( 'createAnimationNode: invalid Animation Node Type: ' + eAnimationNodeType );
return null;
}

if( aCreatedContainer )
{
if( eAnimationNodeType == ANIMATION_NODE_ITERATE )
{
createIteratedNodes( aElement, aCreatedContainer, aNodeContext );
}
else
{
var aChildrenArray = getElementChildren( aElement );
for( var i = 0; i < aChildrenArray.length; ++i )
{
if( !createChildNode( aChildrenArray[i], aCreatedContainer, aNodeContext ) )
{
aCreatedContainer.removeAllChildrenNodes();
break;
}
}
}
}

return aCreatedNode;
}


function createChildNode( aElement, aParentNode, aNodeContext )
{
var aChildNode = createAnimationNode( aElement, aParentNode, aNodeContext );

if( !aChildNode )
{
log( 'createChildNode: child node creation failed' );
return false;
}
else
{
aParentNode.appendChildNode( aChildNode );
return true;
}
}


function createIteratedNodes( /*aElement, aContainerNode, aNodeContext*/ )
{
}


function makeScaler( nScale )
{
if( ( typeof( nScale ) !== typeof( 0 ) ) || !isFinite( nScale ) )
{
log( 'makeScaler: not valid param passed: ' + nScale );
return null;
}

return  function( nValue )
{
return ( nScale * nValue );
};
}


function createPropertyAnimation( sAttrName, aAnimatedElement, nWidth, nHeight )
{
if( !aAttributeMap[ sAttrName ] )
{
log( 'createPropertyAnimation: attribute is unknown' );
return null;
}


var aFunctorSet = aAttributeMap[ sAttrName ];

var sGetValueMethod =   aFunctorSet.get;
var sSetValueMethod =   aFunctorSet.set;

if( !sGetValueMethod || !sSetValueMethod  )
{
log( 'createPropertyAnimation: attribute is not handled' );
return null;
}

var aGetModifier =  eval( aFunctorSet.getmod );
var aSetModifier =  eval( aFunctorSet.setmod );


return new GenericAnimation( bind( aAnimatedElement, aAnimatedElement[ sGetValueMethod ] ),
bind( aAnimatedElement, aAnimatedElement[ sSetValueMethod ] ),
COLOR_SPACE_HSL );
aInterpolator = aInterpolatorMaker( this.getColorInterpolationDirection() );
}
else
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space rgb'  );
aColorAnimation = aAnimation;
aInterpolator = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
COLOR_PROPERTY,
COLOR_SPACE_RGB );
}

return createActivity( aActivityParamSet, this, aColorAnimation, aInterpolator );
};

AnimationColorNode.prototype.getColorInterpolation = function()
{
return this.eColorInterpolation;
};

AnimationColorNode.prototype.getColorInterpolationDirection = function()
{
return this.eColorInterpolationDirection;
};

AnimationColorNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationColorNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  color-interpolation: ' + aColorSpaceOutMap[ this.getColorInterpolation() ];

sInfo += ';  color-interpolation-direction: ' + aClockDirectionOutMap[ this.getColorInterpolationDirection() ];
}
return sInfo;
};


function AnimationTransitionFilterNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationTransitionFilterNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationTransitionFilterNode';

this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = undefined;
this.eTransitionMode = undefined;
}
extend( AnimationTransitionFilterNode, AnimationBaseNode );


AnimationTransitionFilterNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

return createShapeTransition( aActivityParamSet,
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight,
this );
};

AnimationTransitionFilterNode.prototype.parseElement = function()
{
var bRet = AnimationTransitionFilterNode.superclass.parseElement.call( this );
var bIsValidTransition = true;

var aAnimElem = this.aElement;

this.eTransitionType = undefined;
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined  ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( !bIsValidTransition )
{
this.eTransitionType = FADE_TRANSITION;
this.eTransitionSubType = CROSSFADE_TRANS_SUBTYPE;
log( 'AnimationTransitionFilterNode.parseElement: in place of the invalid transition a crossfade transition is used' );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.eTransitionMode = TRANSITION_MODE_IN;
var sModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'mode' );
if( sModeAttr === 'out' )
this.eTransitionMode = TRANSITION_MODE_OUT;

return bRet;
};

AnimationTransitionFilterNode.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

AnimationTransitionFilterNode.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

AnimationTransitionFilterNode.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

AnimationTransitionFilterNode.prototype.getReverseDirection = function()
{
return this.bReverseDirection;
};

AnimationTransitionFilterNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationTransitionFilterNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( this.getReverseDirection() )
sInfo += ';  direction: reverse';
}
this.sClassName = 'PropertyAnimationNode';
}
extend( PropertyAnimationNode, AnimationBaseNode3 );


PropertyAnimationNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aInterpolator = null;  // createActivity will compute it;
return createActivity( aActivityParamSet, this, aAnimation, aInterpolator );
};


function isValidTransformation( sType )
{
return ( sType === 'translate' || sType === 'scale' || sType === 'rotate'
|| sType === 'skewX' || sType === 'skewY' );
}

function AnimationTransformNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationTransformNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationTransformNode';
}
extend( AnimationTransformNode, AnimationBaseNode3 );


AnimationTransformNode.prototype.parseElement = function()
{
var bRet = AnimationTransformNode.superclass.parseElement.call(this);

var aAnimElem = this.aElement;

var sTransformType = aAnimElem.getAttribute( 'svg:type' );
if( !isValidTransformation( sTransformType ) )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationTransformNode.parseElement: transformation type not found: ' + sTransformType );
}
else
{
this.sAttributeName = sTransformType;
}

return bRet;
}

AnimationTransformNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();
var aAnimation;

if( this.getAttributeName() === 'scale' || this.getAttributeName() === 'translate' )
{
aAnimation = createPairPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

}
else
{
aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );
}

var aInterpolator = null;  // createActivity will compute it;
return createActivity( aActivityParamSet, this, aAnimation, aInterpolator );
};


function AnimationSetNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationSetNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationSetNode';
}
extend( AnimationSetNode, AnimationBaseNode2 );


AnimationSetNode.prototype.createActivity = function()
{
var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aActivityParamSet = this.fillActivityParams();

return new SetActivity( aActivityParamSet, aAnimation, this.getToValue() );
};


function AnimationColorNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationColorNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationColorNode';

this.eColorInterpolation = undefined;
this.eColorInterpolationDirection = undefined;
}
extend( AnimationColorNode, AnimationBaseNode3 );


AnimationColorNode.prototype.parseElement = function()
{
var bRet = AnimationColorNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eColorInterpolation = COLOR_SPACE_RGB;
var sColorInterpolationAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation' );
if( sColorInterpolationAttr && aColorSpaceInMap[ sColorInterpolationAttr ] )
this.eColorInterpolation = aColorSpaceInMap[ sColorInterpolationAttr ];

this.eColorInterpolationDirection = CLOCKWISE;
var sColorInterpolationDirectionAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation-direction' );
if( sColorInterpolationDirectionAttr && aClockDirectionInMap[ sColorInterpolationDirectionAttr ] )
this.eColorInterpolationDirection = aClockDirectionInMap[ sColorInterpolationDirectionAttr ];

return bRet;
};

AnimationColorNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aColorAnimation;
var aInterpolator;
if( this.getColorInterpolation() === COLOR_SPACE_HSL )
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space hsl'  );
aColorAnimation = new HSLAnimationWrapper( aAnimation );
var aInterpolatorMaker = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
COLOR_PROPERTY,
assert( this.nFinishedChildren < this.aChildrenArray.length,
'SequentialTimeContainer.notifyDeactivating: assertion (this.nFinishedChildren < this.aChildrenArray.length) failed' );

var aNextChild = this.aChildrenArray[ this.nFinishedChildren ];

assert( aNextChild.getState() == UNRESOLVED_NODE,
'SequentialTimeContainer.notifyDeactivating: assertion (aNextChild.getState == UNRESOLVED_NODE) failed' );

if( !this.resolveChild( aNextChild ) )
{
this.deactivate();
}
};

SequentialTimeContainer.prototype.skipEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
var aEvent = makeEvent( bind2( aChildNode.deactivate, aChildNode ) );
this.getContext().aTimerEventQueue.addEvent( aEvent );
}
else
{
log( 'SequentialTimeContainer.skipEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindCurrentEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindCurrentEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
this.getContext().aActivityQueue.endAll();

aChildNode.end();
aChildNode.removeEffect();
aChildNode.init();
this.resolveChild( aChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindCurrentEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindLastEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindLastEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().aActivityQueue.clear();
aChildNode.end();

--this.nFinishedChildren;
var aPreviousChildNode = this.aChildrenArray[ this.nFinishedChildren ];

aPreviousChildNode.removeEffect();
aPreviousChildNode.init();
aChildNode.init();
this.resolveChild( aPreviousChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindLastEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.resolveChild = function( aChildNode )
{
var bResolved = aChildNode.resolve();

if( bResolved && ( this.isMainSequenceRootNode() || this.isInteractiveSequenceRootNode() ) )
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();
this.aCurrentSkipEvent = makeEvent( bind2( SequentialTimeContainer.prototype.skipEffect, this, aChildNode ) );

if( this.aRewindCurrentEffectEvent )
this.aRewindCurrentEffectEvent.dispose();
this.aRewindCurrentEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindCurrentEffect, this, aChildNode ) );

if( this.aRewindLastEffectEvent )
this.aRewindLastEffectEvent.dispose();
this.aRewindLastEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindLastEffect, this, aChildNode ) );

if( this.isMainSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipEffectEvent( this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindCurrentEffectEvent( this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindLastEffectEvent( this.aRewindLastEffectEvent );
}
else if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipInteractiveEffectEvent( aChildNode.getId(), this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindRunningInteractiveEffectEvent( aChildNode.getId(), this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindEndedInteractiveEffectEvent( aChildNode.getId(), this.aRewindLastEffectEvent );
}
}
return bResolved;
};

SequentialTimeContainer.prototype.notifyRewindedEvent = function( aChildNode )
{
if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( aChildNode.getId() );

var sId = aChildNode.getBegin().getEventBaseElementId();
if( sId )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( sId );
}
}
};

SequentialTimeContainer.prototype.dispose = function()
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();

SequentialTimeContainer.superclass.dispose.call( this );
};


function PropertyAnimationNode(  aAnimElem, aParentNode, aNodeContext )
{
PropertyAnimationNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.aChildrenArray[i].removeEffect();
}
};

BaseContainerNode.prototype.saveStateOfAnimatedElement = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].saveStateOfAnimatedElement();
}
};

BaseContainerNode.prototype.forEachChildNode = function( aFunction, eNodeStateMask )
{
if( !eNodeStateMask )
eNodeStateMask = -1;

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( ( eNodeStateMask != -1 ) && ( ( this.aChildrenArray[i].getState() & eNodeStateMask ) == 0 ) )
continue;
aFunction( this.aChildrenArray[i] );
}
};

BaseContainerNode.prototype.dispose = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].dispose();
}

BaseContainerNode.superclass.dispose.call( this );
};

BaseContainerNode.prototype.getImpressNodeType = function()
{
return this.eImpressNodeType;
};

BaseContainerNode.prototype.info = function( bVerbose )
{
var sInfo = BaseContainerNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getImpressNodeType() )
sInfo += ';  node-type: ' + aImpressNodeTypeOutMap[ this.getImpressNodeType() ];
}

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
sInfo += '\n';
sInfo += this.aChildrenArray[i].info( bVerbose );
}

return sInfo;
};


function ParallelTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
ParallelTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'ParallelTimeContainer';
}
extend( ParallelTimeContainer, BaseContainerNode );


ParallelTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
var nResolvedChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].resolve() )
{
++nResolvedChildren;
}
}

if( nChildrenCount != nResolvedChildren )
{
log( 'ParallelTimeContainer.activate_st: resolving all children failed' );
return;
}


if( this.isDurationIndefinite() && ( nChildrenCount == 0  ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else
{
this.scheduleDeactivationEvent();
}
};

ParallelTimeContainer.prototype.notifyDeactivating = function( aAnimationNode )
{
this.notifyDeactivatedChild( aAnimationNode );
};


function SequentialTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
SequentialTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'SequentialTimeContainer';
this.bIsRewinding = false;
this.aCurrentSkipEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
}
extend( SequentialTimeContainer, BaseContainerNode );


SequentialTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( ; this.nFinishedChildren < nChildrenCount; ++this.nFinishedChildren )
{
if( this.resolveChild( this.aChildrenArray[ this.nFinishedChildren ] ) )
break;
else
log( 'SequentialTimeContainer.activate_st: resolving child failed!' );
}

if( this.isDurationIndefinite() && ( ( nChildrenCount == 0 ) || ( this.nFinishedChildren >= nChildrenCount ) ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else
{
this.scheduleDeactivationEvent();
}
};

SequentialTimeContainer.prototype.notifyDeactivating = function( aNotifier )
{
if( this.bIsRewinding )
return;

if( this.notifyDeactivatedChild( aNotifier ) )
return;

};

BaseContainerNode.prototype.removeAllChildrenNodes = function()
{
this.aChildrenArray = [];
};

BaseContainerNode.prototype.init_st = function()
{
this.nLeftIterations = this.getRepeatCount();

return this.init_children();
};

BaseContainerNode.prototype.init_children = function()
{
this.nFinishedChildren = 0;
var nChildrenCount = this.aChildrenArray.length;
var nInitChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].init() )
{
++nInitChildren;
}
}
return ( nChildrenCount == nInitChildren );
};


BaseContainerNode.prototype.deactivate_st = function( eDestState )
{
this.nLeftIterations = 0;
if( eDestState == FROZEN_NODE )
{
this.forEachChildNode( mem_fn( 'deactivate' ), ~( FROZEN_NODE | ENDED_NODE ) );
}
else
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
if( this.getFillMode() == FILL_MODE_REMOVE )
this.removeEffect();
}
};

BaseContainerNode.prototype.hasPendingAnimation = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].hasPendingAnimation() )
return true;
}
return false;
};

BaseContainerNode.prototype.activate_st = function()
{
log( 'BaseContainerNode.activate_st: abstract method called' );
};

BaseContainerNode.prototype.notifyDeactivating = function( /*aAnimationNode*/ )
{
log( 'BaseContainerNode.notifyDeactivating: abstract method called' );
};

BaseContainerNode.prototype.isDurationIndefinite = function()
{
return this.bDurationIndefinite;
};

BaseContainerNode.prototype.isChildNode = function( aAnimationNode )
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].getId() == aAnimationNode.getId() )
return true;
}
return false;
};

BaseContainerNode.prototype.notifyDeactivatedChild = function( aChildNode )
{
assert( ( aChildNode.getState() == FROZEN_NODE ) || ( aChildNode.getState() == ENDED_NODE ),
'BaseContainerNode.notifyDeactivatedChild: passed child node is neither in FROZEN nor in ENDED state' );

assert( this.getState() != INVALID_NODE,
'BaseContainerNode.notifyDeactivatedChild: this node is invalid' );

if( !this.isChildNode( aChildNode ) )
{
log( 'BaseContainerNode.notifyDeactivatedChild: unknown child notifier!' );
return false;
}

var nChildrenCount = this.aChildrenArray.length;

assert( ( this.nFinishedChildren < nChildrenCount ),
'BaseContainerNode.notifyDeactivatedChild: assert(this.nFinishedChildren < nChildrenCount) failed' );

++this.nFinishedChildren;
var bFinished = ( this.nFinishedChildren >= nChildrenCount );

if( bFinished && this.isDurationIndefinite() )
{
if( this.nLeftIterations >= 1.0 )
{
this.nLeftIterations -= 1.0;
}
if( this.nLeftIterations >= 1.0 )
{
bFinished = false;
var aRepetitionEvent = makeDelay( bind( this, this.repeat ), 0.0 );
this.aContext.aTimerEventQueue.addEvent( aRepetitionEvent );
}
else
{
this.deactivate();
}
}

return bFinished;
};

BaseContainerNode.prototype.repeat = function()
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
this.removeEffect();
var bInitialized = this.init_children();
if( bInitialized )
this.activate_st();
return bInitialized;
};

BaseContainerNode.prototype.removeEffect = function()
{
var nChildrenCount = this.aChildrenArray.length;
if( nChildrenCount == 0 )
return;
for( var i = nChildrenCount - 1; i >= 0; --i )
{
if( ( this.aChildrenArray[i].getState() & ( FROZEN_NODE | ENDED_NODE ) ) == 0 )
{
log( 'BaseContainerNode.removeEffect: child(id:'
+ this.aChildrenArray[i].getId() + ') is neither frozen nor ended;'
+ ' state: '
+ aTransitionModeOutMap[ this.aChildrenArray[i].getState() ] );
continue;
}
{
var aKeyTimes = sKeyTimesAttr.split( ';' );
for( var i = 0; i < aKeyTimes.length; ++i )
this.aKeyTimes.push( parseFloat( aKeyTimes[i] ) );
}

var sValuesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'values' );
if( sValuesAttr )
{
this.aValues = sValuesAttr.split( ';' );
}
else
{
this.aValues = [];
}

this.aFormula = aAnimElem.getAttributeNS( NSS['anim'], 'formula' );

return bRet;
};

AnimationBaseNode3.prototype.getAccumulate = function()
{
return this.eAccumulate;
};

AnimationBaseNode3.prototype.getCalcMode = function()
{
return this.eCalcMode;
};

AnimationBaseNode3.prototype.getFromValue = function()
{
return this.aFromValue;
};

AnimationBaseNode3.prototype.getByValue = function()
{
return this.aByValue;
};

AnimationBaseNode3.prototype.getKeyTimes = function()
{
return this.aKeyTimes;
};

AnimationBaseNode3.prototype.getValues = function()
{
return this.aValues;
};

AnimationBaseNode3.prototype.getFormula = function()
{
return this.aFormula;
};

AnimationBaseNode3.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode3.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getAccumulate() )
sInfo += ';  accumulate: ' + aAccumulateModeOutMap[ this.getAccumulate() ];

sInfo += ';  calcMode: ' + aCalcModeOutMap[ this.getCalcMode() ];

if( this.getFromValue() )
sInfo += ';  from: ' + this.getFromValue();

if( this.getByValue() )
sInfo += ';  by: ' + this.getByValue();

if( this.getKeyTimes().length )
sInfo += ';  keyTimes: ' + this.getKeyTimes().join( ',' );

if( this.getValues().length )
sInfo += ';  values: ' + this.getValues().join( ',' );

if( this.getFormula() )
sInfo += ';  formula: ' + this.getFormula();
}

return sInfo;
};


function BaseContainerNode( aAnimElem, aParentNode, aNodeContext )
{
BaseContainerNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'BaseContainerNode';
this.bIsContainer = true;
this.aChildrenArray = [];
this.nFinishedChildren = 0;
this.bDurationIndefinite = false;
this.nLeftIterations = 1;

this.eImpressNodeType = undefined;
this.ePresetClass =  undefined;
this.ePresetId =  undefined;
}
extend( BaseContainerNode, BaseNode );


BaseContainerNode.prototype.parseElement= function()
{
var bRet = BaseContainerNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eImpressNodeType = IMPRESS_DEFAULT_NODE;
var sNodeTypeAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'node-type' );
if( sNodeTypeAttr && aImpressNodeTypeInMap[ sNodeTypeAttr ] )
this.eImpressNodeType = aImpressNodeTypeInMap[ sNodeTypeAttr ];
this.bMainSequenceRootNode = ( this.eImpressNodeType == IMPRESS_MAIN_SEQUENCE_NODE );
this.bInteractiveSequenceRootNode = ( this.eImpressNodeType == IMPRESS_INTERACTIVE_SEQUENCE_NODE );

this.ePresetClass =  undefined;
var sPresetClassAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-class' );
if( sPresetClassAttr && aPresetClassInMap[ sPresetClassAttr ] )
this.ePresetClass = aPresetClassInMap[ sPresetClassAttr ];

this.ePresetId =  undefined;
var sPresetIdAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-id' );
if( sPresetIdAttr && aPresetIdInMap[ sPresetIdAttr ] )
this.ePresetId = aPresetIdInMap[ sPresetIdAttr ];


var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].parseElement();
}


this.bDurationIndefinite
= ( !this.getDuration() || this.getDuration().isIndefinite()  ) &&
( !this.getEnd() || ( this.getEnd().getType() != OFFSET_TIMING ) );

return bRet;
};

BaseContainerNode.prototype.appendChildNode = function( aAnimationNode )
{
if( ! this.checkValidNode() )
return ;

if( aAnimationNode.registerDeactivatingListener( this ) )
this.aChildrenArray.push( aAnimationNode );
AnimationBaseNode.prototype.removeEffect = function()
{
this.getAnimatedElement().restoreState( this.getId() );
};

AnimationBaseNode.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

AnimationBaseNode.prototype.getAnimatedElement = function()
{
return this.aAnimatedElement;
};

AnimationBaseNode.prototype.dispose= function()
{
if( this.aActivity )
this.aActivity.dispose();

AnimationBaseNode.superclass.dispose.call( this );
};

AnimationBaseNode.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

AnimationBaseNode.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimationBaseNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getMinFrameCount() )
sInfo += ';  min frame count: ' + this.getMinFrameCount();

sInfo += ';  additive: ' + aAddittiveModeOutMap[ this.getAdditiveMode() ];

if( this.getTargetElement() )
{
var sElemId = this.getTargetElement().getAttribute( 'id' );
sInfo += ';  targetElement: ' +  sElemId;
}
}

return sInfo;
};


function AnimationBaseNode2( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode2.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sAttributeName = '';
this.aToValue = null;

}
extend( AnimationBaseNode2, AnimationBaseNode );


AnimationBaseNode2.prototype.parseElement = function()
{
var bRet = AnimationBaseNode2.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.sAttributeName = aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' );
if( !this.sAttributeName )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode2.parseElement: target attribute name not found: ' + this.sAttributeName );
}

this.aToValue = aAnimElem.getAttributeNS( NSS['smil'], 'to' );

return bRet;
};

AnimationBaseNode2.prototype.getAttributeName = function()
{
return this.sAttributeName;
};

AnimationBaseNode2.prototype.getToValue = function()
{
return this.aToValue;
};

AnimationBaseNode2.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode2.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getAttributeName() )
sInfo += ';  attributeName: ' + this.getAttributeName();

if( this.getToValue() )
sInfo += ';  to: ' + this.getToValue();
}

return sInfo;
};


function AnimationBaseNode3( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode3.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.eAccumulate = undefined;
this.eCalcMode = undefined;
this.aFromValue = null;
this.aByValue = null;
this.aKeyTimes = null;
this.aValues = null;
this.aFormula= null;
}
extend( AnimationBaseNode3, AnimationBaseNode2 );


AnimationBaseNode3.prototype.parseElement = function()
{
var bRet = AnimationBaseNode3.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eAccumulate = ACCUMULATE_MODE_NONE;
var sAccumulateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accumulate' );
if( sAccumulateAttr == 'sum' )
this.eAccumulate = ACCUMULATE_MODE_SUM;

this.eCalcMode = CALC_MODE_LINEAR;
var sCalcModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'calcMode' );
if( sCalcModeAttr && aCalcModeInMap[ sCalcModeAttr ] )
this.eCalcMode = aCalcModeInMap[ sCalcModeAttr ];

this.aFromValue = aAnimElem.getAttributeNS( NSS['smil'], 'from' );

this.aByValue = aAnimElem.getAttributeNS( NSS['smil'], 'by' );

this.aKeyTimes = [];
var sKeyTimesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'keyTimes' );
sKeyTimesAttr = removeWhiteSpaces( sKeyTimesAttr );
if( sKeyTimesAttr )
if( !this.aTargetElement )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode.parseElement: target element not found: ' + sTargetElementAttr );
}

var sSubItemAttr = aAnimElem.getAttributeNS( NSS['anim'], 'sub-item' );
this.bIsTargetTextElement = ( sSubItemAttr && ( sSubItemAttr === 'text' ) );

var sAdditiveAttr = aAnimElem.getAttributeNS( NSS['smil'], 'additive' );
if( sAdditiveAttr && aAddittiveModeInMap[sAdditiveAttr] )
this.eAdditiveMode = aAddittiveModeInMap[sAdditiveAttr];
else
this.eAdditiveMode = ADDITIVE_MODE_REPLACE;

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;


if( this.aTargetElement )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' ) === 'visibility' )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'to' ) === 'visible' )
this.aTargetElement.setAttribute( 'visibility', 'hidden' );
}

if( !this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ] )
{
if( this.bIsTargetTextElement )
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedTextElement( this.aTargetElement );
}
else
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedElement( this.aTargetElement );
}
}
this.aAnimatedElement = this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ];

this.aAnimatedElement.setAdditiveMode( this.eAdditiveMode );
}


return bRet;
};

AnimationBaseNode.prototype.init_st = function()
{
if( this.aActivity )
this.aActivity.activate( makeEvent( bind( this, this.deactivate ) ) );
else
this.aActivity = this.createActivity();
return true;
};

AnimationBaseNode.prototype.resolve_st = function()
{
return true;
};

AnimationBaseNode.prototype.activate_st = function()
{
if( this.aActivity )
{
this.saveStateOfAnimatedElement();
this.aActivity.setTargets( this.getAnimatedElement() );
if( this.getContext().bIsSkipping  )
{
this.aActivity.end();
}
else
{
this.getContext().aActivityQueue.addActivity( this.aActivity );
}
}
else
{
AnimationBaseNode.superclass.scheduleDeactivationEvent.call( this );
}
};

AnimationBaseNode.prototype.deactivate_st = function( eDestState )
{
if( eDestState == FROZEN_NODE )
{
if( this.aActivity )
this.aActivity.end();
}
if( eDestState == ENDED_NODE )
{
if( this.aActivity )
this.aActivity.dispose();
if( ( this.getFillMode() == FILL_MODE_REMOVE ) && this.getAnimatedElement()  )
this.removeEffect();
}
};

AnimationBaseNode.prototype.createActivity = function()
{
log( 'AnimationBaseNode.createActivity: abstract method called' );
};

AnimationBaseNode.prototype.fillActivityParams = function()
{

var nDuration = 0.001;
if( this.getDuration().isValue() )
{
nDuration = this.getDuration().getValue();
}
else
{
log( 'AnimationBaseNode.fillActivityParams: duration is not a number' );
}

var aActivityParamSet = new ActivityParamSet();

aActivityParamSet.aEndEvent             = makeEvent( bind( this, this.deactivate ) );
aActivityParamSet.aTimerEventQueue      = this.aContext.aTimerEventQueue;
aActivityParamSet.aActivityQueue        = this.aContext.aActivityQueue;
aActivityParamSet.nMinDuration          = nDuration;
aActivityParamSet.nMinNumberOfFrames    = this.getMinFrameCount();
aActivityParamSet.bAutoReverse          = this.isAutoReverseEnabled();
aActivityParamSet.nRepeatCount          = this.getRepeatCount();
aActivityParamSet.nAccelerationFraction = this.getAccelerateValue();
aActivityParamSet.nDecelerationFraction = this.getDecelerateValue();
aActivityParamSet.nSlideWidth           = this.aNodeContext.aSlideWidth;
aActivityParamSet.nSlideHeight          = this.aNodeContext.aSlideHeight;

return aActivityParamSet;
};

AnimationBaseNode.prototype.hasPendingAnimation = function()
{
return true;
};

AnimationBaseNode.prototype.saveStateOfAnimatedElement = function()
{
this.getAnimatedElement().saveState( this.getId() );
};

return this.aContext;
};

BaseNode.prototype.isTransition = function( eFromState, eToState )
{
return ( ( this.aStateTransTable[ eFromState ] & eToState ) != 0 );
};

BaseNode.prototype.inStateOrTransition = function( nMask )
{
return ( ( ( this.eCurrentState & nMask ) != 0 ) || ( ( this.nCurrentStateTransition & nMask ) != 0 ) );
};

BaseNode.prototype.isContainer = function()
{
return this.bIsContainer;
};

BaseNode.prototype.getBegin = function()
{
return this.aBegin;
};

BaseNode.prototype.getDuration = function()
{
return this.aDuration;
};

BaseNode.prototype.getEnd = function()
{
return this.aEnd;
};

BaseNode.prototype.getFillMode = function()
{
return this.eFillMode;
};

BaseNode.prototype.getRestartMode = function()
{
return this.eRestartMode;
};

BaseNode.prototype.getRepeatCount = function()
{
return this.nRepeatCount;
};

BaseNode.prototype.getAccelerateValue = function()
{
return this.nAccelerate;
};

BaseNode.prototype.getDecelerateValue = function()
{
return this.nDecelerate;
};

BaseNode.prototype.isAutoReverseEnabled = function()
{
return this.bAutoreverse;
};

BaseNode.prototype.info = function( bVerbose )
{
var sInfo = 'class name: ' + this.sClassName;
sInfo += ';  element name: ' + this.aElement.localName;
sInfo += ';  id: ' + this.getId();
sInfo += ';  state: ' + getNodeStateName( this.getState() );

if( bVerbose )
{
sInfo += ';  is container: ' + this.isContainer();

if( this.getBegin() )
sInfo += ';  begin: ' + this.getBegin().info();

if( this.getDuration() )
sInfo += ';  dur: ' + this.getDuration().info();

if( this.getEnd() )
sInfo += ';  end: ' + this.getEnd().info();

if( this.getFillMode() )
sInfo += ';  fill: ' + aFillModeOutMap[ this.getFillMode() ];

if( this.getRestartMode() )
sInfo += ';  restart: ' + aRestartModeOutMap[ this.getRestartMode() ];

if( this.getRepeatCount() && ( this.getRepeatCount() != 1.0 ) )
sInfo += ';  repeatCount: ' + this.getRepeatCount();

if( this.getAccelerateValue() )
sInfo += ';  accelerate: ' + this.getAccelerateValue();

if( this.getDecelerateValue() )
sInfo += ';  decelerate: ' + this.getDecelerateValue();

if( this.isAutoReverseEnabled() )
sInfo += ';  autoReverse: true';

}

return sInfo;
};

BaseNode.prototype.callInfo = function( sMethodName )
{
var sInfo = this.sClassName +
'( ' + this.getId() +
', ' + getNodeStateName( this.getState() ) +
' ).' + sMethodName;
return sInfo;
};

BaseNode.prototype.DBG = function( sMessage, nTime )
{
ANIMDBG.print( sMessage, nTime );
};


function AnimationBaseNode( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationBaseNode';
this.bIsContainer = false;
this.aTargetElement = null;
this.bIsTargetTextElement = false;
this.aAnimatedElement = null;
this.aActivity = null;

this.nMinFrameCount = undefined;
this.eAdditiveMode = undefined;

}
extend( AnimationBaseNode, BaseNode );


AnimationBaseNode.prototype.parseElement = function()
{
var bRet = AnimationBaseNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.aTargetElement = null;
var sTargetElementAttr = aAnimElem.getAttributeNS( NSS['smil'], 'targetElement' );
if( sTargetElementAttr )
this.aTargetElement = document.getElementById( sTargetElementAttr );

this.end();
}
};

BaseNode.prototype.end = function()
{
var bIsFrozenOrInTransitionToFrozen = this.inStateOrTransition( FROZEN_NODE );
if( this.inStateOrTransition( ENDED_NODE ) || !this.checkValidNode() )
return;

if( !(this.isTransition( this.eCurrentState, ENDED_NODE ) ) )
log( 'BaseNode.end: end state not reachable in transition table' );

this.DBG( this.callInfo( 'end' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( ENDED_NODE, true /* FORCE */ ) )
{
this.deactivate_st( ENDED_NODE );
aStateTrans.commit();

if( !bIsFrozenOrInTransitionToFrozen )
this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
};

BaseNode.prototype.dispose = function()
{
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
this.aDeactivatingListenerArray = [];
};

BaseNode.prototype.getState = function()
{
return this.eCurrentState;
};

BaseNode.prototype.registerDeactivatingListener = function( aNotifiee )
{
if (! this.checkValidNode())
return false;

if( !aNotifiee )
{
log( 'BaseNode.registerDeactivatingListener(): invalid notifiee' );
return false;
}
this.aDeactivatingListenerArray.push( aNotifiee );

return true;
};

BaseNode.prototype.notifyDeactivating = function( aNotifier )
{
assert( ( aNotifier.getState() == FROZEN_NODE ) || ( aNotifier.getState() == ENDED_NODE ),
'BaseNode.notifyDeactivating: Notifier node is neither in FROZEN nor in ENDED state' );
};

BaseNode.prototype.isMainSequenceRootNode = function()
{
return this.bMainSequenceRootNode;
};

BaseNode.prototype.isInteractiveSequenceRootNode = function()
{
return this.bInteractiveSequenceRootNode;
};

BaseNode.prototype.makeDeactivationEvent = function( nDelay )
{
if( this.aDeactivationEvent )
{
this.aDeactivationEvent.charge();
}
else
{
if( typeof( nDelay ) == typeof(0) )
this.aDeactivationEvent = makeDelay( bind( this, this.deactivate ), nDelay );
else
this.aDeactivationEvent = null;
}
return this.aDeactivationEvent;
};

BaseNode.prototype.scheduleDeactivationEvent = function( aEvent )
{
this.DBG( this.callInfo( 'scheduleDeactivationEvent' ) );

if( !aEvent )
{
if( this.getDuration() && this.getDuration().isValue() )
aEvent = this.makeDeactivationEvent( this.getDuration().getValue() );
}
if( aEvent )
{
this.aContext.aTimerEventQueue.addEvent( aEvent );
}
};

BaseNode.prototype.checkValidNode = function()
{
return ( this.eCurrentState != INVALID_NODE );
};

BaseNode.prototype.init_st = function()
{
return true;
};

BaseNode.prototype.resolve_st = function()
{
return true;
};

BaseNode.prototype.activate_st = function()
{
this.scheduleDeactivationEvent();
};

BaseNode.prototype.deactivate_st = function( /*aNodeState*/ )
{
};

BaseNode.prototype.notifyEndListeners = function()
{
var nDeactivatingListenerCount = this.aDeactivatingListenerArray.length;

for( var i = 0; i < nDeactivatingListenerCount; ++i )
{
this.aDeactivatingListenerArray[i].notifyDeactivating( this );
}

this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_END_EVENT, this.getId() );
if( this.getParentNode() && this.getParentNode().isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyNextEffectEndEvent();

if( this.isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyAnimationsEndEvent();
};

BaseNode.prototype.getContext = function()
{
this.nAccelerate = 0.0;

this.nDecelerate = 0.0;
var sDecelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'decelerate' );
if( sDecelerateAttr )
this.nDecelerate = parseFloat( sDecelerateAttr );
if( isNaN(this.nDecelerate) )
this.nDecelerate = 0.0;

this.bAutoreverse = false;
var sAutoReverseAttr = aAnimElem.getAttributeNS( NSS['smil'], 'autoReverse' );
if( sAutoReverseAttr == 'true' )
this.bAutoreverse = true;


if( this.eFillMode == FILL_MODE_DEFAULT )
if( this.getParentNode() )
this.eFillMode = this.getParentNode().getFillMode();
else
this.eFillMode = FILL_MODE_AUTO;

if( this.eFillMode ==  FILL_MODE_AUTO ) // see SMIL recommendation document
{
this.eFillMode = ( this.aEnd ||
( this.nRepeatCount != 1) ||
( this.aDuration && !this.aDuration.isIndefinite() ) )
? FILL_MODE_REMOVE
: FILL_MODE_FREEZE;
}

if( this.eRestartMode == RESTART_MODE_DEFAULT )
if( this.getParentNode() )
this.eRestartMode = this.getParentNode().getRestartMode();
else
this.eRestartMode = RESTART_MODE_ALWAYS;

if( ( this.nAccelerate + this.nDecelerate ) > 1.0 )
{
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
}

this.aStateTransTable = getTransitionTable( this.getRestartMode(), this.getFillMode() );

return true;
};

BaseNode.prototype.getParentNode = function()
{
return this.aParentNode;
};

BaseNode.prototype.init = function()
{
this.DBG( this.callInfo( 'init' ) );
if( ! this.checkValidNode() )
return false;
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();

this.eCurrentState = UNRESOLVED_NODE;

return this.init_st();
};

BaseNode.prototype.resolve = function()
{
if( this.aNodeContext.bIsInvalid || ! this.checkValidNode() )
return false;

this.DBG( this.callInfo( 'resolve' ) );

if( this.eCurrentState == RESOLVED_NODE )
log( 'BaseNode.resolve: already in RESOLVED state' );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( RESOLVED_NODE ) &&
this.isTransition( RESOLVED_NODE, ACTIVE_NODE ) &&
this.resolve_st() )
{
aStateTrans.commit();

if( this.aActivationEvent )
{
this.aActivationEvent.charge();
}
else
{
this.aActivationEvent = makeDelay( bind( this, this.activate ), this.getBegin().getOffset() + this.nStartDelay );
}
registerEvent( this.getId(), this.getBegin(), this.aActivationEvent, this.aNodeContext );

return true;
}

return false;
};

BaseNode.prototype.activate = function()
{
if( ! this.checkValidNode() )
return false;

if( this.eCurrentState == ACTIVE_NODE )
log( 'BaseNode.activate: already in ACTIVE state' );

this.DBG( this.callInfo( 'activate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( ACTIVE_NODE ) )
{
this.activate_st();
aStateTrans.commit();
if( !this.aContext.aEventMultiplexer )
log( 'BaseNode.activate: this.aContext.aEventMultiplexer is not valid' );
this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_BEGIN_EVENT, this.getId() );
return true;
}
return false;
};

BaseNode.prototype.deactivate = function()
{
if( this.inStateOrTransition( ENDED_NODE | FROZEN_NODE ) || !this.checkValidNode() )
return;

if( this.isTransition( this.eCurrentState, FROZEN_NODE ) )
{
this.DBG( this.callInfo( 'deactivate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( FROZEN_NODE, true /* FORCE */ ) )
{
this.deactivate_st( FROZEN_NODE );
aStateTrans.commit();

this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
}
else
{
function StateTransition( aBaseNode )
{
this.aNode = aBaseNode;
this.eToState = INVALID_NODE;
}

StateTransition.prototype.enter = function( eNodeState, bForce )
{
if( !bForce ) bForce = false;

if( this.eToState != INVALID_NODE )
{
log( 'StateTransition.enter: commit() before enter()ing again!' );
return false;
}
if( !bForce && !this.aNode.isTransition( this.aNode.getState(), eNodeState  ) )
return false;

if( ( this.aNode.nCurrentStateTransition & eNodeState ) != 0 )
return false; // already in wanted transition

this.aNode.nCurrentStateTransition |= eNodeState;
this.eToState = eNodeState;
return true;
};

StateTransition.prototype.commit = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.eCurrentState = this.eToState;
this.clear();
}
};

StateTransition.prototype.clear = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.nCurrentStateTransition &= ~this.eToState;
this.eToState = INVALID_NODE;
}
};


function BaseNode( aAnimElem, aParentNode, aNodeContext )
{
this.nId = getUniqueId();
this.sClassName = 'BaseNode';

if( !aAnimElem )
log( 'BaseNode(id:' + this.nId + ') constructor: aAnimElem is not valid' );

if( !aNodeContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext is not valid' );

if( !aNodeContext.aContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext.aContext is not valid' );


this.bIsContainer = false;
this.aElement = aAnimElem;
this.aParentNode = aParentNode;
this.aNodeContext = aNodeContext;
this.aContext = aNodeContext.aContext;
this.nStartDelay = aNodeContext.nStartDelay;
this.eCurrentState = UNRESOLVED_NODE;
this.nCurrentStateTransition = 0;
this.aDeactivatingListenerArray = [];
this.aActivationEvent = null;
this.aDeactivationEvent = null;

this.aBegin = null;
this.aDuration = null;
this.aEnd = null;
this.bMainSequenceRootNode = false;
this.bInteractiveSequenceRootNode = false;
this.eFillMode = FILL_MODE_FREEZE;
this.eRestartMode = RESTART_MODE_NEVER;
this.nRepeatCount = undefined;
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
this.bAutoReverse = false;

}
extend( BaseNode, AnimationNode );


BaseNode.prototype.getId = function()
{
return this.nId;
};

BaseNode.prototype.parseElement = function()
{
var aAnimElem = this.aElement;

var sIdAttr = aAnimElem.getAttributeNS( NSS['xml'], 'id' );
if( sIdAttr )
this.aNodeContext.aAnimationNodeMap[ sIdAttr ] = this;

this.aBegin = null;
var sBeginAttr = aAnimElem.getAttributeNS( NSS['smil'], 'begin' );
this.aBegin = new Timing( this, sBeginAttr );
this.aBegin.parse();

this.aEnd = null;
var sEndAttr = aAnimElem.getAttributeNS( NSS['smil'], 'end' );
if( sEndAttr )
{
this.aEnd = new Timing( this, sEndAttr );
this.aEnd.parse();
}

this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
if( this.isContainer() )
this.aDuration = null;
else
this.aDuration = new Duration( 'indefinite' );
}

var sFillAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fill' );
if( sFillAttr && aFillModeInMap[ sFillAttr ])
this.eFillMode = aFillModeInMap[ sFillAttr ];
else
this.eFillMode = FILL_MODE_DEFAULT;

var sRestartAttr = aAnimElem.getAttributeNS( NSS['smil'], 'restart' );
if( sRestartAttr && aRestartModeInMap[ sRestartAttr ] )
this.eRestartMode = aRestartModeInMap[ sRestartAttr ];
else
this.eRestartMode = RESTART_MODE_DEFAULT;

var sRepeatCount = aAnimElem.getAttributeNS( NSS['smil'], 'repeatCount' );
if( !sRepeatCount )
this.nRepeatCount = 1;
else
this.nRepeatCount = parseFloat( sRepeatCount );
if( ( isNaN(this.nRepeatCount) ) && ( sRepeatCount != 'indefinite' ) )
this.nRepeatCount = 1;

this.nAccelerate = 0.0;
var sAccelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accelerate' );
if( sAccelerateAttr )
this.nAccelerate = parseFloat( sAccelerateAttr );
if( isNaN(this.nAccelerate) )
{
sInfo = 'description: ' + this.sTimingDescription + ', ';

sInfo += ', type: ' +  aTimingTypeOutMap[ this.getType() ];
sInfo += ', offset: ' + this.getOffset();
sInfo += ', event base element id: ' + this.getEventBaseElementId();
sInfo += ', timing event type: ' + aEventTriggerOutMap[ this.getEventType() ];
}
else
{
switch( this.getType() )
{
case INDEFINITE_TIMING:
sInfo += 'indefinite';
break;
case OFFSET_TIMING:
sInfo += this.getOffset();
break;
case EVENT_TIMING:
case SYNCBASE_TIMING:
if( this.getEventBaseElementId() )
sInfo += this.getEventBaseElementId() + '.';
sInfo += aEventTriggerOutMap[ this.getEventType() ];
if( this.getOffset() )
{
if( this.getOffset() > 0 )
sInfo += '+';
sInfo += this.getOffset();
}
}
}

return sInfo;
};


function Duration( sDurationAttribute )
{
this.bIndefinite = false;
this.bMedia = false;
this.nValue = undefined;
this.bDefined = false;

if( !sDurationAttribute )
return;

if( sDurationAttribute == 'indefinite' )
this.bIndefinite = true;
else if( sDurationAttribute == 'media' )
this.bMedia = true;
else
{
this.nValue = Timing.parseClockValue( sDurationAttribute );
if( this.nValue <= 0.0 )
this.nValue = 0.001;  // duration must be always greater than 0
}
this.bDefined = true;
}


Duration.prototype.isSet = function()
{
return this.bDefined;
};

Duration.prototype.isIndefinite = function()
{
return this.bIndefinite;
};

Duration.prototype.isMedia = function()
{
return this.bMedia;
};

Duration.prototype.isValue = function()
{
return this.nValue != undefined;
};

Duration.prototype.getValue= function()
{
return this.nValue;
};

Duration.prototype.info= function()
{
var sInfo;

if( this.isIndefinite() )
sInfo = 'indefinite';
else if( this.isMedia() )
sInfo = 'media';
else if( this.getValue() )
sInfo = this.getValue();

return sInfo;
};


function AnimationNode()
{
}

AnimationNode.prototype.init = function() {};
AnimationNode.prototype.resolve = function() {};
AnimationNode.prototype.activate = function() {};
AnimationNode.prototype.deactivate = function() {};
AnimationNode.prototype.end = function() {};
AnimationNode.prototype.getState = function() {};
AnimationNode.prototype.registerDeactivatingListener = function() {};
AnimationNode.prototype.notifyDeactivating = function() {};


function NodeContext( aSlideShowContext )
{
this.aContext = aSlideShowContext;
this.aAnimationNodeMap = null;
this.aAnimatedElementMap = null;
this.aSourceEventElementMap = null;
this.nStartDelay = 0.0;
this.bFirstRun = undefined;
this.bIsInvalid = false;
this.aSlideHeight = HEIGHT;
this.aSlideWidth = WIDTH;
}


NodeContext.prototype.makeSourceEventElement = function( sId, aEventBaseElem )
{
if( !aEventBaseElem )
{
log( 'NodeContext.makeSourceEventElement: event base element is not valid' );
return null;
}

if( !this.aContext.aEventMultiplexer )
{
log( 'NodeContext.makeSourceEventElement: event multiplexer not initialized' );
return null;
}

if( !this.aSourceEventElementMap[ sId ] )
{
this.aSourceEventElementMap[ sId ] = new SourceEventElement( sId, aEventBaseElem, this.aContext.aEventMultiplexer );
}
return this.aSourceEventElementMap[ sId ];
};



var TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.eTimingType = OFFSET_TIMING;
this.nOffset = bPositiveOffset ? TimeInSec : -TimeInSec;
}
}
else
{
var aTimingSplit = [];
bPositiveOffset = true;
if( this.sTimingDescription.indexOf( '+' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '+' );
}
else if( this.sTimingDescription.indexOf( '-' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '-' );
bPositiveOffset = false;
}
else
{
aTimingSplit[0] = this.sTimingDescription;
aTimingSplit[1] = '';
}

if( aTimingSplit[0].indexOf( '.' ) != -1 )
{
var aEventSplit = aTimingSplit[0].split( '.' );
this.sEventBaseElementId = aEventSplit[0];
this.eEventType = getEventTriggerType( aEventSplit[1] );
}
else
{
this.eEventType = getEventTriggerType( aTimingSplit[0] );
}

if( this.eEventType == EVENT_TRIGGER_UNKNOWN )
return;

if( ( this.eEventType == EVENT_TRIGGER_BEGIN_EVENT ) ||
( this.eEventType == EVENT_TRIGGER_END_EVENT ) )
{
this.eTimingType = SYNCBASE_TIMING;
}
else
{
this.eTimingType = EVENT_TIMING;
}

if( aTimingSplit[1] )
{
sClockValue = aTimingSplit[1];
TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.nOffset = ( bPositiveOffset ) ? TimeInSec : -TimeInSec;
}
else
{
this.eTimingType = UNKNOWN_TIMING;
}

}
}
}

};

Timing.parseClockValue = function( sClockValue )
{
if( !sClockValue )
return 0.0;

var nTimeInSec = undefined;

var reFullClockValue = /^([0-9]+):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var rePartialClockValue = /^([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var reTimeCountValue = /^([0-9]+)(.[0-9]+)?(h|min|s|ms)?$/;

if( reFullClockValue.test( sClockValue ) )
{
var aClockTimeParts = reFullClockValue.exec( sClockValue );

var nHours = parseInt( aClockTimeParts[1] );
var nMinutes = parseInt( aClockTimeParts[2] );
var nSeconds = parseInt( aClockTimeParts[3] );
if( aClockTimeParts[4] )
nSeconds += parseFloat( aClockTimeParts[4] );

nTimeInSec = ( ( nHours * 60 ) +  nMinutes ) * 60 + nSeconds;

}
else if( rePartialClockValue.test( sClockValue ) )
{
aClockTimeParts = rePartialClockValue.exec( sClockValue );

nMinutes = parseInt( aClockTimeParts[1] );
nSeconds = parseInt( aClockTimeParts[2] );
if( aClockTimeParts[3] )
nSeconds += parseFloat( aClockTimeParts[3] );

nTimeInSec = nMinutes * 60 + nSeconds;
}
else if( reTimeCountValue.test( sClockValue ) )
{
aClockTimeParts = reTimeCountValue.exec( sClockValue );

var nTimeCount = parseInt( aClockTimeParts[1] );
if( aClockTimeParts[2] )
nTimeCount += parseFloat( aClockTimeParts[2] );

if( aClockTimeParts[3] )
{
if( aClockTimeParts[3] == 'h' )
{
nTimeInSec = nTimeCount * 3600;
}
else if( aClockTimeParts[3] == 'min' )
{
nTimeInSec = nTimeCount * 60;
}
else if( aClockTimeParts[3] == 's' )
{
nTimeInSec = nTimeCount;
}
else if( aClockTimeParts[3] == 'ms' )
{
nTimeInSec = nTimeCount / 1000;
}
}
else
{
nTimeInSec = nTimeCount;
}

}

if( nTimeInSec )
nTimeInSec = parseFloat( nTimeInSec.toFixed( 3 ) );
return nTimeInSec;
};

Timing.prototype.info = function( bVerbose )
{

var sInfo = '';

if( bVerbose )
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

return aSTT;
}

var aStateTransitionTable = createStateTransitionTable();


function getTransitionTable( eRestartMode, eFillMode )
{
if( eRestartMode == RESTART_MODE_DEFAULT )
{
log( 'getTransitionTable: unexpected restart mode: ' + eRestartMode
+ '. Used NEVER instead.');
eRestartMode = RESTART_MODE_NEVER;
}

if( eFillMode == FILL_MODE_DEFAULT ||
eFillMode == FILL_MODE_AUTO )
{
eFillMode = FILL_MODE_REMOVE;
}

return aStateTransitionTable[eRestartMode][eFillMode];
}


var EVENT_TRIGGER_UNKNOWN               = 0;
var EVENT_TRIGGER_ON_SLIDE_BEGIN        = 1; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_SLIDE_END          = 2; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_BEGIN_EVENT           = 3;
var EVENT_TRIGGER_END_EVENT             = 4;
var EVENT_TRIGGER_ON_CLICK              = 5;
var EVENT_TRIGGER_ON_DBL_CLICK          = 6; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_ENTER        = 7; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_LEAVE        = 8; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_NEXT_EFFECT        = 9;
var EVENT_TRIGGER_ON_PREV_EFFECT        = 10;
var EVENT_TRIGGER_REPEAT                = 11; // eslint-disable-line no-unused-vars

var aEventTriggerOutMap = [ 'unknown', 'slideBegin', 'slideEnd', 'begin', 'end', 'click',
'doubleClick', 'mouseEnter', 'mouseLeave', 'next', 'previous', 'repeat' ];


function getEventTriggerType( sEventTrigger )
{
if( sEventTrigger == 'begin' )
return EVENT_TRIGGER_BEGIN_EVENT;
else if( sEventTrigger == 'end' )
return EVENT_TRIGGER_END_EVENT;
else if( sEventTrigger == 'next' )
return EVENT_TRIGGER_ON_NEXT_EFFECT;
else if( sEventTrigger == 'prev' )
return EVENT_TRIGGER_ON_PREV_EFFECT;
else if( sEventTrigger == 'click' )
return EVENT_TRIGGER_ON_CLICK;
else
return EVENT_TRIGGER_UNKNOWN;
}


var UNKNOWN_TIMING          = 0;
var OFFSET_TIMING           = 1;
var WALLCLOCK_TIMING        = 2; // eslint-disable-line no-unused-vars
var INDEFINITE_TIMING       = 3;
var EVENT_TIMING            = 4;
var SYNCBASE_TIMING         = 5;
var MEDIA_TIMING            = 6; // eslint-disable-line no-unused-vars

var aTimingTypeOutMap = [ 'unknown', 'offset', 'wallclock', 'indefinite', 'event', 'syncbase', 'media' ];


var CHARCODE_PLUS       = '+'.charCodeAt(0);
var CHARCODE_MINUS      = '-'.charCodeAt(0);
var CHARCODE_0          = '0'.charCodeAt(0);
var CHARCODE_9          = '9'.charCodeAt(0);


function Timing( aAnimationNode, sTimingAttribute )
{
this.aAnimationNode = aAnimationNode;     // the node, the timing attribute belongs to
this.sTimingDescription = removeWhiteSpaces( sTimingAttribute );
this.eTimingType = UNKNOWN_TIMING;
this.nOffset = 0.0;                       // in seconds
this.sEventBaseElementId = '';            // the element id for event based timing
this.eEventType = EVENT_TRIGGER_UNKNOWN;  // the event type
}

Timing.prototype.getAnimationNode = function()
{
return this.aAnimationNode;
};

Timing.prototype.getType = function()
{
return this.eTimingType;
};

Timing.prototype.getOffset = function()
{
return this.nOffset;
};

Timing.prototype.getEventBaseElementId = function()
{
return this.sEventBaseElementId;
};

Timing.prototype.getEventType = function()
{
return this.eEventType;
};

Timing.prototype.parse = function()
{
if( !this.sTimingDescription )
{
this.eTimingType = OFFSET_TIMING;
return;
}

if( this.sTimingDescription == 'indefinite' )
this.eTimingType = INDEFINITE_TIMING;
else
{
var nFirstCharCode = this.sTimingDescription.charCodeAt(0);
var bPositiveOffset = !( nFirstCharCode == CHARCODE_MINUS );
if ( ( nFirstCharCode == CHARCODE_PLUS ) ||
( nFirstCharCode == CHARCODE_MINUS ) ||
( ( nFirstCharCode >= CHARCODE_0 ) && ( nFirstCharCode <= CHARCODE_9 ) ) )
{
var sClockValue
= ( ( nFirstCharCode == CHARCODE_PLUS ) || ( nFirstCharCode == CHARCODE_MINUS ) )
? this.sTimingDescription.substr( 1 )
: this.sTimingDescription;
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SLIDEWIPE_TRANSITION] = {};
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FADE_TRANSITION] = {};
aTransitionInfoTable[FADE_TRANSITION][CROSSFADE_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADETOCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEFROMCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEOVERCOLOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[RANDOMBARWIPE_TRANSITION] = {};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION] = {};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][ACROSS_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[DISSOLVE_TRANSITION] = {};
aTransitionInfoTable[DISSOLVE_TRANSITION][DEFAULT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};


function createStateTransitionTable()
{
var aSTT = {};

aSTT[RESTART_MODE_NEVER] = {};
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE] = {};
aSTT[RESTART_MODE_ALWAYS] = {};

var aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = ENDED_NODE;    // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = ENDED_NODE;
aTable[ENDED_NODE]          = ENDED_NODE;   // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][BOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[PINWHEELWIPE_TRANSITION] = {};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][ONEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEVERTICAL_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][THREEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][FOURBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][EIGHTBLADE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};

aTransitionInfoTable[PUSHWIPE_TRANSITION] = {};
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION] = {};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISERIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISELEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[ELLIPSEWIPE_TRANSITION] = {};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][CIRCLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CLOCKWIPE_TRANSITION] = {};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETWELVE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETHREE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISESIX_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISENINE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[VEEWIPE_TRANSITION] = {};
aTransitionInfoTable[VEEWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][UP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FANWIPE_TRANSITION] = {};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][TOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
aTransitionInfoTable[BARWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[WATERFALLWIPE_TRANSITION] = {};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][RIGHTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][LEFTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FOURBOXWIPE_TRANSITION] = {};
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSIN_TRANS_SUBTYPE] =
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSOUT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNDOORWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 90.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALTOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': -45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION] = {};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEBARNDOOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEDIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1,
'scaleY': 1,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION] = {};
aTransitionInfoTable[IRISWIPE_TRANSITION][RECTANGLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION][DIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[ZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARWIPE_TRANSITION] = {};
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SPIRALWIPE_TRANSITION] = {};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
{
'class' : TRANSITION_INVALID,
'rotationAngle' : 0.0,
'scaleX' : 0.0,
'scaleY' : 0.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[SNAKEWIPE_TRANSITION] = {};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
}

aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALLEFTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALRIGHTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
var COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE    = 58; // 45
var CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE          = 59; // 46
var COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE      = 60; // 47
var VERTICALLEFT_TRANS_SUBTYPE                  = 61; // 93
var VERTICALRIGHT_TRANS_SUBTYPE                 = 62; // 94
var HORIZONTALLEFT_TRANS_SUBTYPE                = 63; // 95
var HORIZONTALRIGHT_TRANS_SUBTYPE               = 64; // 96
var TOPLEFTCLOCKWISE_TRANS_SUBTYPE              = 65; // 69
var TOPRIGHTCLOCKWISE_TRANS_SUBTYPE             = 66; // 70
var BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE          = 67; // 71
var BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE           = 68; // 72
var TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE       = 69; // 73
var TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE      = 70; // 74
var BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE   = 71; // 75
var BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE    = 72; // 76
var DOUBLEBARNDOOR_TRANS_SUBTYPE                = 73; // 17
var DOUBLEDIAMOND_TRANS_SUBTYPE                 = 74; // 18
var VERTICALTOPSAME_TRANS_SUBTYPE               = 75; // 77
var VERTICALBOTTOMSAME_TRANS_SUBTYPE            = 76; // 78
var VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 77; // 79
var VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 78; // 80
var HORIZONTALLEFTSAME_TRANS_SUBTYPE            = 79; // 81
var HORIZONTALRIGHTSAME_TRANS_SUBTYPE           = 80; // 82
var HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE     = 81; // 83
var HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE    = 82; // 84
var DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 83; // 85
var DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 84; // 86
var TWOBOXTOP_TRANS_SUBTYPE                     = 85; // 87
var TWOBOXBOTTOM_TRANS_SUBTYPE                  = 86; // 88
var TWOBOXLEFT_TRANS_SUBTYPE                    = 87; // 89
var TWOBOXRIGHT_TRANS_SUBTYPE                   = 88; // 90
var FOURBOXVERTICAL_TRANS_SUBTYPE               = 89; // 91
var FOURBOXHORIZONTAL_TRANS_SUBTYPE             = 90; // 92

var aTransitionSubtypeInMap = {
'default'                       : DEFAULT_TRANS_SUBTYPE,
'leftToRight'                   : LEFTTORIGHT_TRANS_SUBTYPE,
'topToBottom'                   : TOPTOBOTTOM_TRANS_SUBTYPE,
'cornersIn'                     : CORNERSIN_TRANS_SUBTYPE,
'cornersOut'                    : CORNERSOUT_TRANS_SUBTYPE,
'vertical'                      : VERTICAL_TRANS_SUBTYPE,
'centerTop'                     : CENTERTOP_TRANS_SUBTYPE,
'centerRight'                   : CENTERRIGHT_TRANS_SUBTYPE,
'top'                           : TOP_TRANS_SUBTYPE,
'right'                         : RIGHT_TRANS_SUBTYPE,
'bottom'                        : BOTTOM_TRANS_SUBTYPE,
'left'                          : LEFT_TRANS_SUBTYPE,
'horizontal'                    : HORIZONTAL_TRANS_SUBTYPE,
'down'                          : DOWN_TRANS_SUBTYPE,
'circle'                        : CIRCLE_TRANS_SUBTYPE,
'clockwiseTwelve'               : CLOCKWISETWELVE_TRANS_SUBTYPE,
'clockwiseThree'                : CLOCKWISETHREE_TRANS_SUBTYPE,
'clockwiseSix'                  : CLOCKWISESIX_TRANS_SUBTYPE,
'clockwiseNine'                 : CLOCKWISENINE_TRANS_SUBTYPE,
'clockwiseRight'                : CLOCKWISERIGHT_TRANS_SUBTYPE,
'clockwiseTop'                  : CLOCKWISETOP_TRANS_SUBTYPE,
'clockwiseBottom'               : CLOCKWISEBOTTOM_TRANS_SUBTYPE,
'clockwiseLeft'                 : CLOCKWISELEFT_TRANS_SUBTYPE,
'clockwiseTopLeft'              : CLOCKWISETOPLEFT_TRANS_SUBTYPE,
'counterClockwiseBottomLeft'    : COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE,
'clockwiseBottomRight'          : CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE,
'counterClockwiseTopRight'      : COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE,
'twoBladeVertical'              : TWOBLADEVERTICAL_TRANS_SUBTYPE,
'twoBladeHorizontal'            : TWOBLADEHORIZONTAL_TRANS_SUBTYPE,
'fourBlade'                     : FOURBLADE_TRANS_SUBTYPE,
'fromLeft'                      : FROMLEFT_TRANS_SUBTYPE,
'fromTop'                       : FROMTOP_TRANS_SUBTYPE,
'fromRight'                     : FROMRIGHT_TRANS_SUBTYPE,
'fromBottom'                    : FROMBOTTOM_TRANS_SUBTYPE,
'crossfade'                     : CROSSFADE_TRANS_SUBTYPE,
'fadeToColor'                   : FADETOCOLOR_TRANS_SUBTYPE,
'fadeFromColor'                 : FADEFROMCOLOR_TRANS_SUBTYPE,
'fadeOverColor'                 : FADEOVERCOLOR_TRANS_SUBTYPE,
'threeBlade'                    : THREEBLADE_TRANS_SUBTYPE,
'eightBlade'                    : EIGHTBLADE_TRANS_SUBTYPE,
'oneBlade'                      : ONEBLADE_TRANS_SUBTYPE,
'across'                        : ACROSS_TRANS_SUBTYPE,
'topLeftVertical'               : TOPLEFTVERTICAL_TRANS_SUBTYPE,
'topLeftHorizontal'             : TOPLEFTHORIZONTAL_TRANS_SUBTYPE,
'topLeftDiagonal'               : TOPLEFTDIAGONAL_TRANS_SUBTYPE,
'topRightDiagonal'              : TOPRIGHTDIAGONAL_TRANS_SUBTYPE,
'bottomRightDiagonal'           : BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE,
'topLeftClockwise'              : TOPLEFTCLOCKWISE_TRANS_SUBTYPE,
'topRightClockwise'             : TOPRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomRightClockwise'          : BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftClockwise'           : BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE,
'topLeftCounterClockwise'       : TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'topRightCounterClockwise'      : TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomRightCounterClockwise'   : BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftCounterClockwise'    : BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftDiagonal'            : BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE,
'rectangle'                     : RECTANGLE_TRANS_SUBTYPE,
'diamond'                       : DIAMOND_TRANS_SUBTYPE,
'topLeft'                       : TOPLEFT_TRANS_SUBTYPE,
'topRight'                      : TOPRIGHT_TRANS_SUBTYPE,
'bottomRight'                   : BOTTOMRIGHT_TRANS_SUBTYPE,
'bottomLeft'                    : BOTTOMLEFT_TRANS_SUBTYPE,
'topCenter'                     : TOPCENTER_TRANS_SUBTYPE,
'rightCenter'                   : RIGHTCENTER_TRANS_SUBTYPE,
'bottomCenter'                  : BOTTOMCENTER_TRANS_SUBTYPE,
'leftCenter'                    : LEFTCENTER_TRANS_SUBTYPE,
'up'                            : UP_TRANS_SUBTYPE,
'diagonalBottomLeft'            : DIAGONALBOTTOMLEFT_TRANS_SUBTYPE,
'diagonalTopLeft'               : DIAGONALTOPLEFT_TRANS_SUBTYPE,
'verticalLeft'                  : VERTICALLEFT_TRANS_SUBTYPE,
'verticalRight'                 : VERTICALRIGHT_TRANS_SUBTYPE,
'horizontalLeft'                : HORIZONTALLEFT_TRANS_SUBTYPE,
'horizontalRight'               : HORIZONTALRIGHT_TRANS_SUBTYPE,
'doubleBarnDoor'                : DOUBLEBARNDOOR_TRANS_SUBTYPE,
'doubleDiamond'                 : DOUBLEDIAMOND_TRANS_SUBTYPE,
'verticalTopSame'               : VERTICALTOPSAME_TRANS_SUBTYPE,
'verticalBottomSame'            : VERTICALBOTTOMSAME_TRANS_SUBTYPE,
'verticalTopLeftOpposite'       : VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'verticalBottomLeftOpposite'    : VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalLeftSame'            : HORIZONTALLEFTSAME_TRANS_SUBTYPE,
'horizontalRightSame'           : HORIZONTALRIGHTSAME_TRANS_SUBTYPE,
'horizontalTopLeftOpposite'     : HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalTopRightOpposite'    : HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE,
'diagonalBottomLeftOpposite'    : DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'diagonalTopLeftOpposite'       : DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'twoBoxTop'                     : TWOBOXTOP_TRANS_SUBTYPE,
'twoBoxBottom'                  : TWOBOXBOTTOM_TRANS_SUBTYPE,
'twoBoxLeft'                    : TWOBOXLEFT_TRANS_SUBTYPE,
'twoBoxRight'                   : TWOBOXRIGHT_TRANS_SUBTYPE,
'fourBoxVertical'               : FOURBOXVERTICAL_TRANS_SUBTYPE,
'fourBoxHorizontal'             : FOURBOXHORIZONTAL_TRANS_SUBTYPE
};

var TRANSITION_MODE_IN  = 1;
var TRANSITION_MODE_OUT = 0;

var aTransitionModeOutMap = [ 'out', 'in' ];


var REVERSEMETHOD_IGNORE                    = 0;
var REVERSEMETHOD_INVERT_SWEEP              = 1;
var REVERSEMETHOD_SUBTRACT_POLYGON          = 2;
var REVERSEMETHOD_SUBTRACT_AND_INVERT       = 3;
var REVERSEMETHOD_ROTATE_180                = 4;
var REVERSEMETHOD_FLIP_X                    = 5;
var REVERSEMETHOD_FLIP_Y                    = 6;

var aReverseMethodOutMap = ['ignore', 'invert sweep', 'subtract polygon',
'subtract and invert', 'rotate 180', 'flip x', 'flip y'];


var aTransitionInfoTable = {};

aTransitionInfoTable[0] = {};
aTransitionInfoTable[0][0] =
'y':                {   'type':         NUMBER_PROPERTY,
'get':          'getY',
'set':          'setY',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'fill':             {   'type':         ENUM_PROPERTY,
'get':          'getFillStyle',
'set':          'setFillStyle'                  },

'stroke':           {   'type':         ENUM_PROPERTY,
'get':          'getStrokeStyle',
'set':          'setStrokeStyle'                },

'visibility':       {   'type':         ENUM_PROPERTY,
'get':          'getVisibility',
'set':          'setVisibility'                 },

'fill-color':       {   'type':         COLOR_PROPERTY,
'get':          'getFillColor',
'set':          'setFillColor'                  },

'stroke-color':     {   'type':         COLOR_PROPERTY,
'get':          'getStrokeColor',
'set':          'setStrokeColor'                },

'color':            {   'type':         COLOR_PROPERTY,
'get':          'getFontColor',
'set':          'setFontColor'                  }

};


var TRANSITION_INVALID              = 0;    // Invalid type
var TRANSITION_CLIP_POLYPOLYGON     = 1;    // Transition expressed by parametric clip polygon
var TRANSITION_SPECIAL              = 2;    // Transition expressed by hand-crafted function


var BARWIPE_TRANSITION              = 1;
var BOXWIPE_TRANSITION              = 2;
var FOURBOXWIPE_TRANSITION          = 3;
var ELLIPSEWIPE_TRANSITION          = 4; // 17
var CLOCKWIPE_TRANSITION            = 5; // 22
var PINWHEELWIPE_TRANSITION         = 6; // 23
var PUSHWIPE_TRANSITION             = 7; // 35
var SLIDEWIPE_TRANSITION            = 8; // 36
var FADE_TRANSITION                 = 9; // 37
var RANDOMBARWIPE_TRANSITION        = 10; // 38
var CHECKERBOARDWIPE_TRANSITION     = 11; // 39
var DISSOLVE_TRANSITION             = 12; // 40
var SNAKEWIPE_TRANSITION            = 13; // 30
var PARALLELSNAKESWIPE_TRANSITION   = 14; // 32
var IRISWIPE_TRANSITION             = 15; // 12
var BARNDOORWIPE_TRANSITION         = 16; // 4
var VEEWIPE_TRANSITION              = 17; // 8
var ZIGZAGWIPE_TRANSITION           = 18; // 10
var BARNZIGZAGWIPE_TRANSITION       = 19; // 11
var FANWIPE_TRANSITION              = 20; // 25
var SINGLESWEEPWIPE_TRANSITION      = 21; // 24
var WATERFALLWIPE_TRANSITION        = 22; // 34
var SPIRALWIPE_TRANSITION           = 23; // 31
var MISCDIAGONALWIPE_TRANSITION     = 24; // 7
var BOXSNAKESWIPE_TRANSITION        = 25; // 33

var aTransitionTypeInMap = {
'barWipe'           : BARWIPE_TRANSITION,
'boxWipe'           : BOXWIPE_TRANSITION,
'barnDoorWipe'      : BARNDOORWIPE_TRANSITION,
'fourBoxWipe'       : FOURBOXWIPE_TRANSITION,
'ellipseWipe'       : ELLIPSEWIPE_TRANSITION,
'clockWipe'         : CLOCKWIPE_TRANSITION,
'pinWheelWipe'      : PINWHEELWIPE_TRANSITION,
'miscDiagonalWipe'  : MISCDIAGONALWIPE_TRANSITION,
'pushWipe'          : PUSHWIPE_TRANSITION,
'slideWipe'         : SLIDEWIPE_TRANSITION,
'fade'              : FADE_TRANSITION,
'fanWipe'           : FANWIPE_TRANSITION,
'randomBarWipe'     : RANDOMBARWIPE_TRANSITION,
'checkerBoardWipe'  : CHECKERBOARDWIPE_TRANSITION,
'dissolve'          : DISSOLVE_TRANSITION,
'singleSweepWipe'   : SINGLESWEEPWIPE_TRANSITION,
'snakeWipe'         : SNAKEWIPE_TRANSITION,
'parallelSnakesWipe': PARALLELSNAKESWIPE_TRANSITION,
'spiralWipe'        : SPIRALWIPE_TRANSITION,
'boxSnakesWipe'     : BOXSNAKESWIPE_TRANSITION,
'irisWipe'          : IRISWIPE_TRANSITION,
'veeWipe'           : VEEWIPE_TRANSITION,
'zigZagWipe'        : ZIGZAGWIPE_TRANSITION,
'barnZigZagWipe'    : BARNZIGZAGWIPE_TRANSITION,
'waterfallWipe'     : WATERFALLWIPE_TRANSITION
};

var DEFAULT_TRANS_SUBTYPE                       = 0;
var LEFTTORIGHT_TRANS_SUBTYPE                   = 1;
var TOPTOBOTTOM_TRANS_SUBTYPE                   = 2;
var CORNERSIN_TRANS_SUBTYPE                     = 3; // 11
var CORNERSOUT_TRANS_SUBTYPE                    = 4;
var VERTICAL_TRANS_SUBTYPE                      = 5;
var HORIZONTAL_TRANS_SUBTYPE                    = 6; // 14
var DOWN_TRANS_SUBTYPE                          = 7; // 19
var CIRCLE_TRANS_SUBTYPE                        = 8; // 27
var CLOCKWISETWELVE_TRANS_SUBTYPE               = 9; // 33
var CLOCKWISETHREE_TRANS_SUBTYPE                = 10;
var CLOCKWISESIX_TRANS_SUBTYPE                  = 11;
var CLOCKWISENINE_TRANS_SUBTYPE                 = 12;
var TWOBLADEVERTICAL_TRANS_SUBTYPE              = 13;
var TWOBLADEHORIZONTAL_TRANS_SUBTYPE            = 14;
var FOURBLADE_TRANS_SUBTYPE                     = 15; // 39
var FROMLEFT_TRANS_SUBTYPE                      = 16; // 97
var FROMTOP_TRANS_SUBTYPE                       = 17;
var FROMRIGHT_TRANS_SUBTYPE                     = 18;
var FROMBOTTOM_TRANS_SUBTYPE                    = 19;
var CROSSFADE_TRANS_SUBTYPE                     = 20;
var FADETOCOLOR_TRANS_SUBTYPE                   = 21;
var FADEFROMCOLOR_TRANS_SUBTYPE                 = 22;
var FADEOVERCOLOR_TRANS_SUBTYPE                 = 23;
var THREEBLADE_TRANS_SUBTYPE                    = 24;
var EIGHTBLADE_TRANS_SUBTYPE                    = 25;
var ONEBLADE_TRANS_SUBTYPE                      = 26; // 107
var ACROSS_TRANS_SUBTYPE                        = 27;
var TOPLEFTVERTICAL_TRANS_SUBTYPE               = 28; // 109
var TOPLEFTHORIZONTAL_TRANS_SUBTYPE             = 29; // 64
var TOPLEFTDIAGONAL_TRANS_SUBTYPE               = 30; // 65
var TOPRIGHTDIAGONAL_TRANS_SUBTYPE              = 31; // 66
var BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE           = 32; // 67
var BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE            = 33; // 68
var RECTANGLE_TRANS_SUBTYPE                     = 34; // 101
var DIAMOND_TRANS_SUBTYPE                       = 35; // 102
var TOPLEFT_TRANS_SUBTYPE                       = 36; // 3
var TOPRIGHT_TRANS_SUBTYPE                      = 37; // 4
var BOTTOMRIGHT_TRANS_SUBTYPE                   = 38; // 5
var BOTTOMLEFT_TRANS_SUBTYPE                    = 39; // 6
var TOPCENTER_TRANS_SUBTYPE                     = 40; // 7
var RIGHTCENTER_TRANS_SUBTYPE                   = 41; // 8
var BOTTOMCENTER_TRANS_SUBTYPE                  = 42; // 9
var LEFTCENTER_TRANS_SUBTYPE                    = 43; // 10
var LEFT_TRANS_SUBTYPE                          = 44; // 20
var UP_TRANS_SUBTYPE                            = 45; // 21
var RIGHT_TRANS_SUBTYPE                         = 46; // 22
var DIAGONALBOTTOMLEFT_TRANS_SUBTYPE            = 47; // 15
var DIAGONALTOPLEFT_TRANS_SUBTYPE               = 48; // 16
var CENTERTOP_TRANS_SUBTYPE                     = 49; // 48
var CENTERRIGHT_TRANS_SUBTYPE                   = 50; // 49
var TOP_TRANS_SUBTYPE                           = 51; // 50
var BOTTOM_TRANS_SUBTYPE                        = 52; // 52
var CLOCKWISETOP_TRANS_SUBTYPE                  = 53; // 40
var CLOCKWISERIGHT_TRANS_SUBTYPE                = 54; // 41
var CLOCKWISEBOTTOM_TRANS_SUBTYPE               = 55; // 42
var CLOCKWISELEFT_TRANS_SUBTYPE                 = 56; // 43
var CLOCKWISETOPLEFT_TRANS_SUBTYPE              = 57; // 44
'interactive-sequence'      : IMPRESS_INTERACTIVE_SEQUENCE_NODE
};

var aImpressNodeTypeOutMap = [ 'default', 'on-click', 'with-previous', 'after-previous',
'main-sequence', 'timing-root', 'interactive-sequence' ];


var aPresetClassInMap = {};


var aPresetIdInMap = {};


var RESTART_MODE_DEFAULT            = 0;
var RESTART_MODE_INHERIT            = 0; // eslint-disable-line no-unused-vars
var RESTART_MODE_ALWAYS             = 1;
var RESTART_MODE_WHEN_NOT_ACTIVE    = 2;
var RESTART_MODE_NEVER              = 3;

var aRestartModeInMap = {
'inherit'       : RESTART_MODE_DEFAULT,
'always'        : RESTART_MODE_ALWAYS,
'whenNotActive' : RESTART_MODE_WHEN_NOT_ACTIVE,
'never'         : RESTART_MODE_NEVER
};

var aRestartModeOutMap = [ 'inherit','always', 'whenNotActive', 'never' ];


var FILL_MODE_DEFAULT           = 0;
var FILL_MODE_INHERIT           = 0; // eslint-disable-line no-unused-vars
var FILL_MODE_REMOVE            = 1;
var FILL_MODE_FREEZE            = 2;
var FILL_MODE_HOLD              = 3;
var FILL_MODE_TRANSITION        = 4;
var FILL_MODE_AUTO              = 5;

var aFillModeInMap = {
'inherit'       : FILL_MODE_DEFAULT,
'remove'        : FILL_MODE_REMOVE,
'freeze'        : FILL_MODE_FREEZE,
'hold'          : FILL_MODE_HOLD,
'transition'    : FILL_MODE_TRANSITION,
'auto'          : FILL_MODE_AUTO
};

var aFillModeOutMap = [ 'inherit', 'remove', 'freeze', 'hold', 'transition', 'auto' ];


var ADDITIVE_MODE_UNKNOWN       = 0; // eslint-disable-line no-unused-vars
var ADDITIVE_MODE_BASE          = 1;
var ADDITIVE_MODE_SUM           = 2;
var ADDITIVE_MODE_REPLACE       = 3;
var ADDITIVE_MODE_MULTIPLY      = 4;
var ADDITIVE_MODE_NONE          = 5;

var aAddittiveModeInMap = {
'base'          : ADDITIVE_MODE_BASE,
'sum'           : ADDITIVE_MODE_SUM,
'replace'       : ADDITIVE_MODE_REPLACE,
'multiply'      : ADDITIVE_MODE_MULTIPLY,
'none'          : ADDITIVE_MODE_NONE
};

var aAddittiveModeOutMap = [ 'unknown', 'base', 'sum', 'replace', 'multiply', 'none' ];


var ACCUMULATE_MODE_NONE        = 0;
var ACCUMULATE_MODE_SUM         = 1;

var aAccumulateModeOutMap = [ 'none', 'sum' ];

var CALC_MODE_DISCRETE          = 1;
var CALC_MODE_LINEAR            = 2;
var CALC_MODE_PACED             = 3;
var CALC_MODE_SPLINE            = 4;

var aCalcModeInMap = {
'discrete'      : CALC_MODE_DISCRETE,
'linear'        : CALC_MODE_LINEAR,
'paced'         : CALC_MODE_PACED,
'spline'        : CALC_MODE_SPLINE
};

var aCalcModeOutMap = [ 'unknown', 'discrete', 'linear', 'paced', 'spline' ];


var COLOR_SPACE_RGB = 0;
var COLOR_SPACE_HSL = 1;

var aColorSpaceInMap = { 'rgb': COLOR_SPACE_RGB, 'hsl': COLOR_SPACE_HSL };

var aColorSpaceOutMap = [ 'rgb', 'hsl' ];


var CLOCKWISE               = 0;
var COUNTERCLOCKWISE        = 1;

var aClockDirectionInMap = { 'clockwise': CLOCKWISE, 'counter-clockwise': COUNTERCLOCKWISE };

var aClockDirectionOutMap = [ 'clockwise', 'counter-clockwise' ];


var UNKNOWN_PROPERTY        = 0; // eslint-disable-line no-unused-vars
var NUMBER_PROPERTY         = 1;
var ENUM_PROPERTY           = 2;
var COLOR_PROPERTY          = 3;
var STRING_PROPERTY         = 4;
var BOOL_PROPERTY           = 5;
var TUPLE_NUMBER_PROPERTY   = 6;

var aValueTypeOutMap = [ 'unknown', 'number', 'enum', 'color', 'string', 'boolean' ];


var aAttributeMap =
{
'height':           {   'type':         NUMBER_PROPERTY,
'get':          'getHeight',
'set':          'setHeight',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'opacity':          {   'type':         NUMBER_PROPERTY,
'get':          'getOpacity',
'set':          'setOpacity'                    },

'scale':           {   'type':          TUPLE_NUMBER_PROPERTY,
'get':          'getSize',
'set':          'setSize'                       },

'translate':       {   'type':          TUPLE_NUMBER_PROPERTY,
'get':          'getPos',
'set':          'setPos'                        },

'rotate':           {   'type':         NUMBER_PROPERTY,
'get':          'getRotationAngle',
'set':          'setRotationAngle'              },

'width':            {   'type':         NUMBER_PROPERTY,
'get':          'getWidth',
'set':          'setWidth',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

'x':                {   'type':         NUMBER_PROPERTY,
'get':          'getX',
'set':          'setX',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

default:
log( 'SVGPathSeg.changeOrientation: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
return null;
}
}
}
else throw e;
}

function SVGPathMatrixTransform( aPath, aSVGMatrix )
{
var nX = aPath.x;
aPath.x = aSVGMatrix.a * nX + aSVGMatrix.c * aPath.y + aSVGMatrix.e;
aPath.y = aSVGMatrix.b * nX + aSVGMatrix.d * aPath.y + aSVGMatrix.f;
}


function PriorityQueue( aCompareFunc )
{
this.aSequence = [];
this.aCompareFunc = aCompareFunc;
}

PriorityQueue.prototype.clone = function()
{
var aCopy = new PriorityQueue( this.aCompareFunc );
var src = this.aSequence;
var dest = [];
var i, l;
for( i = 0, l = src.length; i < l; ++i )
{
if( i in src )
{
dest.push( src[i] );
}
}
aCopy.aSequence = dest;
return aCopy;
};

PriorityQueue.prototype.top = function()
{
return this.aSequence[this.aSequence.length - 1];
};

PriorityQueue.prototype.isEmpty = function()
{
return ( this.aSequence.length === 0 );
};

PriorityQueue.prototype.push = function( aValue )
{
this.aSequence.unshift( aValue );
this.aSequence.sort(this.aCompareFunc);
};

PriorityQueue.prototype.clear = function()
{
this.aSequence = [];
};

PriorityQueue.prototype.pop = function()
{
return this.aSequence.pop();
};


var ANIMATION_NODE_CUSTOM               = 0;
var ANIMATION_NODE_PAR                  = 1;
var ANIMATION_NODE_SEQ                  = 2;
var ANIMATION_NODE_ITERATE              = 3;
var ANIMATION_NODE_ANIMATE              = 4;
var ANIMATION_NODE_SET                  = 5;
var ANIMATION_NODE_ANIMATEMOTION        = 6;
var ANIMATION_NODE_ANIMATECOLOR         = 7;
var ANIMATION_NODE_ANIMATETRANSFORM     = 8;
var ANIMATION_NODE_TRANSITIONFILTER     = 9;
var ANIMATION_NODE_AUDIO                = 10;
var ANIMATION_NODE_COMMAND              = 11;

var aAnimationNodeTypeInMap = {
'par'               : ANIMATION_NODE_PAR,
'seq'               : ANIMATION_NODE_SEQ,
'iterate'           : ANIMATION_NODE_ITERATE,
'animate'           : ANIMATION_NODE_ANIMATE,
'set'               : ANIMATION_NODE_SET,
'animatemotion'     : ANIMATION_NODE_ANIMATEMOTION,
'animatecolor'      : ANIMATION_NODE_ANIMATECOLOR,
'animatetransform'  : ANIMATION_NODE_ANIMATETRANSFORM,
'transitionfilter'  : ANIMATION_NODE_TRANSITIONFILTER,
'audio'             : ANIMATION_NODE_AUDIO,
'command'           : ANIMATION_NODE_COMMAND
};


function getAnimationElementType( aElement )
{
var sName = aElement.localName.toLowerCase();

if( sName && aAnimationNodeTypeInMap[ sName ] )
return aAnimationNodeTypeInMap[ sName ];
else
return ANIMATION_NODE_CUSTOM;
}


var INVALID_NODE                = 0;
var UNRESOLVED_NODE             = 1;
var RESOLVED_NODE               = 2;
var ACTIVE_NODE                 = 4;
var FROZEN_NODE                 = 8;
var ENDED_NODE                  = 16;

function getNodeStateName( eNodeState )
{
switch( eNodeState )
{
case INVALID_NODE:
return 'INVALID';
case UNRESOLVED_NODE:
return 'UNRESOLVED';
case RESOLVED_NODE:
return 'RESOLVED';
case ACTIVE_NODE:
return 'ACTIVE';
case FROZEN_NODE:
return 'FROZEN';
case ENDED_NODE:
return 'ENDED';
default:
return 'UNKNOWN';
}
}


var IMPRESS_DEFAULT_NODE                    = 0;
var IMPRESS_ON_CLICK_NODE                   = 1;
var IMPRESS_WITH_PREVIOUS_NODE              = 2;
var IMPRESS_AFTER_PREVIOUS_NODE             = 3;
var IMPRESS_MAIN_SEQUENCE_NODE              = 4;
var IMPRESS_TIMING_ROOT_NODE                = 5;
var IMPRESS_INTERACTIVE_SEQUENCE_NODE       = 6;

var aImpressNodeTypeInMap = {
'on-click'                  : IMPRESS_ON_CLICK_NODE,
'with-previous'             : IMPRESS_WITH_PREVIOUS_NODE,
'after-previous'            : IMPRESS_AFTER_PREVIOUS_NODE,
'main-sequence'             : IMPRESS_MAIN_SEQUENCE_NODE,
'timing-root'               : IMPRESS_TIMING_ROOT_NODE,

var aPathSeg = aPathSegList.getItem( 0 );
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.removeItem( 0 );
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList.getItem( i );
var aPoint = aPathSeg.changeOrientation( nCurrentX, nCurrentY );
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
}


for( i = nLength - 2; i >= 0; --i )
{
aPathSeg = aPathSegList.removeItem( i );
aPathSegList.appendItem( aPathSeg );
}

var aMovePathSeg = this.createSVGPathSegMovetoAbs( nCurrentX, nCurrentY );
aPathSegList.insertItemBefore( aMovePathSeg, 0 );

};


try
{   // Firefox, Google Chrome, Internet Explorer, Safari.

SVGPathSegMovetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegLinetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegCurvetoQuadraticAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
};

SVGPathSegCurvetoCubicAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
};


SVGPathSegMovetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegLinetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegCurvetoQuadraticAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegCurvetoCubicAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
return aPoint;
};

}
catch( e )
{   // Opera

if( e.name == 'ReferenceError' )
{
SVGPathSeg.prototype.matrixTransform = function( aSVGMatrix )
{
var nX;
switch( this.pathSegTypeAsLetter )
{
case 'C':
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
case 'Q':
nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
case 'M':
case 'L':
SVGPathMatrixTransform( this, aSVGMatrix );
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
}
};

SVGPathSeg.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
switch( this.pathSegTypeAsLetter )
{
case 'C':
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;

var nHue = this.nHue % 360;
if( nHue < 0 ) nHue += 360;
var nSaturation =  clamp( this.nSaturation, 0.0, 1.0 );
var nLuminance = clamp( this.nLuminance, 0.0, 1.0 );


if( nSaturation === 0 )
{
return new RGBColor( nLuminance, nLuminance, nLuminance );
}

var nVal1 = ( nLuminance <= 0.5 ) ?
( nLuminance * (1.0 + nSaturation) ) :
( nLuminance + nSaturation - nLuminance * nSaturation );

var nVal2 = 2.0 * nLuminance - nVal1;

var nRed    = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue + 120 );
var nGreen  = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue );
var nBlue   = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue - 120 );

return new RGBColor( nRed, nGreen, nBlue );
};

HSLColor.hsl2rgbHelper = function( nValue1, nValue2, nHue )
{
nHue = nHue % 360;
if( nHue < 0 )
nHue += 360;

if( nHue < 60.0 )
return nValue1 + ( nValue2 - nValue1 ) * nHue / 60.0;
else if( nHue < 180.0 )
return nValue2;
else if( nHue < 240.0 )
return ( nValue1 + ( nValue2 - nValue1 ) * ( 240.0 - nHue ) / 60.0 );
else
return nValue1;
};

HSLColor.interpolate = function( aFrom, aTo, nT, bCCW )
{
var nS = 1.0 - nT;

var nHue = 0.0;
if( aFrom.nHue <= aTo.nHue && !bCCW )
{
nHue = nS * (aFrom.nHue + 360.0) + nT * aTo.nHue;
}
else if( aFrom.nHue > aTo.nHue && bCCW )
{
nHue = nS * aFrom.nHue + nT * (aTo.nHue + 360.0);
}
else
{
nHue = nS * aFrom.nHue + nT * aTo.nHue;
}

var nSaturation = nS * aFrom.nSaturation + nT * aTo.nSaturation;
var nLuminance = nS * aFrom.nLuminance + nT * aTo.nLuminance;

return new HSLColor( nHue, nSaturation, nLuminance );
};


var SVGIdentityMatrix = document.documentElement.createSVGMatrix();

SVGMatrix.prototype.setToIdentity = function()
{
this.a = this.d = 1;
this.b = this.c = this.d = this.e = 0;
};

SVGMatrix.prototype.setToRotationAroundPoint = function( nX, nY, nAngle )
{
nAngle = Math.PI * nAngle / 180;
var nSin = Math.sin( nAngle );
var nCos = Math.cos( nAngle );

this.a = nCos; this.c = -nSin; this.e = nX * (1 - nCos) + nY * nSin;
this.b = nSin; this.d =  nCos; this.f = nY * (1 - nCos) - nX * nSin;
};


SVGPathElement.prototype.prependPath = function( aPath )
{
var sPathData = aPath.getAttribute( 'd' );
sPathData += ( ' ' + this.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

SVGPathElement.prototype.appendPath = function( aPath )
{
var sPathData = this.getAttribute( 'd' );
sPathData += ( ' ' + aPath.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

function flipOnYAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.a = -1;
aTransform.e = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

function flipOnXAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.d = -1;
aTransform.f = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

SVGPathElement.prototype.matrixTransform = function( aSVGMatrix )
{
if( SVGPathSegList.prototype.matrixTransform )
{
this.pathSegList.matrixTransform( aSVGMatrix );
return;
}

var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
var i;
for( i = 0; i < nLength; ++i )
{
aPathSegList.getItem( i ).matrixTransform( aSVGMatrix );
}
};

SVGPathElement.prototype.changeOrientation = function()
{
var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
if( nLength == 0 ) return;

if( SVGPathSegList.prototype.changeOrientation )
{
aPathSegList.changeOrientation();
return;
}

var nCurrentX = 0;
var nCurrentY = 0;
this.nGreen *= aT;
this.nBlue *= aT;
return this;
};

RGBColor.clamp = function( aRGBColor )
{
var aClampedRGBColor = new RGBColor( 0, 0, 0 );

aClampedRGBColor.nRed   = clamp( aRGBColor.nRed, 0.0, 1.0 );
aClampedRGBColor.nGreen = clamp( aRGBColor.nGreen, 0.0, 1.0 );
aClampedRGBColor.nBlue  = clamp( aRGBColor.nBlue, 0.0, 1.0 );

return aClampedRGBColor;
};

RGBColor.prototype.convertToHSL = function()
{
var nRed   = clamp( this.nRed, 0.0, 1.0 );
var nGreen = clamp( this.nGreen, 0.0, 1.0 );
var nBlue  = clamp( this.nBlue, 0.0, 1.0 );

var nMax = Math.max( nRed, nGreen, nBlue );
var nMin = Math.min( nRed, nGreen, nBlue );
var nDelta = nMax - nMin;

var nLuminance  = ( nMax + nMin ) / 2.0;
var nSaturation = 0.0;
var nHue = 0.0;
if( nDelta !== 0 )
{
nSaturation = ( nLuminance > 0.5 ) ?
( nDelta / ( 2.0 - nMax - nMin) ) :
( nDelta / ( nMax + nMin ) );

if( nRed == nMax )
nHue = ( nGreen - nBlue ) / nDelta;
else if( nGreen == nMax )
nHue = 2.0 + ( nBlue - nRed ) / nDelta;
else if( nBlue == nMax )
nHue = 4.0 + ( nRed - nGreen ) / nDelta;

nHue *= 60.0;

if( nHue < 0.0 )
nHue += 360.0;
}

return new HSLColor( nHue, nSaturation, nLuminance );

};

RGBColor.prototype.toString = function( bClamped )
{
var aRGBColor;
if( bClamped )
{
aRGBColor = RGBColor.clamp( this );
}
else
{
aRGBColor = this;
}

var nRed = Math.round( aRGBColor.nRed * 255 );
var nGreen = Math.round( aRGBColor.nGreen * 255 );
var nBlue = Math.round( aRGBColor.nBlue * 255 );

return ( 'rgb(' + nRed + ',' + nGreen + ',' + nBlue + ')' );
};

RGBColor.interpolate = function( aStartRGB , aEndRGB, nT )
{
var aResult = aStartRGB.clone();
var aTEndRGB = aEndRGB.clone();
aResult.scale( 1.0 - nT );
aTEndRGB.scale( nT );
aResult.add( aTEndRGB );

return aResult;
};


function HSLColor( nHue, nSaturation, nLuminance )
{
this.eColorSpace = COLOR_SPACE_HSL;
this.nHue = nHue;
this.nSaturation = nSaturation;
this.nLuminance = nLuminance;

this.normalizeHue();
}


HSLColor.prototype.clone = function()
{
return new HSLColor( this.nHue, this.nSaturation, this.nLuminance );
};

HSLColor.prototype.equal = function( aHSLColor )
{
return ( this.nHue == aHSLColor.nHue ) &&
( this.nSaturation += aHSLColor.nSaturation ) &&
( this.nLuminance += aHSLColor.nLuminance );
};

HSLColor.prototype.add = function( aHSLColor )
{
this.nHue += aHSLColor.nHue;
this.nSaturation += aHSLColor.nSaturation;
this.nLuminance += aHSLColor.nLuminance;
this.normalizeHue();
return this;
};

HSLColor.prototype.scale = function( aT )
{
this.nHue *= aT;
this.nSaturation *= aT;
this.nLuminance *= aT;
this.normalizeHue();
return this;
};

HSLColor.clamp = function( aHSLColor )
{
var aClampedHSLColor = new HSLColor( 0, 0, 0 );

aClampedHSLColor.nHue = aHSLColor.nHue % 360;
if( aClampedHSLColor.nHue < 0 )
aClampedHSLColor.nHue += 360;
aClampedHSLColor.nSaturation = clamp( aHSLColor.nSaturation, 0.0, 1.0 );
aClampedHSLColor.nLuminance = clamp( aHSLColor.nLuminance, 0.0, 1.0 );
};

HSLColor.prototype.normalizeHue = function()
{
this.nHue = this.nHue % 360;
if( this.nHue < 0 ) this.nHue += 360;
};

HSLColor.prototype.toString = function()
{
return 'hsl(' + this.nHue.toFixed( 3 ) + ','
+ this.nSaturation.toFixed( 3 ) + ','
+ this.nLuminance.toFixed( 3 ) + ')';
};

HSLColor.prototype.convertToRGB = function()
{
s += e + ', ';
s += f + ')';

return s;
}

function matrixToString( aSVGMatrix )
{
return makeMatrixString( aSVGMatrix.a, aSVGMatrix.b, aSVGMatrix.c,
aSVGMatrix.d, aSVGMatrix.e, aSVGMatrix.f );
}


function numberParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;
if( sValue === '.' )
return undefined;
var reFloatNumber = /^[+-]?[0-9]*[.]?[0-9]*$/;

if( reFloatNumber.test( sValue ) )
return parseFloat( sValue );
else
return undefined;
}

function booleanParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;

sValue = sValue.toLowerCase();
if( sValue === 'true' )
return true;
else if( sValue === 'false' )
return false;
else
return undefined;
}

function colorParser( sValue )
{
if( typeof sValue !== 'string' )
return undefined;


function hsl( nHue, nSaturation, nLuminance )
{
return new HSLColor( nHue, nSaturation / 100, nLuminance / 100 );
}

function rgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 255, nGreen / 255, nBlue / 255 );
}

function prgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 100, nGreen / 100, nBlue / 100 );
}

var sCommaPattern = ' *[,] *';
var sIntegerPattern = '[+-]?[0-9]+';
var sHexDigitPattern = '[0-9A-Fa-f]';

var sHexColorPattern = '#(' + sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})';

var sRGBIntegerPattern = 'rgb[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + sCommaPattern
+ sIntegerPattern + ' *[)]';

var sRGBPercentPattern = 'rgb[(] *' + sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var sHSLPercentPattern = 'hsl[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var reHexColor = new RegExp( sHexColorPattern );
var reRGBInteger = new RegExp( sRGBIntegerPattern );
var reRGBPercent = new RegExp( sRGBPercentPattern );
var reHSLPercent = new RegExp( sHSLPercentPattern );

if( reHexColor.test( sValue ) )
{
var aRGBTriple = reHexColor.exec( sValue );

var nRed    = parseInt( aRGBTriple[1], 16 ) / 255;
var nGreen  = parseInt( aRGBTriple[2], 16 ) / 255;
var nBlue   = parseInt( aRGBTriple[3], 16 ) / 255;

return new RGBColor( nRed, nGreen, nBlue );
}
else if( reHSLPercent.test( sValue ) )
{
sValue = sValue.replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else if( reRGBInteger.test( sValue ) )
{
return eval( sValue );
}
else if( reRGBPercent.test( sValue ) )
{
sValue = 'p' + sValue.replace( '%', '' ).replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else
{
return null;
}
}


function RGBColor( nRed, nGreen, nBlue )
{
this.eColorSpace = COLOR_SPACE_RGB;
this.nRed = nRed;
this.nGreen = nGreen;
this.nBlue = nBlue;
}


RGBColor.prototype.clone = function()
{
return new RGBColor( this.nRed, this.nGreen, this.nBlue );
};

RGBColor.prototype.equal = function( aRGBColor )
{
return ( this.nRed == aRGBColor.nRed ) &&
( this.nGreen == aRGBColor.nGreen ) &&
( this.nBlue == aRGBColor.nBlue );
};

RGBColor.prototype.add = function( aRGBColor )
{
this.nRed += aRGBColor.nRed;
this.nGreen += aRGBColor.nGreen;
this.nBlue += aRGBColor.nBlue;
return this;
};

RGBColor.prototype.scale = function( aT )
{
this.nRed *= aT;
currentMode = SLIDE_MODE;
}
}

function abandonIndexMode()
{
theSlideIndexPage.selectedSlideIndex = nCurSlide;
toggleSlideIndex();
}


var CURR_UNIQUE_ID = 0;

function getUniqueId()
{
++CURR_UNIQUE_ID;
return CURR_UNIQUE_ID;
}

function mem_fn( sMethodName )
{
return  function( aObject )
{
var aMethod = aObject[ sMethodName ];
if( aMethod )
aMethod.call( aObject );
else
log( 'method sMethodName not found' );
};
}

function bind( aObject, aMethod )
{
return  function()
{
return aMethod.call( aObject, arguments[0] );
};
}

function bind2( aFunction )
{
if( !aFunction  )
log( 'bind2: passed function is not valid.' );

var aBoundArgList = arguments;

var aResultFunction = null;

switch( aBoundArgList.length )
{
case 1: aResultFunction = function()
{
return aFunction.call( arguments[0], arguments[1],
arguments[2], arguments[3],
arguments[4] );
};
break;
case 2: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], arguments[0],
arguments[1], arguments[2],
arguments[3] );
};
break;
case 3: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
arguments[0], arguments[1],
arguments[2] );
};
break;
case 4: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], arguments[0],
arguments[1] );
};
break;
case 5: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], aBoundArgList[4],
arguments[0] );
};
break;
default:
log( 'bind2: arity not handled.' );
}

return aResultFunction;
}

function getCurrentSystemTime()
{
return ( new Date() ).getTime();
}

function getSlideAnimationsRoot( sSlideId )
{
return theMetaDoc.aSlideAnimationsMap[ sSlideId ];
}

function getElementChildren( aElement )
{
var aChildrenArray = [];

var nSize = aElement.childNodes.length;

for( var i = 0; i < nSize; ++i )
{
if( aElement.childNodes[i].nodeType == 1 )
aChildrenArray.push( aElement.childNodes[i] );
}

return aChildrenArray;
}

function removeWhiteSpaces( str )
{
if( !str )
return '';

var re = / */;
var aSplitString = str.split( re );
return aSplitString.join('');
}

function clamp( nValue, nMinimum, nMaximum )
{
if( nValue < nMinimum )
{
return nMinimum;
}
else if( nValue > nMaximum )
{
return nMaximum;
}
else
{
return nValue;
}
}

function makeMatrixString( a, b, c, d, e, f )
{
var s = 'matrix(';
s += a + ', ';
s += b + ', ';
s += c + ', ';
s += d + ', ';
if( ( currentMode == INDEX_MODE ) && ( this.container.curThumbnailIndex !=  this.index ) )
{
this.container.setSelection( this.index );
}
};


function init()
{
var VIEWBOX = ROOT_NODE.getAttribute('viewBox');

if( VIEWBOX )
{
WIDTH = ROOT_NODE.viewBox.animVal.width;
HEIGHT = ROOT_NODE.viewBox.animVal.height;
}

aSlideShow = new SlideShow();
theMetaDoc =  new MetaDocument();
aSlideShow.bIsEnabled = theMetaDoc.bIsAnimated;
theSlideIndexPage = new SlideIndexPage();
aSlideShow.displaySlide( theMetaDoc.nStartSlideNumber, false );

var hammer = new Hammer(ROOT_NODE);
hammer.on('swipeleft', function() {
switchSlide(1, false);
});
hammer.on('swiperight', function() {
switchSlide(-1, false);
});
hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });
hammer.on('swipeup', function() {
aSlideShow.exitSlideShowInApp();
});
hammer.on('swipedown', function() {
aSlideShow.exitSlideShowInApp();
});
}

function presentationEngineStop(message)
{
alert( message + '\nThe presentation engine will be stopped' );
document.onkeydown = null;
document.onkeypress = null;
document.onclick = null;
window.onmousewheel = null;
}

function assert( condition, message )
{
if (!condition)
{
presentationEngineStop( message );
if (typeof console == 'object')
console.trace();
throw new Error( message );
}
}

function dispatchEffects(dir)
{

if( dir == 1 )
{
var bRet = aSlideShow.nextEffect();

if( !bRet )
{
switchSlide( 1, false );
}
}
else
{
switchSlide( dir, false );
}
}

function skipAllEffects()
{
var bRet = aSlideShow.skipAllEffects();
if( !bRet )
{
switchSlide( 1, true );
}
}

function skipEffects(dir)
{
if( dir == 1 )
{
var bRet = aSlideShow.skipPlayingOrNextEffect();

if( !bRet )
{
switchSlide( 1, true );
}
}
else
{
switchSlide( dir, true );
}
}

function switchSlide( nOffset, bSkipTransition )
{
var nNextSlide = nCurSlide + nOffset;
aSlideShow.displaySlide( nNextSlide, bSkipTransition );
}

function displayIndex( offsetNumber )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
offsetNumber = getSafeIndex( offsetNumber, 0, aMetaSlideSet.length - 1 );

var nTotalThumbnails = theSlideIndexPage.getTotalThumbnails();
var nEnd = Math.min( offsetNumber + nTotalThumbnails, aMetaSlideSet.length);

var aThumbnailSet = theSlideIndexPage.aThumbnailSet;
var j = 0;
for( var i = offsetNumber; i < nEnd; ++i, ++j )
{
aThumbnailSet[j].update( i );
aThumbnailSet[j].show();
}
for( ; j < nTotalThumbnails; ++j )
{
aThumbnailSet[j].hide();
}

if (INDEX_OFFSET != offsetNumber)
INDEX_OFFSET = offsetNumber;
}

function toggleSlideIndex()
{
if( currentMode == SLIDE_MODE )
{

theMetaDoc.getCurrentSlide().hide();
INDEX_OFFSET = -1;
indexSetPageSlide( nCurSlide );
theSlideIndexPage.show();
currentMode = INDEX_MODE;
}
else if( currentMode == INDEX_MODE )
{
theSlideIndexPage.hide();
var nNewSlide = theSlideIndexPage.selectedSlideIndex;

aSlideShow.displaySlide( nNewSlide, true );
for( i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = this.selectedSlideIndex % this.totalThumbnails;
this.aThumbnailSet[this.curThumbnailIndex].select();

INDEX_OFFSET = -1;
indexSetPageSlide( this.selectedSlideIndex );

ROOT_NODE.unsuspendRedraw( suspendHandle );
ROOT_NODE.forceRedraw();
};


function Thumbnail( aSlideIndexPage, nIndex )
{
this.container = aSlideIndexPage;
this.index = nIndex;//= getSafeIndex( nIndex, 0, this.container.getTotalThumbnails() );
this.pageElement = this.container.pageElement;
this.thumbnailId = 'thumbnail' + this.index;
this.thumbnailElement = this.createThumbnailElement();
this.slideElement = getElementByClassName( this.thumbnailElement, 'Slide' );
this.borderElement = getElementByClassName( this.thumbnailElement, 'Border' );
this.mouseAreaElement = getElementByClassName( this.thumbnailElement, 'MouseArea' );
this.aTransformSet = new Array( 3 );
this.visibility = VISIBLE;
this.isSelected = false;
}

Thumbnail.prototype.sNormalBorderColor = 'rgb(216,216,216)';
Thumbnail.prototype.sSelectionBorderColor = 'rgb(92,92,255)';

Thumbnail.prototype.removeElement = function()
{
if( this.thumbnailElement )
this.container.pageElement.removeChild( this.thumbnailElement );
};

Thumbnail.prototype.show = function()
{
if( this.visibility == HIDDEN )
{
this.thumbnailElement.setAttribute( 'display', 'inherit' );
this.visibility = VISIBLE;
}
};

Thumbnail.prototype.hide = function()
{
if( this.visibility == VISIBLE )
{
this.thumbnailElement.setAttribute( 'display', 'none' );
this.visibility = HIDDEN;
}
};

Thumbnail.prototype.select = function()
{
if( !this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sSelectionBorderColor );
this.isSelected = true;
}
};

Thumbnail.prototype.unselect = function()
{
if( this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sNormalBorderColor );
this.isSelected = false;
}
};

Thumbnail.prototype.updateView = function()
{
this.column = this.index % this.container.indexColumns;
this.row = ( this.index - this.column ) / this.container.indexColumns;
this.halfBorderWidth = this.container.halfBorderWidth;
this.borderWidth = this.container.borderWidth;
this.width = ( WIDTH + this.borderWidth ) * this.container.scaleFactor;
this.height = ( HEIGHT + this.borderWidth ) * this.container.scaleFactor;
this.aTransformSet[2] = 'translate(' + this.halfBorderWidth + ' ' + this.halfBorderWidth + ')';
this.aTransformSet[1] = 'scale(' + this.container.scaleFactor + ')';
var sTransformAttrValue = this.computeTransform();
this.thumbnailElement.setAttribute( 'transform', sTransformAttrValue );
this.mouseAreaElement.setAttribute( 'onmouseover', 'theSlideIndexPage.aThumbnailSet[' + this.index  + '].onMouseOver()' );
};

Thumbnail.prototype.update = function( nIndex )
{
if( this.slideIndex == nIndex )  return;

var aMetaSlide = theMetaDoc.aMetaSlideSet[nIndex];
aMetaSlide.updateMasterPageView();
setNSAttribute( 'xlink', this.slideElement, 'href', '#' + aMetaSlide.slideId );
this.slideIndex = nIndex;
};

Thumbnail.prototype.clear = function( )
{
setNSAttribute( 'xlink', this.slideElement, 'href', '' );
};

Thumbnail.prototype.createThumbnailElement = function()
{
var aThumbnailElement = document.createElementNS( NSS['svg'], 'g' );
aThumbnailElement.setAttribute( 'id', this.thumbnailId );
aThumbnailElement.setAttribute( 'display', 'inherit' );

var aSlideElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aSlideElement, 'href', '' );
aSlideElement.setAttribute( 'class', 'Slide' );
aThumbnailElement.appendChild( aSlideElement );

var aMouseAreaElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aMouseAreaElement, 'href', '#' + this.container.thumbnailMouseAreaTemplateId );
aMouseAreaElement.setAttribute( 'class', 'MouseArea' );
aMouseAreaElement.setAttribute( 'opacity', 0.0 );
aThumbnailElement.appendChild( aMouseAreaElement );

var aBorderElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aBorderElement, 'href', '#' + this.container.thumbnailBorderTemplateId );
aBorderElement.setAttribute( 'stroke', this.sNormalBorderColor );
aBorderElement.setAttribute( 'class', 'Border' );
aThumbnailElement.appendChild( aBorderElement );

this.container.pageElement.appendChild( aThumbnailElement );
return( document.getElementById( this.thumbnailId ) );
};

Thumbnail.prototype.computeTransform = function()
{
var nXSpacing = this.container.xSpacing;
var nYSpacing = this.container.ySpacing;

var nXOffset = nXSpacing + ( this.width + nXSpacing ) * this.column;
var nYOffset = nYSpacing + ( this.height + nYSpacing ) * this.row;

this.aTransformSet[0] = 'translate(' + nXOffset + ' ' + nYOffset + ')';

var sTransform = this.aTransformSet.join( ' ' );

return sTransform;
};

Thumbnail.prototype.onMouseOver = function()
{
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

this.thumbnailMouseAreaTemplateId = 'thumbnail_mouse_area';
this.thumbnailMouseAreaTemplateElement = null;
this.thumbnailBorderTemplateId = 'thumbnail_border';
this.thumbnailBorderTemplateElement = null;
this.createTemplateElements();

this.aThumbnailSet = new Array( this.totalThumbnails );
for( var i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = 0;
}


SlideIndexPage.prototype.getTotalThumbnails = function()
{
return this.totalThumbnails;
};

SlideIndexPage.prototype.show = function()
{
this.pageElement.setAttribute( 'display', 'inherit' );
};

SlideIndexPage.prototype.hide = function()
{
this.pageElement.setAttribute( 'display', 'none' );
};

SlideIndexPage.prototype.setSelection = function( nIndex )
{
nIndex = getSafeIndex( nIndex, 0, this.getTotalThumbnails() - 1 );
if( this.curThumbnailIndex != nIndex )
{
this.aThumbnailSet[ this.curThumbnailIndex ].unselect();
this.aThumbnailSet[ nIndex ].select();
this.curThumbnailIndex = nIndex;
}
this.selectedSlideIndex = this.aThumbnailSet[ nIndex ].slideIndex;
};

SlideIndexPage.prototype.createPageElement = function()
{
var aPageElement = document.createElementNS( NSS['svg'], 'g' );
aPageElement.setAttribute( 'id', this.pageElementId );
aPageElement.setAttribute( 'display', 'none' );
aPageElement.setAttribute( 'visibility', 'visible' );

var sPageBgColor = this.pageBgColor + ';';
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'style', 'stroke:none;fill:' + sPageBgColor );

aPageElement.appendChild( aRectElement );
ROOT_NODE.appendChild( aPageElement );
return( document.getElementById( this.pageElementId ) );
};

SlideIndexPage.prototype.createTemplateElements = function()
{
var aDefsElement = document.createElementNS( NSS['svg'], 'defs' );
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailBorderTemplateId );
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );
aRectElement.setAttribute( 'fill', 'none' );
aDefsElement.appendChild( aRectElement );

aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailMouseAreaTemplateId );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'fill', this.pageBgColor );
aDefsElement.appendChild( aRectElement );

this.pageElement.appendChild( aDefsElement );

this.thumbnailMouseAreaTemplateElement = document.getElementById( this.thumbnailMouseAreaTemplateId );
this.thumbnailBorderTemplateElement = document.getElementById( this.thumbnailBorderTemplateId );
};

SlideIndexPage.prototype.decreaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns - 1 );
};

SlideIndexPage.prototype.increaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns + 1 );
};

SlideIndexPage.prototype.resetNumberOfColumns  = function()
{
this.setNumberOfColumns( INDEX_COLUMNS_DEFAULT );
};

SlideIndexPage.prototype.setNumberOfColumns  = function( nNumberOfColumns )
{
if( this.indexColumns == nNumberOfColumns )  return;
if( nNumberOfColumns < 2 || nNumberOfColumns > 6 ) return;

var suspendHandle = ROOT_NODE.suspendRedraw(500);

var nOldTotalThumbnails = this.totalThumbnails;
this.indexColumns = nNumberOfColumns;
this.totalThumbnails = nNumberOfColumns * nNumberOfColumns;

this.aThumbnailSet[this.curThumbnailIndex].unselect();

var i;
for( i = this.totalThumbnails; i < nOldTotalThumbnails; ++i )
{
this.aThumbnailSet[i].removeElement();
}

for( i = nOldTotalThumbnails; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
}

this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

var aRectElement = this.thumbnailBorderTemplateElement;
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );

log( 'PlaceholderShape.setTextContent: text element is not valid in placeholder of type '
+ this.className + ' that belongs to master slide ' + this.masterPage.id );
return;
}
this.aTextPlaceholderElement.textContent = sText;
};

TextFieldHandler.prototype.update = function()
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this );
};

function SlideNumberFieldHandler( aPlaceholderShape, aTextContentProvider )
{
SlideNumberFieldHandler.superclass.constructor.call( this, aPlaceholderShape, aTextContentProvider );
}
extend( SlideNumberFieldHandler, TextFieldHandler );


SlideNumberFieldHandler.prototype.update = function( nPageNumber )
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this, nPageNumber );
};


function TextFieldContentProvider()
{
this.sId = TextFieldContentProvider.getUniqueId();
}


TextFieldContentProvider.CURR_UNIQUE_ID = 0;

TextFieldContentProvider.getUniqueId = function()
{
++TextFieldContentProvider.CURR_UNIQUE_ID;
return TextFieldContentProvider.CURR_UNIQUE_ID;
};

function FixedTextProvider( aText )
{
FixedTextProvider.superclass.constructor.call( this );
this.text = aText;
}
extend( FixedTextProvider, TextFieldContentProvider );


FixedTextProvider.prototype.update = function( aFixedTextField )
{
aFixedTextField.setTextContent( this.text );
};

function FixedTextByElementProvider( aTextFieldContentElement )
{
FixedTextByElementProvider.superclass.constructor.call( this, aTextFieldContentElement.textContent );
}
extend( FixedTextByElementProvider, FixedTextProvider );

function CurrentDateTimeProvider( aTextFieldContentElement, sDateTimeFormat )
{
CurrentDateTimeProvider.superclass.constructor.call( this, aTextFieldContentElement );
if( aTextFieldContentElement )
this.dateTimeFormat = getOOOAttribute( aTextFieldContentElement, aOOOAttrDateTimeFormat );
else
{
this.dateTimeFormat = sDateTimeFormat;
}
}
extend( CurrentDateTimeProvider, TextFieldContentProvider );


CurrentDateTimeProvider.prototype.update = function( aDateTimeField )
{
var sText = this.createDateTimeText();
aDateTimeField.setTextContent( sText );
};


CurrentDateTimeProvider.prototype.createDateTimeText = function()
{
var sDate;
if( this.dateTimeFormat === '<date>' )
sDate = new Date().toLocaleDateString();
else if( this.dateTimeFormat === '<time>' )
sDate = new Date().toLocaleTimeString();
else
sDate = new Date().toLocaleDateString();
return sDate;
};

function SlideNumberProvider( nInitialSlideNumber, sPageNumberingType )
{
SlideNumberProvider.superclass.constructor.call( this );
this.nInitialSlideNumber = nInitialSlideNumber;
this.pageNumberingType = sPageNumberingType;

}
extend( SlideNumberProvider, TextFieldContentProvider );


SlideNumberProvider.prototype.getNumberingType = function()
{
return this.pageNumberingType;
};


SlideNumberProvider.prototype.update = function( aSlideNumberField, nSlideNumber )
{
if( nSlideNumber === undefined )
{
if( nCurSlide === undefined )
nSlideNumber = this.nInitialSlideNumber;
else
nSlideNumber = nCurSlide + 1;
}
var sText = this.createSlideNumberText( nSlideNumber, this.getNumberingType() );
aSlideNumberField.setTextContent( sText );
};


SlideNumberProvider.prototype.createSlideNumberText = function( nSlideNumber /*, sNumberingType*/ )
{
return String( nSlideNumber );
};


function SlideIndexPage()
{
this.pageElementId = 'slide_index';
this.pageBgColor = 'rgb(252,252,252)';
this.pageElement = this.createPageElement();
assert( this.pageElement, 'SlideIndexPage: pageElement is not valid' );
this.indexColumns = INDEX_COLUMNS_DEFAULT;
this.totalThumbnails = this.indexColumns * this.indexColumns;
this.selectedSlideIndex = undefined;

this.xSpacingFactor = 600/28000;
this.ySpacingFactor = 450/21000;
this.xSpacing = WIDTH * this.xSpacingFactor;
this.ySpacing = HEIGHT * this.ySpacingFactor;
this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
}
else if( sId === aFooterClassName + '.Default' )
{
if( this.aMetaSlide.nIsFooterVisible )
{
this.aFooterFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aHeaderClassName + '.Default' )
{
if( this.aMetaSlide.nIsHeaderVisible )
{
this.aHeaderFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId.indexOf( aDateTimeClassName ) == 0
|| sId.indexOf( aFooterClassName ) == 0
|| sId.indexOf( aHeaderClassName ) == 0
|| sId.indexOf( aDateClassName ) == 0
|| sId.indexOf( aTimeClassName ) == 0
|| sId.indexOf( aSlideNameClassName ) == 0 )
{
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
else
{
var aBackgroundSubGroupElement = theDocument.createElementNS( NSS['svg'], 'use' );
aBackgroundSubGroupElement.setAttribute( 'class', 'BackgroundObjectSubGroup' );
setNSAttribute( 'xlink', aBackgroundSubGroupElement,
'href', '#' + sId );
this.aBackgroundSubGroupElementSet.push( aBackgroundSubGroupElement );
this.aBackgroundObjectsElement.appendChild( aBackgroundSubGroupElement );
}

}
aMasterPageViewElement.appendChild( this.aBackgroundObjectsElement );
}

return aMasterPageViewElement;
};

MasterPageView.prototype.initTextFieldHandler =
function( sId, aPlaceholderShapeSet, aTextFieldContentProviderSet,
aDefsElement, aTextFieldHandlerSet, sMasterSlideId )
{
var sRefId = null;
var aTextFieldHandler = null;
var sClassName = sId.split('.')[0];
var aPlaceholderShape = aPlaceholderShapeSet[sId];
var aTextFieldContentProvider = aTextFieldContentProviderSet[sClassName];
if( aPlaceholderShape  && aPlaceholderShape.isValid()
&& aTextFieldContentProvider )
{
var sTextFiedHandlerKey = aTextFieldContentProvider.sId + '.' + sId;
if ( !aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] )
{
aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ] =
new TextFieldHandler( aPlaceholderShape,
aTextFieldContentProvider );
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ];
aTextFieldHandler.update();
aTextFieldHandler.appendTo( aDefsElement );
}
else
{
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFiedHandlerKey ];
}
sRefId = aTextFieldHandler.sId;
}
else if( aPlaceholderShape && aPlaceholderShape.element && aPlaceholderShape.element.firstElementChild
&& !aPlaceholderShape.textElement && !aTextFieldContentProvider )
{
sRefId = aPlaceholderShape.element.firstElementChild.getAttribute('id');
}

if( sRefId )
{
var aTextFieldElement = document.createElementNS(NSS['svg'], 'use');
aTextFieldElement.setAttribute('class', sClassName);
setNSAttribute('xlink', aTextFieldElement,
'href', '#' + sRefId);
this.aBackgroundObjectsElement.appendChild( aTextFieldElement );
}
return aTextFieldHandler;
};

function TextFieldHandler( aPlaceholderShape, aTextContentProvider )
{
this.aPlaceHolderShape = aPlaceholderShape;
this.aTextContentProvider = aTextContentProvider;
assert( this.aTextContentProvider,
'TextFieldHandler: text content provider not defined.' );
this.sId = 'tf' + String( TextFieldHandler.getUniqueId() );
this.aTextFieldElement = null;
this.aTextPlaceholderElement = null;
this.cloneElement();
}


TextFieldHandler.CURR_UNIQUE_ID = 0;

TextFieldHandler.getUniqueId = function()
{
++TextFieldHandler.CURR_UNIQUE_ID;
return TextFieldHandler.CURR_UNIQUE_ID;
};

TextFieldHandler.prototype.cloneElement = function()
{
assert( this.aPlaceHolderShape && this.aPlaceHolderShape.isValid(),
'TextFieldHandler.cloneElement: placeholder shape is not valid.' );
this.aTextFieldElement = this.aPlaceHolderShape.element.cloneNode( true /* deep clone */ );
assert( this.aTextFieldElement,
'TextFieldHandler.cloneElement: aTextFieldElement is not defined' );
this.aTextFieldElement.setAttribute( 'id', this.sId );
this.aTextFieldElement.removeAttribute( 'visibility' );
this.aTextPlaceholderElement = getElementByClassName( this.aTextFieldElement, 'PlaceholderText' );
assert( this.aTextPlaceholderElement,
'TextFieldHandler.cloneElement: aTextPlaceholderElement is not defined' );
};


TextFieldHandler.prototype.appendTo = function( aParentNode )
{
if( !this.aTextFieldElement )
{
log( 'TextFieldHandler.appendTo: aTextFieldElement is not defined' );
return;
}
if( !aParentNode )
{
log( 'TextFieldHandler.appendTo: parent node is not defined' );
return;
}

aParentNode.appendChild( this.aTextFieldElement );
};

TextFieldHandler.prototype.setTextContent = function( sText )
{
if( !this.aTextPlaceholderElement )
{
{
var i = 0;
for( ; i < aTSpanElements.length; ++i )
{
var aTSpanElem = aTSpanElements[i];
aTSpanElem.removeAttribute( 'x' );
if( i !== 0 )
aTSpanElem.removeAttribute( 'y' );
}
}
}
}

if( this.masterPage.metaSlide.theMetaDoc.bIsUsePositionedChars )
{
var aTextLineGroupElem = aPlaceholderElement.parentNode.parentNode;
if( aTextLineGroupElem )
{
var sFontFamilyAttr = aTextLineGroupElem.getAttribute( 'font-family' );
if( sFontFamilyAttr )
{
var aChildSet = getElementChildren( aTextLineGroupElem );
if( aChildSet.length > 1 )
var i = 1;
for( ; i < aChildSet.length; ++i )
{
aTextLineGroupElem.removeChild( aChildSet[i] );
}
}
}
}
this.textElement = aPlaceholderElement;
}
}
this.element = aTextFieldElement;
}
};

function MasterPageView( aMetaSlide )
{
this.aMetaSlide = aMetaSlide;
this.aSlideElement = aMetaSlide.slideElement;
this.aPageElement = aMetaSlide.pageElement;
this.aMasterPage = aMetaSlide.masterPage;
this.aMPVElement = this.createElement();
this.bIsAttached = false;
}


MasterPageView.prototype.attachToSlide = function()
{
if( !this.bIsAttached )
{
var aInsertedElement = this.aSlideElement.insertBefore( this.aMPVElement, this.aPageElement );
assert( aInsertedElement === this.aMPVElement,
'MasterPageView.attachToSlide: aInsertedElement != this.aMPVElement' );

this.bIsAttached = true;
}
};

MasterPageView.prototype.detachFromSlide = function()
{
if( this.bIsAttached )
{
this.aSlideElement.removeChild( this.aMPVElement );
this.bIsAttached = false;
}
};

MasterPageView.prototype.update = function()
{
if( this.aDateTimeFieldHandler && this.aMetaSlide.bIsDateTimeVariable )
this.aDateTimeFieldHandler.update();
};


MasterPageView.prototype.createElement = function()
{
var theDocument = document;
var aMasterPageViewElement = theDocument.createElementNS( NSS['svg'], 'g' );
assert( aMasterPageViewElement,
'MasterPageView.createElement: failed to create a master page view element.' );
aMasterPageViewElement.setAttribute( 'class', 'MasterPageView' );

var aWhiteRect = theDocument.createElementNS( NSS['svg'], 'rect' );
var nWidthExt = WIDTH / 1000;
var nHeightExt = HEIGHT / 1000;
aWhiteRect.setAttribute( 'x', String( -nWidthExt / 2 ) );
aWhiteRect.setAttribute( 'y', String( -nHeightExt / 2 ) );
aWhiteRect.setAttribute( 'width', String( WIDTH + nWidthExt ) );
aWhiteRect.setAttribute( 'height', String( HEIGHT + nHeightExt ) );
aWhiteRect.setAttribute( 'fill', '#FFFFFF' );
aMasterPageViewElement.appendChild( aWhiteRect );

if( this.aMetaSlide.nIsBackgroundVisible )
{
var nBackgroundId = this.aMetaSlide.bHasCustomBackground ? this.aMetaSlide.backgroundId : this.aMasterPage.backgroundId;
this.aBackgroundElement = theDocument.createElementNS( NSS['svg'], 'use' );
this.aBackgroundElement.setAttribute( 'class', 'Background' );
setNSAttribute( 'xlink', this.aBackgroundElement,
'href', '#' + nBackgroundId );

aMasterPageViewElement.appendChild( this.aBackgroundElement );
}

if( this.aMetaSlide.nAreMasterObjectsVisible )
{
this.aBackgroundObjectsElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aBackgroundObjectsElement.setAttribute( 'class', 'BackgroundObjects' );

var aBackgroundObjectSubGroupIdList = this.aMasterPage.aBackgroundObjectSubGroupIdList;
this.aBackgroundSubGroupElementSet = [];
var aPlaceholderShapeSet = this.aMasterPage.aPlaceholderShapeSet;
var aTextFieldContentProviderSet = this.aMetaSlide.aTextFieldContentProviderSet;
var aDefsElement = this.aMetaSlide.element.parentNode;
var aTextFieldHandlerSet = this.aMetaSlide.theMetaDoc.aTextFieldHandlerSet;
var sMasterSlideId = this.aMasterPage.id;

var i = 0;
var sId;
for( ; i < aBackgroundObjectSubGroupIdList.length; ++i )
{
sId = aBackgroundObjectSubGroupIdList[i];
if( sId.indexOf( aSlideNumberClassName ) == 0 )
{
var nIsPageNumberVisible = sId === (aSlideNumberClassName + '.Default') ? this.aMetaSlide.nIsPageNumberVisible : true;
if( aPlaceholderShapeSet[sId] &&
aPlaceholderShapeSet[sId].isValid() &&
nIsPageNumberVisible &&
aTextFieldContentProviderSet[aSlideNumberClassName] )
{
var aSlideNumberFieldHandler =
new SlideNumberFieldHandler( aPlaceholderShapeSet[sId],
aTextFieldContentProviderSet[aSlideNumberClassName] );
aSlideNumberFieldHandler.update( this.aMetaSlide.nSlideNumber );
aSlideNumberFieldHandler.appendTo( this.aBackgroundObjectsElement );
if ( sId === aSlideNumberClassName + '.Default' )
this.aSlideNumberFieldHandler = aSlideNumberFieldHandler;
}
}
else if( sId === aDateTimeClassName + '.Default' )
{
if( this.aMetaSlide.nIsDateTimeVisible )
{
this.aDateTimeFieldHandler =
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
{
this.backgroundObjectsId = this.backgroundObjects.getAttribute( 'id' );
this.backgroundObjectsVisibility = initVisibilityProperty( this.backgroundObjects );

if( this.backgroundObjectsVisibility != HIDDEN )
{
var aBackgroundObjectList = getElementChildren( this.backgroundObjects );
var nFrom = 0;
var nCount = 0;
var nSubGroupId = 1;
var sClass;
var sId = '';
var i = 0;
for( ; i < aBackgroundObjectList.length; ++i )
{
var aObject = aBackgroundObjectList[i];
removeRedundantParagraphFromTextFieldShape( aObject );
sClass = null;
var sFieldType = getTextFieldType( aObject );
if( sFieldType && aObject.firstElementChild )
{
var sObjId = aObject.firstElementChild.getAttribute( 'id' );
if( sObjId )
{
sClass = sFieldType + '.' + sObjId;
aObject.setAttribute('class', sClass);
}
}
if( !sClass )
{
sClass = aBackgroundObjectList[i].getAttribute('class');
if( sClass === aDateTimeClassName || sClass === aFooterClassName
|| sClass === aHeaderClassName || sClass === aSlideNumberClassName)
{
sClass += '.Default';
aObject.setAttribute('class', sClass);
}
}
if( !sClass || !isTextFieldByClassName( sClass ) )
{
if( nCount === 0 )
{
nFrom = i;
sId = this.backgroundObjectsId + '.' + nSubGroupId;
++nSubGroupId;
this.aBackgroundObjectSubGroupIdList.push( sId );
}
++nCount;
}
else
{
this.aBackgroundObjectSubGroupIdList.push( sClass );
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
nCount = 0;
}
}
}
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
}
}
}
else
{
this.backgroundObjectsId = '';
log( 'MasterPage: the background objects element is not valid.' );
}

this.aPlaceholderShapeSet = {};
this.initPlaceholderShapes();
}

MasterPage.prototype =
{

initPlaceholderShapes : function()
{
var sClassName;
var i = 0;
for( ; i < this.aBackgroundObjectSubGroupIdList.length; ++i )
{
sClassName = this.aBackgroundObjectSubGroupIdList[i];
if( isTextFieldByClassName( sClassName ) )
this.aPlaceholderShapeSet[ sClassName ] = new PlaceholderShape( this, sClassName );
}
}

}; // end MasterPage prototype

function PlaceholderShape( aMasterPage, sClassName )
{
this.masterPage = aMasterPage;
this.className = sClassName;

this.element = null;
this.textElement = null;
this.init();
}

PlaceholderShape.prototype.isValid = function()
{
return ( this.element && this.textElement );
};


PlaceholderShape.prototype.init = function()
{
var aTextFieldElement = getElementByClassName( this.masterPage.backgroundObjects, this.className );
if( aTextFieldElement )
{
var aTextElem = getElementByClassName( aTextFieldElement, 'SVGTextShape' );
if( aTextElem )
{
var aPlaceholderElement = getElementByClassName(aTextElem, 'PlaceholderText');
if( aPlaceholderElement )
{
var aSVGRectElem = getElementByClassName( aTextFieldElement, 'BoundingBox' );
if( aSVGRectElem )
{
var aRect = new Rectangle( aSVGRectElem );
var sTextAdjust = getOOOAttribute( aTextFieldElement, aOOOAttrTextAdjust );
var nMargin = 250; // 1000th mm
var sTextAnchor, sX;
if( sTextAdjust == 'left' )
{
sTextAnchor = 'start';
sX = String( Math.trunc( aRect.left + nMargin ) );
}
else if( sTextAdjust == 'right' )
{
sTextAnchor = 'end';
sX = String( Math.trunc( aRect.right - nMargin ) );
}
else if( sTextAdjust == 'center' )
{
sTextAnchor = 'middle';
var nMiddle = ( aRect.left + aRect.right ) / 2;
sX = String( parseInt( String( nMiddle ) ) );
}
if( sTextAnchor )
{
aTextElem.setAttribute( 'text-anchor', sTextAnchor );
if( sX )
aTextElem.setAttribute( 'x', sX );

var aTSpanElements = getElementsByClassName( aTextElem, 'TextPosition' );
if( aTSpanElements )
var aTextFieldElem = document.getElementById( sTextFieldId );
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ]
= new FixedTextByElementProvider( aTextFieldElem );
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

collectTextShapes : function()
{
var aTextShapeSet = [];
var aTextShapeIndexElem = getElementByClassName( document, 'TextShapeIndex' );
if( aTextShapeIndexElem )
{
var aIndexEntryList = getElementChildren( aTextShapeIndexElem );
var i;
for( i = 0; i < aIndexEntryList.length; ++i )
{
var sSlideId = getOOOAttribute( aIndexEntryList[i], 'slide' );
if( sSlideId === this.slideId )
{
var sTextShapeIds = getOOOAttribute( aIndexEntryList[i], 'id-list' );
if( sTextShapeIds )
{
var aTextShapeIdSet =  sTextShapeIds.split( ' ' );
var j;
for( j = 0; j < aTextShapeIdSet.length; ++j )
{
var aTextShapeElem = document.getElementById( aTextShapeIdSet[j] );
if( aTextShapeElem )
{
aTextShapeSet.push( aTextShapeElem );
}
else
{
log( 'warning: MetaSlide.collectTextShapes: text shape with id <' + aTextShapeIdSet[j] + '> is not valid.'  );
}
}
}
break;
}
}
}
return aTextShapeSet;
},

initHyperlinks : function()
{
var aHyperlinkSet = {};
var i;
for( i = 0; i < this.aTextShapeSet.length; ++i )
{
if( this.aTextShapeSet[i] )
{
var aHyperlinkIdList = getElementByClassName( this.aTextShapeSet[i], 'HyperlinkIdList' );
if( aHyperlinkIdList )
{
var sHyperlinkIds = aHyperlinkIdList.textContent;
if( sHyperlinkIds )
{
var aHyperlinkIdSet = sHyperlinkIds.trim().split( ' ' );
var j;
for( j = 0; j < aHyperlinkIdSet.length; ++j )
{
var sId = aHyperlinkIdSet[j];
aHyperlinkSet[ sId ] = new HyperlinkElement( sId, this.aSlideAnimationsHandler.aEventMultiplexer );
}
}
}
}
}
return aHyperlinkSet;
},

getSlideAnimationsRoot : function()
{
return this.theMetaDoc.aSlideAnimationsMap[ this.slideId ];
}

}; // end MetaSlide prototype

function removeRedundantParagraphFromTextFieldShape( aObject )
{
var aTextElem = getElementByClassName( aObject, 'SVGTextShape' );
if( aTextElem )
{
var aPlaceholderElement = getElementsByClassName(aTextElem, 'PlaceholderText');
if( aPlaceholderElement )
{
var aTextParagraphSet = getElementsByClassName(aTextElem, 'TextParagraph');
if( aTextParagraphSet.length > 1 )
{
var i = aTextParagraphSet.length;
while( i > 1 )
{
aTextElem.removeChild(aTextParagraphSet[i - 1]);
--i;
}
}
}
}
}

function getTextFieldType ( elem ) {
var sFieldType = null;
var sClass = elem.getAttribute('class');
if( sClass === 'TextShape' )
{
var aPlaceholderElement = getElementByClassName(elem, 'PlaceholderText');
if( aPlaceholderElement )
{
var sClassAttr = aPlaceholderElement.getAttribute('class');
var classes = sClassAttr.split(' ');
sFieldType = classes[1];
}
}
return sFieldType;
}

function isTextFieldByClassName ( sClassName )
{
return sClassName.indexOf( aDateTimeClassName ) == 0 || sClassName.indexOf( aFooterClassName ) == 0
|| sClassName.indexOf( aHeaderClassName ) == 0 || sClassName.indexOf( aSlideNumberClassName ) == 0
|| sClassName.indexOf( aDateClassName ) == 0 || sClassName.indexOf( aTimeClassName ) == 0
|| sClassName.indexOf( aSlideNameClassName ) == 0;
}

function MasterPage( sMasterPageId, aMetaSlide )
{
this.id = sMasterPageId;
this.metaSlide = aMetaSlide;

this.element = document.getElementById( this.id );
assert( this.element,
'MasterPage: master page element <' + this.id + '> not found.' );

this.background = getElementByClassName( this.element, 'Background' );
if( this.background )
{
this.backgroundId = this.background.getAttribute( 'id' );
this.backgroundVisibility = initVisibilityProperty( this.background );
}
else
{
this.backgroundId = '';
log( 'MasterPage: the background element is not valid.' );
}

this.backgroundObjects = getElementByClassName( this.element, 'BackgroundObjects' );
this.aBackgroundObjectSubGroupIdList = [];
if( this.backgroundObjects )
{
this.aTransitionHandler = new SlideTransition( this.getSlideAnimationsRoot(), this.slideId );
}

this.aSlideAnimationsHandler = new SlideAnimations( aSlideShow.getContext() );
this.aSlideAnimationsHandler.importAnimations( this.getSlideAnimationsRoot() );
this.aSlideAnimationsHandler.parseElements();

if( false && this.aSlideAnimationsHandler.aRootNode )
log( this.aSlideAnimationsHandler.aRootNode.info( true ) );

this.aTextShapeSet = this.collectTextShapes();

this.aHyperlinkSet = this.initHyperlinks();

}

MetaSlide.prototype =
{

show : function()
{
this.updateMasterPageView();
this.aVisibilityStatusElement.setAttribute( 'visibility', 'inherit' );
},

hide : function()
{
this.aVisibilityStatusElement.setAttribute( 'visibility', 'hidden' );
},

updateMasterPageView : function()
{
if( !this.aMasterPageView )
{
this.aMasterPageView = new MasterPageView( this );
this.aMasterPageView.attachToSlide();
}
this.aMasterPageView.update();
},


initPlaceholderElements : function()
{
var aPlaceholderList = getElementsByClassName(this.pageElement , 'PlaceholderText' );
var i = 0;
for( ; i < aPlaceholderList.length; ++i )
{
var aPlaceholderElem = aPlaceholderList[i];
var sClass = aPlaceholderElem.getAttribute('class');
var sFieldType = sClass.split(' ')[1];
if( sFieldType ===  aDateClassName)
aPlaceholderElem.textContent = new Date().toLocaleDateString();
else if( sFieldType === aTimeClassName )
aPlaceholderElem.textContent = new Date().toLocaleTimeString();
}
},

initMasterPage : function()
{
var sMasterPageId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrMaster );

if( !this.theMetaDoc.aMasterPageSet.hasOwnProperty( sMasterPageId ) )
{
this.theMetaDoc.aMasterPageSet[ sMasterPageId ] = new MasterPage( sMasterPageId, this );

this.theMetaDoc.aTextFieldHandlerSet[ sMasterPageId ] = {};
}
return this.theMetaDoc.aMasterPageSet[ sMasterPageId ];
},

initSlideDuration : function()
{
var sSlideDuration = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlideDuration );
if( sSlideDuration && sSlideDuration.length > 0 )
return parseFloat( sSlideDuration );
else
return -1;
},

initHasTransition : function()
{
var sHasTransition = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasTransition );
return ( sHasTransition === 'true' );
},

initHasCustomBackground : function()
{
var sHasCustomBackground = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasCustomBackground );
return ( sHasCustomBackground === 'true' );
},

initVisibilityProperty : function( aVisibilityAttribute, nDefaultValue )
{
var nVisibility = nDefaultValue;
var sVisibility = getOOOAttribute( this.element, aVisibilityAttribute );
if( sVisibility )
nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
},

initSlideNumberFieldContentProvider : function()
{
return this.theMetaDoc.aSlideNumberProvider;
},

initDateTimeFieldContentProvider : function( aOOOAttrDateTimeField )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttrDateTimeField );
if( !sTextFieldId )  return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt(sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
var aTextField;
var aTextFieldElem = document.getElementById( sTextFieldId );
var sClassName = getClassAttribute( aTextFieldElem );
if( sClassName == 'FixedDateTimeField' )
{
aTextField = new FixedTextByElementProvider( aTextFieldElem );
this.bIsDateTimeVariable = false;
}
else if( sClassName == 'VariableDateTimeField' )
{
aTextField = new CurrentDateTimeProvider( aTextFieldElem );
this.bIsDateTimeVariable = true;
}
else
{
aTextField = null;
}
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] = aTextField;
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

initFixedTextFieldContentProvider : function( aOOOAttribute )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttribute );
if( !sTextFieldId ) return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt( sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
if (aParmStartSlideNumber !== '')
{
this.nStartSlideNumber = parseInt(aParmStartSlideNumber);
}
this.sPageNumberingType = aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberingType ) || 'arabic';
this.bIsUsePositionedChars = ( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrUsePositionedChars ) === 'true' );

this.aClipPathGroup = getElementByClassName( ROOT_NODE, aClipPathGroupClassName );
assert( this.aClipPathGroup, 'MetaDocument: the clip path group element is not valid.');

this.aPresentationClipPath = document.getElementById( aPresentationClipPathId );
assert( this.aPresentationClipPath,
'MetaDocument: the presentation clip path element element is not valid.');

this.aMetaSlideSet = [];
this.aMasterPageSet = {};
this.aTextFieldHandlerSet = {};
this.aTextFieldContentProviderSet = [];
this.aSlideNumberProvider = new SlideNumberProvider( this.nStartSlideNumber + 1, this.sPageNumberingType );
this.aCurrentDateProvider = new CurrentDateTimeProvider( null, '<date>' );
this.aCurrentTimeProvider = new CurrentDateTimeProvider( null, '<time>' );

this.bIsAnimated = false;
this.aSlideAnimationsMap = {};
this.initSlideAnimationsMap();

this.theMetaDummySlide = new MetaSlide( 'ooo:meta_dummy_slide', this );

for( var i = 0; i < this.nNumberOfSlides; ++i )
{
var sMetaSlideId = aOOOElemMetaSlide + '_' + i;
this.aMetaSlideSet.push( new MetaSlide( sMetaSlideId, this ) );
}
assert( this.aMetaSlideSet.length == this.nNumberOfSlides,
'MetaDocument: aMetaSlideSet.length != nNumberOfSlides.' );
}

MetaDocument.prototype =
{

getCurrentSlide : function()
{
return this.aMetaSlideSet[nCurSlide];
},

setCurrentSlide : function( nSlideIndex )
{
if( nSlideIndex >= 0 &&  nSlideIndex < this.nNumberOfSlides )
{
if( nCurSlide !== undefined )
this.aMetaSlideSet[nCurSlide].hide();
this.aMetaSlideSet[nSlideIndex].show();
nCurSlide = nSlideIndex;
}
else
{
log('MetaDocument.setCurrentSlide: slide index out of range: ' + nSlideIndex );
}
},


initSlideAnimationsMap : function()
{
var aAnimationsSection = document.getElementById( 'presentation-animations' );
if( aAnimationsSection )
{
var aAnimationsDefSet = aAnimationsSection.getElementsByTagName( 'defs' );

this.bIsAnimated = ( typeof aAnimationsDefSet.length =='number' &&
aAnimationsDefSet.length > 0 );

for( var i = 0; i < aAnimationsDefSet.length; ++i )
{
var sSlideId = aAnimationsDefSet[i].getAttributeNS( NSS['ooo'], aOOOAttrSlide );
var aChildSet = getElementChildren( aAnimationsDefSet[i] );
if( sSlideId && ( aChildSet.length === 1 ) )
{
this.aSlideAnimationsMap[ sSlideId ] = aChildSet[0];
}
}
}
}

}; // end MetaDocument prototype

function MetaSlide( sMetaSlideId, aMetaDoc )
{
this.theDocument = document;
this.id = sMetaSlideId;
this.theMetaDoc = aMetaDoc;

this.element = this.theDocument.getElementById( this.id );
assert( this.element,
'MetaSlide: meta_slide element <' + this.id + '> not found.' );

this.slideId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlide );
this.slideElement = this.theDocument.getElementById( this.slideId );
assert( this.slideElement,
'MetaSlide: slide element <' + this.slideId + '> not found.' );

if( this.slideId !== 'dummy_slide' )
this.nSlideNumber = parseInt( this.slideId.substr(2) );
else
this.nSlideNumber= -1;

this.slideName = this.element.getAttributeNS( NSS['ooo'], aOOOAttrDisplayName );

this.aContainerElement = this.slideElement.parentNode;
this.slideContainerId = this.aContainerElement.getAttribute( 'id' );
this.aVisibilityStatusElement = this.aContainerElement.parentNode;

this.pageElement = getElementByClassName( this.slideElement, aPageClassName );
assert( this.pageElement,
'MetaSlide: page element <' + this.slideId + '> not found.' );

this.backgroundElement = getElementByClassName( this.pageElement, 'Background' );
if( this.backgroundElement )
{
this.backgroundId = this.backgroundElement.getAttribute( 'id' );
}

this.initPlaceholderElements();

this.masterPage = this.initMasterPage();

this.bHasCustomBackground = this.initHasCustomBackground();

this.nAreMasterObjectsVisible     = this.initVisibilityProperty( aOOOAttrMasterObjectsVisibility,  VISIBLE );
this.nIsBackgroundVisible         = this.initVisibilityProperty( aOOOAttrBackgroundVisibility,     VISIBLE );
this.nIsPageNumberVisible         = this.initVisibilityProperty( aOOOAttrPageNumberVisibility,     HIDDEN );
this.nIsDateTimeVisible           = this.initVisibilityProperty( aOOOAttrDateTimeVisibility,       VISIBLE );
this.nIsFooterVisible             = this.initVisibilityProperty( aOOOAttrFooterVisibility,         VISIBLE );
this.nIsHeaderVisible             = this.initVisibilityProperty( aOOOAttrHeaderVisibility,         VISIBLE );

this.bIsDateTimeVariable = undefined;

this.aTextFieldContentProviderSet = {};
this.aTextFieldContentProviderSet[aSlideNumberClassName]   = this.initSlideNumberFieldContentProvider();
this.aTextFieldContentProviderSet[aDateTimeClassName]      = this.initDateTimeFieldContentProvider( aOOOAttrDateTimeField );
this.aTextFieldContentProviderSet[aFooterClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrFooterField );
this.aTextFieldContentProviderSet[aHeaderClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrHeaderField );
this.aTextFieldContentProviderSet[aDateClassName]          = this.theMetaDoc.aCurrentDateProvider;
this.aTextFieldContentProviderSet[aTimeClassName]          = this.theMetaDoc.aCurrentTimeProvider;
this.aTextFieldContentProviderSet[aSlideNameClassName]     = new FixedTextProvider( this.slideName );

this.fDuration = this.initSlideDuration();

this.aTransitionHandler = null;
this.bHasTransition = this.initHasTransition() || true;
if( this.bHasTransition )
}

function getElementByClassName( aElem, sClassName /*, sTagName */)
{
var aElementSet = getElementsByClassName( aElem, sClassName );
if ( aElementSet.length == 1 )
return aElementSet[0];
else
return null;
}

function getClassAttribute(  aElem )
{
if( aElem )
return aElem.getAttribute( 'class' );
return '';
}

function createElementGroup( aParentElement, aElementList, nFrom, nCount, sGroupClass, sGroupId )
{
var nTo = nFrom + nCount;
if( nCount < 1 || aElementList.length < nTo )
{
log( 'createElementGroup: not enough elements available.' );
return;
}
var firstElement = aElementList[nFrom];
if( !firstElement )
{
log( 'createElementGroup: element not found.' );
return;
}
var aGroupElement = document.createElementNS( NSS['svg'], 'g' );
if( sGroupId )
aGroupElement.setAttribute( 'id', sGroupId );
if( sGroupClass )
aGroupElement.setAttribute( 'class', sGroupClass );
aParentElement.insertBefore( aGroupElement, firstElement );
var i = nFrom;
for( ; i < nTo; ++i )
{
aParentElement.removeChild( aElementList[i] );
aGroupElement.appendChild( aElementList[i] );
}
}

function initVisibilityProperty( aElement )
{
var nVisibility = VISIBLE;
var sVisibility = aElement.getAttribute( 'visibility' );
if( sVisibility ) nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
}

function getSafeIndex( nIndex, nMin, nMax )
{
if( nIndex < nMin )
return nMin;
else if( nIndex > nMax )
return nMax;
else
return nIndex;
}

function getUrlParameter(name)
{
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
var results = regex.exec(window.location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
}

function getRandomInt( nMax )
{
return Math.floor( Math.random() * nMax );
}


function DebugPrinter()
{
this.bEnabled = false;
}


DebugPrinter.prototype.on = function()
{
this.bEnabled = true;
};

DebugPrinter.prototype.off = function()
{
this.bEnabled = false;
};

DebugPrinter.prototype.isEnabled = function()
{
return this.bEnabled;
};

DebugPrinter.prototype.print = function( sMessage, nTime )
{
if( this.isEnabled() )
{
var sInfo = 'DBG: ' + sMessage;
if( nTime )
sInfo += ' (at: ' + String( nTime / 1000 ) + 's)';
log( sInfo );
}
};


var aGenericDebugPrinter = new DebugPrinter();
aGenericDebugPrinter.off();
var DBGLOG = bind2( DebugPrinter.prototype.print, aGenericDebugPrinter );

var NAVDBG = new DebugPrinter();
NAVDBG.off();

var ANIMDBG = new DebugPrinter();
ANIMDBG.off();

var aRegisterEventDebugPrinter = new DebugPrinter();
aRegisterEventDebugPrinter.off();

var aTimerEventQueueDebugPrinter = new DebugPrinter();
aTimerEventQueueDebugPrinter.off();

var aEventMultiplexerDebugPrinter = new DebugPrinter();
aEventMultiplexerDebugPrinter.off();

var aNextEffectEventArrayDebugPrinter = new DebugPrinter();
aNextEffectEventArrayDebugPrinter.off();

var aActivityQueueDebugPrinter = new DebugPrinter();
aActivityQueueDebugPrinter.off();

var aAnimatedElementDebugPrinter = new DebugPrinter();
aAnimatedElementDebugPrinter.off();


function MetaDocument()
{
var aMetaDocElem = document.getElementById( aOOOElemMetaSlides );
assert( aMetaDocElem, 'MetaDocument: the svg element with id:' + aOOOElemMetaSlides + 'is not valid.');

this.nNumberOfSlides = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberOfSlides ) );
assert( typeof this.nNumberOfSlides == 'number' && this.nNumberOfSlides > 0,
'MetaDocument: number of slides is zero or undefined.' );
this.nStartSlideNumber = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrStartSlideNumber ) ) || 0;
var aParmStartSlideNumber = getUrlParameter('StartSlideNumber');

var charCodeDictionary = getDefaultCharCodeDictionary();
var keyCodeDictionary = getDefaultKeyCodeDictionary();

var mouseHandlerDictionary = getDefaultMouseHandlerDictionary();


function object( aObject )
{
var F = function() {};
F.prototype = aObject;
return new F();
}


function extend( aSubType, aSuperType )
{
if (!aSuperType || !aSubType)
{
alert('extend failed, verify dependencies');
}
var OP = Object.prototype;
var sp = aSuperType.prototype;
var rp = object( sp );
aSubType.prototype = rp;

rp.constructor = aSubType;
aSubType.superclass = sp;

if (aSuperType != Object && sp.constructor == OP.constructor)
{
sp.constructor = aSuperType;
}

return aSubType;
}


function instantiate( TemplateClass, BaseType )
{
if( !TemplateClass.instanceSet )
TemplateClass.instanceSet = [];

var nSize = TemplateClass.instanceSet.length;

for( var i = 0; i < nSize; ++i )
{
if( TemplateClass.instanceSet[i].base === BaseType )
return TemplateClass.instanceSet[i].instance;
}

TemplateClass.instanceSet[ nSize ] = {};
TemplateClass.instanceSet[ nSize ].base = BaseType;
TemplateClass.instanceSet[ nSize ].instance = TemplateClass( BaseType );

return TemplateClass.instanceSet[ nSize ].instance;
}


function Rectangle( aSVGRectElem )
{
var x = parseInt( aSVGRectElem.getAttribute( 'x' ) );
var y = parseInt( aSVGRectElem.getAttribute( 'y' ) );
var width = parseInt( aSVGRectElem.getAttribute( 'width' ) );
var height = parseInt( aSVGRectElem.getAttribute( 'height' ) );

this.left = x;
this.right = x + width;
this.top = y;
this.bottom = y + height;
}

function getKeyByValue(aObj, value) {
for(var key in aObj) {
if(aObj[key] == value)
return key;
}
return null;
}

function log( message )
{
if( typeof console == 'object' )
{
console.log( message );
}
else if( typeof opera == 'object' )
{
opera.postError( message );
}
else if( typeof java == 'object' && typeof java.lang == 'object' )
{
java.lang.System.out.println( message );
}
}

function getNSAttribute( sNSPrefix, aElem, sAttrName )
{
if( !aElem ) return null;
if( 'getAttributeNS' in aElem )
{
return aElem.getAttributeNS( NSS[sNSPrefix], sAttrName );
}
else
{
return aElem.getAttribute( sNSPrefix + ':' + sAttrName );
}
}

function getOOOAttribute( aElem, sAttrName )
{
return getNSAttribute( 'ooo', aElem, sAttrName );
}

function setNSAttribute( sNSPrefix, aElem, sAttrName, aValue )
{
if( !aElem ) return false;
if( 'setAttributeNS' in aElem )
{
aElem.setAttributeNS( NSS[sNSPrefix], sAttrName, aValue );
return true;
}
else
{
aElem.setAttribute(sNSPrefix + ':' + sAttrName, aValue );
return true;
}
}

function getElementsByClassName( aElem, sClassName )
{

var aElementSet = [];
if( 'getElementsByClassName' in aElem )
{
aElementSet = aElem.getElementsByClassName( sClassName );
}
else
{
var aElementSetByClassProperty = getElementsByProperty( aElem, 'class' );
for( var i = 0; i < aElementSetByClassProperty.length; ++i )
{
var sAttrClassName = aElementSetByClassProperty[i].getAttribute( 'class' );
if( sAttrClassName == sClassName )
{
aElementSet.push( aElementSetByClassProperty[i] );
}
}
}
return aElementSet;
/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/

/*****  ******************************************************************
*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
*   Licensed to the Apache Software Foundation (ASF) under one or more
*   contributor license agreements. See the NOTICE file distributed
*   with this work for additional information regarding copyright
*   ownership. The ASF licenses this file to you under the Apache
*   License, Version 2.0 (the 'License'); you may not use this file
*   except in compliance with the License. You may obtain a copy of
*   the License at http://www.apache.org/licenses/LICENSE-2.0 .
*
************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/


/*****
* @libreofficestart
*
* Several parts of the following code are the result of the porting,
* started on August 2011, of the C++ code included in the source
* files placed under the folder '/slideshow/source' and
* sub-folders. This got later rebased onto the AL2-licensed versions
* of those files in early 2013.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/


window.onload = init;


var aOOOElemMetaSlides = 'ooo:meta_slides';
var aOOOElemMetaSlide = 'ooo:meta_slide';
var aOOOElemTextField = 'ooo:text_field';
var aPresentationClipPathId = 'presentation_clip_path';
var aPresentationClipPathShrinkId = 'presentation_clip_path_shrink';

var aOOOAttrNumberOfSlides = 'number-of-slides';
var aOOOAttrStartSlideNumber= 'start-slide-number';
var aOOOAttrNumberingType = 'page-numbering-type';
var aOOOAttrListItemNumberingType= 'numbering-type';
var aOOOAttrUsePositionedChars = 'use-positioned-chars';

var aOOOAttrSlide = 'slide';
var aOOOAttrMaster = 'master';
var aOOOAttrDisplayName = 'display-name';
var aOOOAttrSlideDuration = 'slide-duration';
var aOOOAttrHasTransition = 'has-transition';
var aOOOAttrHasCustomBackground = 'has-custom-background';
var aOOOAttrBackgroundVisibility = 'background-visibility';
var aOOOAttrMasterObjectsVisibility = 'master-objects-visibility';
var aOOOAttrPageNumberVisibility = 'page-number-visibility';
var aOOOAttrDateTimeVisibility = 'date-time-visibility';
var aOOOAttrFooterVisibility = 'footer-visibility';
var aOOOAttrHeaderVisibility = 'header-visibility';
var aOOOAttrDateTimeField = 'date-time-field';
var aOOOAttrFooterField = 'footer-field';
var aOOOAttrHeaderField = 'header-field';

var aOOOAttrDateTimeFormat = 'date-time-format';

var aOOOAttrTextAdjust = 'text-adjust';

var aClipPathGroupClassName = 'ClipPathGroup';
var aPageClassName = 'Page';
var aSlideNumberClassName = 'PageNumber';
var aDateTimeClassName = 'DateTime';
var aFooterClassName = 'Footer';
var aHeaderClassName = 'Header';
var aDateClassName = 'Date';
var aTimeClassName = 'Time';
var aSlideNameClassName='PageName';

var NSS = {};
NSS['svg']='http://www.w3.org/2000/svg';
NSS['rdf']='http://www.w3.org/1999/02/22-rdf-syntax-ns#';
NSS['xlink']='http://www.w3.org/1999/xlink';
NSS['xml']='http://www.w3.org/XML/1998/namespace';
NSS['ooo'] = 'http://xml.openoffice.org/svg/export';
NSS['presentation'] = 'http://sun.com/xmlns/staroffice/presentation';
NSS['smil'] = 'http://www.w3.org/2001/SMIL20/';
NSS['anim'] = 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0';

var SLIDE_MODE = 1;
var INDEX_MODE = 2;

var MOUSE_UP = 1;
var MOUSE_DOWN = 2; // eslint-disable-line no-unused-vars
var MOUSE_MOVE = 3; // eslint-disable-line no-unused-vars
var MOUSE_WHEEL = 4;

var LEFT_KEY = 37;          // cursor left keycode
var UP_KEY = 38;            // cursor up keycode
var RIGHT_KEY = 39;         // cursor right keycode
var DOWN_KEY = 40;          // cursor down keycode
var PAGE_UP_KEY = 33;       // page up keycode
var PAGE_DOWN_KEY = 34;     // page down keycode
var HOME_KEY = 36;          // home keycode
var END_KEY = 35;           // end keycode
var ENTER_KEY = 13;
var SPACE_KEY = 32;
var ESCAPE_KEY = 27;
var B_KEY = 66;
var P_KEY = 80;
var Q_KEY = 81;
var W_KEY = 87;

var HIDDEN = 0;
var VISIBLE = 1;
var INHERIT = 2;
var aVisibilityAttributeValue = [ 'hidden', 'visible', 'inherit' ];  // eslint-disable-line no-unused-vars
var aVisibilityValue = { 'hidden' : HIDDEN, 'visible' : VISIBLE, 'inherit' : INHERIT };

var ROOT_NODE = document.getElementsByTagNameNS( NSS['svg'], 'svg' )[0];
var WIDTH = 0;
var HEIGHT = 0;
var INDEX_COLUMNS_DEFAULT = 3;
var INDEX_OFFSET = 0;

var Detect = configureDetectionTools();
var theMetaDoc;
var theSlideIndexPage;
var currentMode = SLIDE_MODE;
var processingEffect = false;
var nCurSlide = undefined;
var bTextHasBeenSelected = false;
var sLastSelectedText = '';

}

if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == 'e' || this._string.charAt(this._currentIndex) == 'E') && (this._string.charAt(this._currentIndex + 1) != 'x' && this._string.charAt(this._currentIndex + 1) != 'm')) {
this._currentIndex++;

if (this._string.charAt(this._currentIndex) == '+') {
this._currentIndex++;
} else if (this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
expsign = -1;
}

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;

while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
exponent *= 10;
exponent += (this._string.charAt(this._currentIndex) - '0');
this._currentIndex++;
}
}

var number = integer + decimal;
number *= sign;

if (exponent)
number *= Math.pow(10, expsign * exponent);

if (startIndex == this._currentIndex)
return undefined;

this._skipOptionalSpacesOrDelimiter();

return number;
}

Source.prototype._parseArcFlag = function() {
if (this._currentIndex >= this._endIndex)
return undefined;
var flag = false;
var flagChar = this._string.charAt(this._currentIndex++);
if (flagChar == '0')
flag = false;
else if (flagChar == '1')
flag = true;
else
return undefined;

this._skipOptionalSpacesOrDelimiter();
return flag;
}

Source.prototype.parseSegment = function() {
var lookahead = this._string[this._currentIndex];
var command = this._pathSegTypeFromChar(lookahead);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {
if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN)
return null;
command = this._nextCommandHelper(lookahead, this._previousCommand);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN)
return null;
} else {
this._currentIndex++;
}

this._previousCommand = command;

switch (command) {
case window.SVGPathSeg.PATHSEG_MOVETO_REL:
return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_MOVETO_ABS:
return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_REL:
return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_ABS:
return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:
return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:
return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:
return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:
return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_CLOSEPATH:
this._skipOptionalSpaces();
return new window.SVGPathSegClosePath(owningPathSegList);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_ARC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
case window.SVGPathSeg.PATHSEG_ARC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
default:
throw 'Unknown path seg type.'
}
}

var builder = new Builder();
var source = new Source(string);

if (!source.initialCommandIsMoveTo())
return [];
while (source.hasMoreData()) {
var pathSeg = source.parseSegment();
if (!pathSeg)
return [];
builder.appendSegment(pathSeg);
}

return builder.pathSegList;
}
}
}());

/*****
* @svgpathend
*
*  The above code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/


var Source = function(string) {
this._string = string;
this._currentIndex = 0;
this._endIndex = this._string.length;
this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;

this._skipOptionalSpaces();
}

Source.prototype._isCurrentSpace = function() {
var character = this._string[this._currentIndex];
return character <= ' ' && (character == ' ' || character == '\n' || character == '\t' || character == '\r' || character == '\f');
}

Source.prototype._skipOptionalSpaces = function() {
while (this._currentIndex < this._endIndex && this._isCurrentSpace())
this._currentIndex++;
return this._currentIndex < this._endIndex;
}

Source.prototype._skipOptionalSpacesOrDelimiter = function() {
if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != ',')
return false;
if (this._skipOptionalSpaces()) {
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ',') {
this._currentIndex++;
this._skipOptionalSpaces();
}
}
return this._currentIndex < this._endIndex;
}

Source.prototype.hasMoreData = function() {
return this._currentIndex < this._endIndex;
}

Source.prototype.peekSegmentType = function() {
var lookahead = this._string[this._currentIndex];
return this._pathSegTypeFromChar(lookahead);
}

Source.prototype._pathSegTypeFromChar = function(lookahead) {
switch (lookahead) {
case 'Z':
case 'z':
return window.SVGPathSeg.PATHSEG_CLOSEPATH;
case 'M':
return window.SVGPathSeg.PATHSEG_MOVETO_ABS;
case 'm':
return window.SVGPathSeg.PATHSEG_MOVETO_REL;
case 'L':
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
case 'l':
return window.SVGPathSeg.PATHSEG_LINETO_REL;
case 'C':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;
case 'c':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;
case 'Q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;
case 'q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;
case 'A':
return window.SVGPathSeg.PATHSEG_ARC_ABS;
case 'a':
return window.SVGPathSeg.PATHSEG_ARC_REL;
case 'H':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;
case 'h':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;
case 'V':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;
case 'v':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;
case 'S':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;
case 's':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;
case 'T':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;
case 't':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;
default:
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}
}

Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {
if ((lookahead == '+' || lookahead == '-' || lookahead == '.' || (lookahead >= '0' && lookahead <= '9')) && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS)
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL)
return window.SVGPathSeg.PATHSEG_LINETO_REL;
return previousCommand;
}
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}

Source.prototype.initialCommandIsMoveTo = function() {
if (!this.hasMoreData())
return true;
var command = this.peekSegmentType();
return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;
}

Source.prototype._parseNumber = function() {
var exponent = 0;
var integer = 0;
var frac = 1;
var decimal = 0;
var sign = 1;
var expsign = 1;

var startIndex = this._currentIndex;

this._skipOptionalSpaces();

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '+')
this._currentIndex++;
else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
sign = -1;
}

if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') && this._string.charAt(this._currentIndex) != '.'))
return undefined;

var startIntPartIndex = this._currentIndex;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9')
this._currentIndex++; // Advance to first non-digit.

if (this._currentIndex != startIntPartIndex) {
var scanIntPartIndex = this._currentIndex - 1;
var multiplier = 1;
while (scanIntPartIndex >= startIntPartIndex) {
integer += multiplier * (this._string.charAt(scanIntPartIndex--) - '0');
multiplier *= 10;
}
}

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '.') {
this._currentIndex++;

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
frac *= 10;
decimal += (this._string.charAt(this._currentIndex) - '0') / frac;
this._currentIndex += 1;
}

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._checkValidIndex(index);
this._list[index] = newItem;
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.removeItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
var item = this._list[index];
this._list.splice(index, 1);
this._writeListToPath();
return item;
}

window.SVGPathSegList.prototype.appendItem = function(newItem) {
this._checkPathSynchronizedToList();

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.push(newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
};

window.SVGPathSegList.prototype.matrixTransform = function(aSVGMatrix) {
this._checkPathSynchronizedToList();

var nLength = this._list.length;
for( var i = 0; i < nLength; ++i )
{
var nX;
var aPathSeg = this._list[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
nX = aPathSeg._x2;
aPathSeg._x2 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y2 + aSVGMatrix.e;
aPathSeg._y2 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y2 + aSVGMatrix.f;
case 'Q':
nX = aPathSeg._x1;
aPathSeg._x1 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y1 + aSVGMatrix.e;
aPathSeg._y1 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y1 + aSVGMatrix.f;
case 'M':
case 'L':
nX = aPathSeg._x;
aPathSeg._x = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y + aSVGMatrix.e;
aPathSeg._y = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y + aSVGMatrix.f;
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
}
}

this._writeListToPath();
};

window.SVGPathSegList.prototype.changeOrientation = function() {
this._checkPathSynchronizedToList();

var aPathSegList = this._list;
var nLength = aPathSegList.length;
if( nLength == 0 ) return;

var nCurrentX = 0;
var nCurrentY = 0;

var aPathSeg = aPathSegList[0];
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.shift();
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
var nX = aPathSeg._x1;
aPathSeg._x1 = aPathSeg._x2;
aPathSeg._x2 = nX;
var nY = aPathSeg._y1;
aPathSeg._y1 = aPathSeg._y2;
aPathSeg._y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: aPathSeg._x, y: aPathSeg._y };
aPathSeg._x = nCurrentX;
aPathSeg._y = nCurrentY;
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
break;
default:
log( 'SVGPathSegList.changeOrientation: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
}

}

aPathSegList.reverse();

var aMovePathSeg = new window.SVGPathSegMovetoAbs( this, nCurrentX, nCurrentY );
aPathSegList.unshift( aMovePathSeg );

this._writeListToPath();
};

window.SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {
var string = '';
var first = true;
pathSegArray.forEach(function(pathSeg) {
if (first) {
first = false;
string += pathSeg._asPathString();
} else {
string += ' ' + pathSeg._asPathString();
}
});
return string;
}

window.SVGPathSegList.prototype._parsePath = function(string) {
if (!string || string.length == 0)
return [];

var owningPathSegList = this;

var Builder = function() {
this.pathSegList = [];
}

Builder.prototype.appendSegment = function(pathSeg) {
this.pathSegList.push(pathSeg);
}

window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new window.SVGPathSegLinetoHorizontalAbs(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new window.SVGPathSegLinetoHorizontalRel(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new window.SVGPathSegLinetoVerticalAbs(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new window.SVGPathSegLinetoVerticalRel(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }

if (!('getPathSegAtLength' in window.SVGPathElement.prototype)) {
window.SVGPathElement.prototype.getPathSegAtLength = function(distance) {
if (distance === undefined || !isFinite(distance))
throw 'Invalid arguments.';

var measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
measurementElement.setAttribute('d', this.getAttribute('d'));
var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;

if (lastPathSegment <= 0)
return 0;

do {
measurementElement.pathSegList.removeItem(lastPathSegment);
if (distance > measurementElement.getTotalLength())
break;
lastPathSegment--;
} while (lastPathSegment > 0);
return lastPathSegment;
}
}
}

if (!('SVGPathSegList' in window) || !('appendItem' in window.SVGPathSegList.prototype)) {
window.SVGPathSegList = function(pathElement) {
this._pathElement = pathElement;
this._list = this._parsePath(this._pathElement.getAttribute('d'));

this._mutationObserverConfig = { 'attributes': true, 'attributeFilter': ['d'] };
this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.classname = 'SVGPathSegList';

Object.defineProperty(window.SVGPathSegList.prototype, 'numberOfItems', {
get: function() {
this._checkPathSynchronizedToList();
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathSegList.prototype, 'length', {
get: function() {
this._checkPathSynchronizedToList();
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathElement.prototype, 'pathSegList', {
get: function() {
if (!this._pathSegList)
this._pathSegList = new window.SVGPathSegList(this);
return this._pathSegList;
},
enumerable: true
});
Object.defineProperty(window.SVGPathElement.prototype, 'normalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedNormalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });

window.SVGPathSegList.prototype._checkPathSynchronizedToList = function() {
this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());
}

window.SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {
if (!this._pathElement)
return;
var hasPathMutations = false;
mutationRecords.forEach(function(record) {
if (record.attributeName == 'd')
hasPathMutations = true;
});
if (hasPathMutations)
this._list = this._parsePath(this._pathElement.getAttribute('d'));
}

window.SVGPathSegList.prototype._writeListToPath = function() {
this._pathElementMutationObserver.disconnect();
this._pathElement.setAttribute('d', window.SVGPathSegList._pathSegArrayAsString(this._list));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.segmentChanged = function(pathSeg) {
this._writeListToPath();
}

window.SVGPathSegList.prototype.clear = function() {
this._checkPathSynchronizedToList();

this._list.forEach(function(pathSeg) {
pathSeg._owningPathSegList = null;
});
this._list = [];
this._writeListToPath();
}

window.SVGPathSegList.prototype.initialize = function(newItem) {
this._checkPathSynchronizedToList();

this._list = [newItem];
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype._checkValidIndex = function(index) {
if (isNaN(index) || index < 0 || index >= this.numberOfItems)
throw 'INDEX_SIZE_ERR';
}

window.SVGPathSegList.prototype.getItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
return this._list[index];
}

window.SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {
this._checkPathSynchronizedToList();

if (index > this.numberOfItems)
index = this.numberOfItems;
if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.splice(index, 0, newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.replaceItem = function(newItem, index) {
this._checkPathSynchronizedToList();
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcAbs.prototype.toString = function() { return '[object SVGPathSegArcAbs]'; }
window.SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcAbs.prototype.clone = function() { return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcRel.prototype.toString = function() { return '[object SVGPathSegArcRel]'; }
window.SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcRel.prototype.clone = function() { return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList);
this._x = x;
}
window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalAbs]'; }
window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList);
this._x = x;
}
window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalRel]'; }
window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalAbs]'; }
window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalRel.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalRel]'; }
window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalRel(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothAbs]'; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothRel]'; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothAbs]'; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothRel]'; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new window.SVGPathSegClosePath(undefined); }
window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new window.SVGPathSegMovetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new window.SVGPathSegMovetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new window.SVGPathSegLinetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new window.SVGPathSegLinetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathSeg.PATHSEG_UNKNOWN = 0;
window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;
window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;
window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;
window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;
window.SVGPathSeg.PATHSEG_LINETO_REL = 5;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;
window.SVGPathSeg.PATHSEG_ARC_ABS = 10;
window.SVGPathSeg.PATHSEG_ARC_REL = 11;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;

window.SVGPathSeg.prototype._segmentChanged = function() {
if (this._owningPathSegList)
this._owningPathSegList.segmentChanged(this);
}

window.SVGPathSegClosePath = function(owningPathSegList) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList);
}
window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegClosePath.prototype.toString = function() { return '[object SVGPathSegClosePath]'; }
window.SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }
window.SVGPathSegClosePath.prototype.clone = function() { return new window.SVGPathSegClosePath(undefined); }

window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoAbs.prototype.toString = function() { return '[object SVGPathSegMovetoAbs]'; }
window.SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoAbs.prototype.clone = function() { return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoRel.prototype.toString = function() { return '[object SVGPathSegMovetoRel]'; }
window.SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoRel.prototype.clone = function() { return new window.SVGPathSegMovetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoAbs.prototype.toString = function() { return '[object SVGPathSegLinetoAbs]'; }
window.SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoAbs.prototype.clone = function() { return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoRel.prototype.toString = function() { return '[object SVGPathSegLinetoRel]'; }
window.SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoRel.prototype.clone = function() { return new window.SVGPathSegLinetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicAbs]'; }
window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicRel]'; }
window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticAbs]'; }
window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticRel]'; }
window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

has.add('air', dua.indexOf('AdobeAIR') >= 0);
has.add('khtml', dav.indexOf('Konqueror') >= 0 ? tv : undefined);
has.add('webkit', parseFloat(dua.split('WebKit/')[1]) || undefined);
has.add('chrome', parseFloat(dua.split('Chrome/')[1]) || undefined);
has.add('safari', dav.indexOf('Safari')>=0 && !has('chrome') ? parseFloat(dav.split('Version/')[1]) : undefined);
has.add('mac', dav.indexOf('Macintosh') >= 0);
has.add('quirks', document.compatMode == 'BackCompat');
has.add('ios', /iPhone|iPod|iPad/.test(dua));
has.add('android', parseFloat(dua.split('Android ')[1]) || undefined);

if(!has('webkit')){
if(dua.indexOf('Opera') >= 0){
has.add('opera', tv >= 9.8 ? parseFloat(dua.split('Version/')[1]) || tv : tv);
}

if(dua.indexOf('Gecko') >= 0 && !has('khtml') && !has('webkit')){
has.add('mozilla', tv);
}
if(has('mozilla')){
has.add('ff', parseFloat(dua.split('Firefox/')[1] || dua.split('Minefield/')[1]) || undefined);
}

if(document.all && !has('opera')){
var isIE = parseFloat(dav.split('MSIE ')[1]) || undefined;

var mode = document.documentMode;
if(mode && mode != 5 && Math.floor(isIE) != mode){
isIE = mode;
}

has.add('ie', isIE);
}

has.add('wii', typeof opera != 'undefined' && opera.wiiremote);
}

var detect =
{
isFF: has('ff'),

isIE: has('ie'),

isKhtml: has('khtml'),

isWebKit: has('webkit'),

isMozilla: has('mozilla'),
isMoz: has('mozilla'),

isOpera: has('opera'),

isSafari: has('safari'),

isChrome: has('chrome'),

isMac: has('mac'),

isIos: has('ios'),

isAndroid: has('android'),

isWii: has('wii'),

isQuirks: has('quirks'),

isAir: has('air')
};
return detect;
}

/*****
* @dojoend
*
*  The above code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/

/*****  **********************************************************************
*
*   Copyright 2015 The Chromium Authors. All rights reserved.
*
*   The Chromium Authors can be found at
*   http://src.chromium.org/svn/trunk/src/AUTHORS
*
*   Redistribution and use in source and binary forms, with or without
*   modification, are permitted provided that the following conditions are
*   met:
*
*   * Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
*   * Redistributions in binary form must reproduce the above
*   copyright notice, this list of conditions and the following disclaimer
*   in the documentation and/or other materials provided with the
*   distribution.
*   * Neither the name of Google Inc. nor the names of its
*   contributors may be used to endorse or promote products derived from
*   this software without specific prior written permission.
*
*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*   'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
*   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
*   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
*   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
*   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
*   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
*   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/


/*****
* @svgpathstart
*
*  The following code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/

(function() { 'use strict';
if (!('SVGPathSeg' in window)) {
window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {
this.pathSegType = type;
this.pathSegTypeAsLetter = typeAsLetter;
this._owningPathSegList = owningPathSegList;
}

window.SVGPathSeg.prototype.classname = 'SVGPathSeg';

}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

var aSlideAnimationsHandler = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler;
if( aSlideAnimationsHandler )
{
var aCurrentEventMultiplexer = aSlideAnimationsHandler.aEventMultiplexer;
if( aCurrentEventMultiplexer )
{
if( aCurrentEventMultiplexer.hasRegisteredMouseClickHandlers() )
{
return aCurrentEventMultiplexer.notifyMouseClick( aEvt );
}
}
}
return slideOnMouseUp( aEvt );
}


function getDefaultMouseHandlerDictionary()
{
var mouseHandlerDict = {};

mouseHandlerDict[SLIDE_MODE] = {};
mouseHandlerDict[INDEX_MODE] = {};

mouseHandlerDict[SLIDE_MODE][MOUSE_UP]
= mouseClickHelper;

mouseHandlerDict[SLIDE_MODE][MOUSE_WHEEL]
= function( aEvt ) { return slideOnMouseWheel( aEvt ); };

mouseHandlerDict[INDEX_MODE][MOUSE_UP]
= function( ) { return toggleSlideIndex(); };

return mouseHandlerDict;
}

function indexSetPageSlide( nIndex )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
nIndex = getSafeIndex( nIndex, 0, aMetaSlideSet.length - 1 );

var nSelectedThumbnailIndex = nIndex % theSlideIndexPage.getTotalThumbnails();
var offset = nIndex - nSelectedThumbnailIndex;

if( offset < 0 )
offset = 0;

if( offset != INDEX_OFFSET )
{
INDEX_OFFSET = offset;
displayIndex( INDEX_OFFSET );
}

theSlideIndexPage.setSelection( nSelectedThumbnailIndex );
}


/*****
* @jessyinkend
*
*  The above code is a derivative work of some parts of the JessyInk project.
*  @source http://code.google.com/p/jessyink/
*/


/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/

/*****  **********************************************************************
*
*  The 'New' BSD License:
*  **********************
*  Copyright (c) 2005-2012, The Dojo Foundation
*  All rights reserved.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions are met:
*
*    * Redistributions of source code must retain the above copyright notice,
*      this list of conditions and the following disclaimer.
*    * Redistributions in binary form must reproduce the above copyright notice,
*      this list of conditions and the following disclaimer in the documentation
*      and/or other materials provided with the distribution.
*    * Neither the name of the Dojo Foundation nor the names of its contributors
*      may be used to endorse or promote products derived from this software
*      without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*  DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
*  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
*  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
*  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
*  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/


/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/


/*****
* @dojostart
*
*  The following code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

function has( name )
{
return has.cache[name];
}

has.cache = {};

has.add = function( name, test )
{
has.cache[name] = test;
};

function configureDetectionTools()
{
if( !navigator )
{
log( 'error: configureDetectionTools: configuration failed' );
return null;
}

var n = navigator,
dua = n.userAgent,
dav = n.appVersion,
tv = parseFloat(dav);
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][HOME_KEY]
= function() { return indexSetPageSlide( 0 ); };
keyCodeDict[INDEX_MODE][END_KEY]
= function() { return indexSetPageSlide( theMetaDoc.nNumberOfSlides - 1 ); };
keyCodeDict[INDEX_MODE][ENTER_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][SPACE_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][ESCAPE_KEY]
= function() { return abandonIndexMode(); };

return keyCodeDict;
}

function getDefaultCharCodeDictionary()
{
var charCodeDict = {};

charCodeDict[SLIDE_MODE] = {};
charCodeDict[INDEX_MODE] = {};

charCodeDict[SLIDE_MODE]['i']
= function () { return toggleSlideIndex(); };

charCodeDict[INDEX_MODE]['i']
= function () { return toggleSlideIndex(); };
charCodeDict[INDEX_MODE]['-']
= function () { return theSlideIndexPage.decreaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['=']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['+']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['0']
= function () { return theSlideIndexPage.resetNumberOfColumns(); };

return charCodeDict;
}


function slideOnMouseUp( aEvt )
{
if (!aEvt)
aEvt = window.event;

var nOffset = 0;

if( aEvt.button == 0 )
nOffset = 1;
else if( aEvt.button == 2 )
nOffset = -1;

if( 0 != nOffset )
dispatchEffects( nOffset );
return true; // the click has been handled
}

document.handleClick = slideOnMouseUp;


function slideOnMouseWheel(aEvt)
{
var delta = 0;

if (!aEvt)
aEvt = window.event;

if (aEvt.wheelDelta)
{ // IE Opera
delta = aEvt.wheelDelta/120;
}
else if (aEvt.detail)
{ // MOZ
delta = -aEvt.detail/3;
}

if (delta > 0)
skipEffects(-1);
else if (delta < 0)
skipEffects(1);

if (aEvt.preventDefault)
aEvt.preventDefault();

aEvt.returnValue = false;
}

if( window.addEventListener )
{
window.addEventListener( 'DOMMouseScroll', function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); }, false );
}

window.onmousewheel
= function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); };

function mouseHandlerDispatch( aEvt, anAction )
{
if( !aEvt )
aEvt = window.event;

var retVal = true;

if ( mouseHandlerDictionary[currentMode] && mouseHandlerDictionary[currentMode][anAction] )
{
var subRetVal = mouseHandlerDictionary[currentMode][anAction]( aEvt );

if( subRetVal != null && subRetVal != undefined )
retVal = subRetVal;
}

if( aEvt.preventDefault && !retVal )
aEvt.preventDefault();

aEvt.returnValue = retVal;

return retVal;
}

document.onmouseup = function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_UP ); };


function mouseClickHelper( aEvt )
{
if( !Detect.isMozilla )
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
var aTextSelection = aWindowObject.getSelection();
var sSelectedText =  aTextSelection.toString();
if( sSelectedText )
{
DBGLOG( 'text selection: ' + sSelectedText );
if( sLastSelectedText !== sSelectedText )
{
bTextHasBeenSelected = true;
sLastSelectedText = sSelectedText;
}
else
{
bTextHasBeenSelected = false;
}
return null;
}
else if( bTextHasBeenSelected )
{
bTextHasBeenSelected = false;
sLastSelectedText = '';
return null;
}
rootNodeInitialBackgroundColor = ROOT_NODE.style.backgroundColor;

if (color === 'initial')
ROOT_NODE.style.backgroundColor = rootNodeInitialBackgroundColor;
else
ROOT_NODE.style.backgroundColor = color;
}

var isContentHidden = false;
var contentInitialVisibilityValues = null;

function getInitialVisibilityValues() {
var list = ROOT_NODE.querySelectorAll('g');
contentInitialVisibilityValues = [];
for (var i = 0; i < list.length; i++) {
var temp = {};
temp.object = list[i];
temp.visibility = list[i].style.visibility;
contentInitialVisibilityValues.push(temp);
}
}

function hideShowContent(color) {
if (contentInitialVisibilityValues === null)
getInitialVisibilityValues();

if (isContentHidden) {
for (var i = 0; i < contentInitialVisibilityValues.length; i++)
contentInitialVisibilityValues[i].object.style.visibility = contentInitialVisibilityValues[i].visibility;

changeRootNodeBackgroundTo('initial');
isContentHidden = false;
}
else {
for (var i = 0; i < contentInitialVisibilityValues.length; i++)
contentInitialVisibilityValues[i].object.style.visibility = 'hidden';

changeRootNodeBackgroundTo(color);
isContentHidden = true;
}
}

function onKeyDown( aEvt )
{
if ( !aEvt )
aEvt = window.event;

var code = aEvt.keyCode || aEvt.charCode || aEvt.code;


if (code == 0 && aEvt.key != undefined) {
switch (aEvt.key) {
case 'UIKeyInputLeftArrow':
code = LEFT_KEY;
break;
case 'UIKeyInputUpArrow':
code = UP_KEY;
break;
case 'UIKeyInputRightArrow':
code = RIGHT_KEY;
break;
case 'UIKeyInputDownArrow':
code = DOWN_KEY;
break;
}

}
else if (code === P_KEY) {
aEvt.preventDefault();
if (ROOT_NODE.style.cursor === 'pointer')
ROOT_NODE.style.cursor = 'default';
else
ROOT_NODE.style.cursor = 'pointer';
}
else if (code === W_KEY) {
hideShowContent('white');
}
else if (code === B_KEY) {
hideShowContent('black');
}


if( !processingEffect && keyCodeDictionary[currentMode] && keyCodeDictionary[currentMode][code] )
{
return keyCodeDictionary[currentMode][code]();
}
else
{
document.onkeypress = onKeyPress;
return null;
}
}
document.onkeydown = onKeyDown;

function onKeyPress( aEvt )
{
document.onkeypress = null;

if ( !aEvt )
aEvt = window.event;

var str = String.fromCharCode( aEvt.keyCode || aEvt.charCode );

if ( !processingEffect && charCodeDictionary[currentMode] && charCodeDictionary[currentMode][str] )
return charCodeDictionary[currentMode][str]();

return null;
}

function getDefaultKeyCodeDictionary()
{
var keyCodeDict = {};

keyCodeDict[SLIDE_MODE] = {};
keyCodeDict[INDEX_MODE] = {};

keyCodeDict[SLIDE_MODE][LEFT_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][RIGHT_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][UP_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][DOWN_KEY]
= function() { return skipEffects(1); };
keyCodeDict[SLIDE_MODE][PAGE_UP_KEY]
= function() { return aSlideShow.rewindAllEffects(); };
keyCodeDict[SLIDE_MODE][PAGE_DOWN_KEY]
= function() { return skipAllEffects(); };
keyCodeDict[SLIDE_MODE][HOME_KEY]
= function() { return aSlideShow.displaySlide( 0, true ); };
keyCodeDict[SLIDE_MODE][END_KEY]
= function() { return aSlideShow.displaySlide( theMetaDoc.nNumberOfSlides - 1, true ); };
keyCodeDict[SLIDE_MODE][SPACE_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][ESCAPE_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };
keyCodeDict[SLIDE_MODE][Q_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };

keyCodeDict[INDEX_MODE][LEFT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - 1 ); };
keyCodeDict[INDEX_MODE][RIGHT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + 1 ); };
keyCodeDict[INDEX_MODE][UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][DOWN_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][PAGE_UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][PAGE_DOWN_KEY]
}

function triggerDomEvent(event, data) {
var gestureEvent = document.createEvent('Event');
gestureEvent.initEvent(event, true, true);
gestureEvent.gesture = data;
data.target.dispatchEvent(gestureEvent);
}

assign(Hammer, {
INPUT_START: INPUT_START,
INPUT_MOVE: INPUT_MOVE,
INPUT_END: INPUT_END,
INPUT_CANCEL: INPUT_CANCEL,

STATE_POSSIBLE: STATE_POSSIBLE,
STATE_BEGAN: STATE_BEGAN,
STATE_CHANGED: STATE_CHANGED,
STATE_ENDED: STATE_ENDED,
STATE_RECOGNIZED: STATE_RECOGNIZED,
STATE_CANCELLED: STATE_CANCELLED,
STATE_FAILED: STATE_FAILED,

DIRECTION_NONE: DIRECTION_NONE,
DIRECTION_LEFT: DIRECTION_LEFT,
DIRECTION_RIGHT: DIRECTION_RIGHT,
DIRECTION_UP: DIRECTION_UP,
DIRECTION_DOWN: DIRECTION_DOWN,
DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,
DIRECTION_VERTICAL: DIRECTION_VERTICAL,
DIRECTION_ALL: DIRECTION_ALL,

Manager: Manager,
Input: Input,
TouchAction: TouchAction,

TouchInput: TouchInput,
MouseInput: MouseInput,
PointerEventInput: PointerEventInput,
TouchMouseInput: TouchMouseInput,
SingleTouchInput: SingleTouchInput,

Recognizer: Recognizer,
AttrRecognizer: AttrRecognizer,
Tap: TapRecognizer,
Pan: PanRecognizer,
Swipe: SwipeRecognizer,
Pinch: PinchRecognizer,
Rotate: RotateRecognizer,
Press: PressRecognizer,

on: addEventListeners,
off: removeEventListeners,
each: each,
merge: merge,
extend: extend,
assign: assign,
inherit: inherit,
bindFn: bindFn,
prefixed: prefixed
});

var freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line
freeGlobal.Hammer = Hammer;

if (typeof define === 'function' && define.amd) {
define(function() {
return Hammer;
});
} else if (typeof module != 'undefined' && module.exports) {
module.exports = Hammer;
} else {
window[exportName] = Hammer;
}

})(window, document, 'Hammer');

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/

/*****  ******************************************************************
*
* Copyright 2008-2013 Hannes Hochreiner
*
* The JavaScript code included between the start note '@jessyinkstart'
* and the end note '@jessyinkend' is subject to the terms of the Mozilla
* Public License, v. 2.0. If a copy of the MPL was not distributed with
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Alternatively, you can redistribute and/or that part of this file
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see http://www.gnu.org/licenses/.
*/

/*****
*  You can find the complete source code of the JessyInk project at:
*  @source http://code.google.com/p/jessyink/
*/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/


/*****
* @jessyinkstart
*
*  The following code is a derivative work of some parts of the JessyInk
*  project.
*  @source http://code.google.com/p/jessyink/
*/

function getElementsByProperty( node, name )
{
var elements = [];

if( node.getAttribute( name ) )
elements.push( node );

for( var counter = 0; counter < node.childNodes.length; ++counter )
{
if( node.childNodes[counter].nodeType == 1 )
{
var subElements = getElementsByProperty( node.childNodes[counter], name );
elements = elements.concat( subElements );
}
}
return elements;
}

var rootNodeInitialBackgroundColor = undefined;

function changeRootNodeBackgroundTo(color) {
if (rootNodeInitialBackgroundColor === undefined)
recognizer = recognizers[i];

if (session.stopped !== FORCED_STOP && ( // 1
!curRecognizer || recognizer == curRecognizer || // 2
recognizer.canRecognizeWith(curRecognizer))) { // 3
recognizer.recognize(inputData);
} else {
recognizer.reset();
}

if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {
curRecognizer = session.curRecognizer = recognizer;
}
i++;
}
},

get: function(recognizer) {
if (recognizer instanceof Recognizer) {
return recognizer;
}

var recognizers = this.recognizers;
for (var i = 0; i < recognizers.length; i++) {
if (recognizers[i].options.event == recognizer) {
return recognizers[i];
}
}
return null;
},

add: function(recognizer) {
if (invokeArrayArg(recognizer, 'add', this)) {
return this;
}

var existing = this.get(recognizer.options.event);
if (existing) {
this.remove(existing);
}

this.recognizers.push(recognizer);
recognizer.manager = this;

this.touchAction.update();
return recognizer;
},

remove: function(recognizer) {
if (invokeArrayArg(recognizer, 'remove', this)) {
return this;
}

recognizer = this.get(recognizer);

if (recognizer) {
var recognizers = this.recognizers;
var index = inArray(recognizers, recognizer);

if (index !== -1) {
recognizers.splice(index, 1);
this.touchAction.update();
}
}

return this;
},

on: function(events, handler) {
if (events === undefined) {
return;
}
if (handler === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
handlers[event] = handlers[event] || [];
handlers[event].push(handler);
});
return this;
},

off: function(events, handler) {
if (events === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
if (!handler) {
delete handlers[event];
} else {
handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);
}
});
return this;
},

emit: function(event, data) {
if (this.options.domEvents) {
triggerDomEvent(event, data);
}

var handlers = this.handlers[event] && this.handlers[event].slice();
if (!handlers || !handlers.length) {
return;
}

data.type = event;
data.preventDefault = function() {
data.srcEvent.preventDefault();
};

var i = 0;
while (i < handlers.length) {
handlers[i](data);
i++;
}
},

destroy: function() {
this.element && toggleCssProps(this, false);

this.handlers = {};
this.session = {};
this.input.destroy();
this.element = null;
}
};

function toggleCssProps(manager, add) {
var element = manager.element;
if (!element.style) {
return;
}
var prop;
each(manager.options.cssProps, function(value, name) {
prop = prefixed(element.style, name);
if (add) {
manager.oldCssProps[prop] = element.style[prop];
element.style[prop] = value;
} else {
element.style[prop] = manager.oldCssProps[prop] || '';
}
});
if (!add) {
manager.oldCssProps = {};
}
this.count = 1;
} else {
this.count += 1;
}

this._input = input;

var tapCount = this.count % options.taps;
if (tapCount === 0) {
if (!this.hasRequireFailures()) {
return STATE_RECOGNIZED;
} else {
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.interval, this);
return STATE_BEGAN;
}
}
}
return STATE_FAILED;
},

failTimeout: function() {
this._timer = setTimeoutContext(function() {
this.state = STATE_FAILED;
}, this.options.interval, this);
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function() {
if (this.state == STATE_RECOGNIZED) {
this._input.tapCount = this.count;
this.manager.emit(this.options.event, this._input);
}
}
});

function Hammer(element, options) {
options = options || {};
options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);
return new Manager(element, options);
}

Hammer.VERSION = '2.0.7';

Hammer.defaults = {
domEvents: false,

touchAction: TOUCH_ACTION_COMPUTE,

enable: true,

inputTarget: null,

inputClass: null,

preset: [
[RotateRecognizer, {enable: false}],
[PinchRecognizer, {enable: false}, ['rotate']],
[SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],
[PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],
[TapRecognizer],
[TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],
[PressRecognizer]
],

cssProps: {
userSelect: 'none',

touchSelect: 'none',

touchCallout: 'none',

contentZooming: 'none',

userDrag: 'none',

tapHighlightColor: 'rgba(0,0,0,0)'
}
};

var STOP = 1;
var FORCED_STOP = 2;

function Manager(element, options) {
this.options = assign({}, Hammer.defaults, options || {});

this.options.inputTarget = this.options.inputTarget || element;

this.handlers = {};
this.session = {};
this.recognizers = [];
this.oldCssProps = {};

this.element = element;
this.input = createInputInstance(this);
this.touchAction = new TouchAction(this, this.options.touchAction);

toggleCssProps(this, true);

each(this.options.recognizers, function(item) {
var recognizer = this.add(new (item[0])(item[1]));
item[2] && recognizer.recognizeWith(item[2]);
item[3] && recognizer.requireFailure(item[3]);
}, this);
}

Manager.prototype = {
set: function(options) {
assign(this.options, options);

if (options.touchAction) {
this.touchAction.update();
}
if (options.inputTarget) {
this.input.destroy();
this.input.target = options.inputTarget;
this.input.init();
}
return this;
},

stop: function(force) {
this.session.stopped = force ? FORCED_STOP : STOP;
},

recognize: function(inputData) {
var session = this.session;
if (session.stopped) {
return;
}

this.touchAction.preventDefaults(inputData);

var recognizer;
var recognizers = this.recognizers;

var curRecognizer = session.curRecognizer;

if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {
curRecognizer = session.curRecognizer = null;
}

var i = 0;
while (i < recognizers.length) {
if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {
this.reset();
} else if (input.eventType & INPUT_START) {
this.reset();
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.time, this);
} else if (input.eventType & INPUT_END) {
return STATE_RECOGNIZED;
}
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function(input) {
if (this.state !== STATE_RECOGNIZED) {
return;
}

if (input && (input.eventType & INPUT_END)) {
this.manager.emit(this.options.event + 'up', input);
} else {
this._input.timeStamp = now();
this.manager.emit(this.options.event, this._input);
}
}
});

function RotateRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(RotateRecognizer, AttrRecognizer, {
defaults: {
event: 'rotate',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);
}
});

function SwipeRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(SwipeRecognizer, AttrRecognizer, {
defaults: {
event: 'swipe',
threshold: 10,
velocity: 0.3,
direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,
pointers: 1
},

getTouchAction: function() {
return PanRecognizer.prototype.getTouchAction.call(this);
},

attrTest: function(input) {
var direction = this.options.direction;
var velocity;

if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {
velocity = input.overallVelocity;
} else if (direction & DIRECTION_HORIZONTAL) {
velocity = input.overallVelocityX;
} else if (direction & DIRECTION_VERTICAL) {
velocity = input.overallVelocityY;
}

return this._super.attrTest.call(this, input) &&
direction & input.offsetDirection &&
input.distance > this.options.threshold &&
input.maxPointers == this.options.pointers &&
abs(velocity) > this.options.velocity && input.eventType & INPUT_END;
},

emit: function(input) {
var direction = directionStr(input.offsetDirection);
if (direction) {
this.manager.emit(this.options.event + direction, input);
}

this.manager.emit(this.options.event, input);
}
});

function TapRecognizer() {
Recognizer.apply(this, arguments);

this.pTime = false;
this.pCenter = false;

this._timer = null;
this._input = null;
this.count = 0;
}

inherit(TapRecognizer, Recognizer, {
defaults: {
event: 'tap',
pointers: 1,
taps: 1,
interval: 300, // max time between the multi-tap taps
time: 250, // max time of the pointer to be down (like finger on the screen)
threshold: 9, // a minimal movement is ok, but keep it low
posThreshold: 10 // a multi-tap can be a bit off the initial position
},

getTouchAction: function() {
return [TOUCH_ACTION_MANIPULATION];
},

process: function(input) {
var options = this.options;

var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTouchTime = input.deltaTime < options.time;

this.reset();

if ((input.eventType & INPUT_START) && (this.count === 0)) {
return this.failTimeout();
}

if (validMovement && validTouchTime && validPointers) {
if (input.eventType != INPUT_END) {
return this.failTimeout();
}

var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;
var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;

this.pTime = input.timeStamp;
this.pCenter = input.center;

if (!validMultiTap || !validInterval) {
var optionPointers = this.options.pointers;
return optionPointers === 0 || input.pointers.length === optionPointers;
},

process: function(input) {
var state = this.state;
var eventType = input.eventType;

var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);
var isValid = this.attrTest(input);

if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {
return state | STATE_CANCELLED;
} else if (isRecognized || isValid) {
if (eventType & INPUT_END) {
return state | STATE_ENDED;
} else if (!(state & STATE_BEGAN)) {
return STATE_BEGAN;
}
return state | STATE_CHANGED;
}
return STATE_FAILED;
}
});

function PanRecognizer() {
AttrRecognizer.apply(this, arguments);

this.pX = null;
this.pY = null;
}

inherit(PanRecognizer, AttrRecognizer, {
defaults: {
event: 'pan',
threshold: 10,
pointers: 1,
direction: DIRECTION_ALL
},

getTouchAction: function() {
var direction = this.options.direction;
var actions = [];
if (direction & DIRECTION_HORIZONTAL) {
actions.push(TOUCH_ACTION_PAN_Y);
}
if (direction & DIRECTION_VERTICAL) {
actions.push(TOUCH_ACTION_PAN_X);
}
return actions;
},

directionTest: function(input) {
var options = this.options;
var hasMoved = true;
var distance = input.distance;
var direction = input.direction;
var x = input.deltaX;
var y = input.deltaY;

if (!(direction & options.direction)) {
if (options.direction & DIRECTION_HORIZONTAL) {
direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;
hasMoved = x != this.pX;
distance = Math.abs(input.deltaX);
} else {
direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;
hasMoved = y != this.pY;
distance = Math.abs(input.deltaY);
}
}
input.direction = direction;
return hasMoved && distance > options.threshold && direction & options.direction;
},

attrTest: function(input) {
return AttrRecognizer.prototype.attrTest.call(this, input) &&
(this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));
},

emit: function(input) {

this.pX = input.deltaX;
this.pY = input.deltaY;

var direction = directionStr(input.direction);

if (direction) {
input.additionalEvent = this.options.event + direction;
}
this._super.emit.call(this, input);
}
});

function PinchRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(PinchRecognizer, AttrRecognizer, {
defaults: {
event: 'pinch',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);
},

emit: function(input) {
if (input.scale !== 1) {
var inOut = input.scale < 1 ? 'in' : 'out';
input.additionalEvent = this.options.event + inOut;
}
this._super.emit.call(this, input);
}
});

function PressRecognizer() {
Recognizer.apply(this, arguments);

this._timer = null;
this._input = null;
}

inherit(PressRecognizer, Recognizer, {
defaults: {
event: 'press',
pointers: 1,
time: 251, // minimal time of the pointer to be pressed
threshold: 9 // a minimal movement is ok, but keep it low
},

getTouchAction: function() {
return [TOUCH_ACTION_AUTO];
},

process: function(input) {
var options = this.options;
var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTime = input.deltaTime > options.time;

this._input = input;

return this;
},

requireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {
return this;
}

var requireFail = this.requireFail;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (inArray(requireFail, otherRecognizer) === -1) {
requireFail.push(otherRecognizer);
otherRecognizer.requireFailure(this);
}
return this;
},

dropRequireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
var index = inArray(this.requireFail, otherRecognizer);
if (index > -1) {
this.requireFail.splice(index, 1);
}
return this;
},

hasRequireFailures: function() {
return this.requireFail.length > 0;
},

canRecognizeWith: function(otherRecognizer) {
return !!this.simultaneous[otherRecognizer.id];
},

emit: function(input) {
var self = this;
var state = this.state;

function emit(event) {
self.manager.emit(event, input);
}

if (state < STATE_ENDED) {
emit(self.options.event + stateStr(state));
}

emit(self.options.event); // simple 'eventName' events

if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)
emit(input.additionalEvent);
}

if (state >= STATE_ENDED) {
emit(self.options.event + stateStr(state));
}
},

tryEmit: function(input) {
if (this.canEmit()) {
return this.emit(input);
}
this.state = STATE_FAILED;
},

canEmit: function() {
var i = 0;
while (i < this.requireFail.length) {
if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {
return false;
}
i++;
}
return true;
},

recognize: function(inputData) {
var inputDataClone = assign({}, inputData);

if (!boolOrFn(this.options.enable, [this, inputDataClone])) {
this.reset();
this.state = STATE_FAILED;
return;
}

if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {
this.state = STATE_POSSIBLE;
}

this.state = this.process(inputDataClone);

if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {
this.tryEmit(inputDataClone);
}
},

process: function(inputData) { }, // jshint ignore:line

getTouchAction: function() { },

reset: function() { }
};

function stateStr(state) {
if (state & STATE_CANCELLED) {
return 'cancel';
} else if (state & STATE_ENDED) {
return 'end';
} else if (state & STATE_CHANGED) {
return 'move';
} else if (state & STATE_BEGAN) {
return 'start';
}
return '';
}

function directionStr(direction) {
if (direction == DIRECTION_DOWN) {
return 'down';
} else if (direction == DIRECTION_UP) {
return 'up';
} else if (direction == DIRECTION_LEFT) {
return 'left';
} else if (direction == DIRECTION_RIGHT) {
return 'right';
}
return '';
}

function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
var manager = recognizer.manager;
if (manager) {
return manager.get(otherRecognizer);
}
return otherRecognizer;
}

function AttrRecognizer() {
Recognizer.apply(this, arguments);
}

inherit(AttrRecognizer, Recognizer, {
defaults: {
pointers: 1
},

attrTest: function(input) {
}
this.actions = value.toLowerCase().trim();
},

update: function() {
this.set(this.manager.options.touchAction);
},

compute: function() {
var actions = [];
each(this.manager.recognizers, function(recognizer) {
if (boolOrFn(recognizer.options.enable, [recognizer])) {
actions = actions.concat(recognizer.getTouchAction());
}
});
return cleanTouchActions(actions.join(' '));
},

preventDefaults: function(input) {
var srcEvent = input.srcEvent;
var direction = input.offsetDirection;

if (this.manager.session.prevented) {
srcEvent.preventDefault();
return;
}

var actions = this.actions;
var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];
var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];

if (hasNone) {

var isTapPointer = input.pointers.length === 1;
var isTapMovement = input.distance < 2;
var isTapTouchTime = input.deltaTime < 250;

if (isTapPointer && isTapMovement && isTapTouchTime) {
return;
}
}

if (hasPanX && hasPanY) {
return;
}

if (hasNone ||
(hasPanY && direction & DIRECTION_HORIZONTAL) ||
(hasPanX && direction & DIRECTION_VERTICAL)) {
return this.preventSrc(srcEvent);
}
},

preventSrc: function(srcEvent) {
this.manager.session.prevented = true;
srcEvent.preventDefault();
}
};

function cleanTouchActions(actions) {
if (inStr(actions, TOUCH_ACTION_NONE)) {
return TOUCH_ACTION_NONE;
}

var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);

if (hasPanX && hasPanY) {
return TOUCH_ACTION_NONE;
}

if (hasPanX || hasPanY) {
return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;
}

if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {
return TOUCH_ACTION_MANIPULATION;
}

return TOUCH_ACTION_AUTO;
}

function getTouchActionProps() {
if (!NATIVE_TOUCH_ACTION) {
return false;
}
var touchMap = {};
var cssSupports = window.CSS && window.CSS.supports;
['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {

touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;
});
return touchMap;
}

var STATE_POSSIBLE = 1;
var STATE_BEGAN = 2;
var STATE_CHANGED = 4;
var STATE_ENDED = 8;
var STATE_RECOGNIZED = STATE_ENDED;
var STATE_CANCELLED = 16;
var STATE_FAILED = 32;

function Recognizer(options) {
this.options = assign({}, this.defaults, options || {});

this.id = uniqueId();

this.manager = null;

this.options.enable = ifUndefined(this.options.enable, true);

this.state = STATE_POSSIBLE;

this.simultaneous = {};
this.requireFail = [];
}

Recognizer.prototype = {
defaults: {},

set: function(options) {
assign(this.options, options);

this.manager && this.manager.touchAction.update();
return this;
},

recognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {
return this;
}

var simultaneous = this.simultaneous;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (!simultaneous[otherRecognizer.id]) {
simultaneous[otherRecognizer.id] = otherRecognizer;
otherRecognizer.recognizeWith(this);
}
return this;
},

dropRecognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
delete this.simultaneous[otherRecognizer.id];
function getTouches(ev, type) {
var allTouches = toArray(ev.touches);
var targetIds = this.targetIds;

if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {
targetIds[allTouches[0].identifier] = true;
return [allTouches, allTouches];
}

var i,
targetTouches,
changedTouches = toArray(ev.changedTouches),
changedTargetTouches = [],
target = this.target;

targetTouches = allTouches.filter(function(touch) {
return hasParent(touch.target, target);
});

if (type === INPUT_START) {
i = 0;
while (i < targetTouches.length) {
targetIds[targetTouches[i].identifier] = true;
i++;
}
}

i = 0;
while (i < changedTouches.length) {
if (targetIds[changedTouches[i].identifier]) {
changedTargetTouches.push(changedTouches[i]);
}

if (type & (INPUT_END | INPUT_CANCEL)) {
delete targetIds[changedTouches[i].identifier];
}
i++;
}

if (!changedTargetTouches.length) {
return;
}

return [
uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),
changedTargetTouches
];
}


var DEDUP_TIMEOUT = 2500;
var DEDUP_DISTANCE = 25;

function TouchMouseInput() {
Input.apply(this, arguments);

var handler = bindFn(this.handler, this);
this.touch = new TouchInput(this.manager, handler);
this.mouse = new MouseInput(this.manager, handler);

this.primaryTouch = null;
this.lastTouches = [];
}

inherit(TouchMouseInput, Input, {
handler: function TMEhandler(manager, inputEvent, inputData) {
var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),
isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);

if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {
return;
}

if (isTouch) {
recordTouches.call(this, inputEvent, inputData);
} else if (isMouse && isSyntheticEvent.call(this, inputData)) {
return;
}

this.callback(manager, inputEvent, inputData);
},

destroy: function destroy() {
this.touch.destroy();
this.mouse.destroy();
}
});

function recordTouches(eventType, eventData) {
if (eventType & INPUT_START) {
this.primaryTouch = eventData.changedPointers[0].identifier;
setLastTouch.call(this, eventData);
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
setLastTouch.call(this, eventData);
}
}

function setLastTouch(eventData) {
var touch = eventData.changedPointers[0];

if (touch.identifier === this.primaryTouch) {
var lastTouch = {x: touch.clientX, y: touch.clientY};
this.lastTouches.push(lastTouch);
var lts = this.lastTouches;
var removeLastTouch = function() {
var i = lts.indexOf(lastTouch);
if (i > -1) {
lts.splice(i, 1);
}
};
setTimeout(removeLastTouch, DEDUP_TIMEOUT);
}
}

function isSyntheticEvent(eventData) {
var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;
for (var i = 0; i < this.lastTouches.length; i++) {
var t = this.lastTouches[i];
var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);
if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {
return true;
}
}
return false;
}

var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');
var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;

var TOUCH_ACTION_COMPUTE = 'compute';
var TOUCH_ACTION_AUTO = 'auto';
var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented
var TOUCH_ACTION_NONE = 'none';
var TOUCH_ACTION_PAN_X = 'pan-x';
var TOUCH_ACTION_PAN_Y = 'pan-y';
var TOUCH_ACTION_MAP = getTouchActionProps();

function TouchAction(manager, value) {
this.manager = manager;
this.set(value);
}

TouchAction.prototype = {
set: function(value) {
if (value == TOUCH_ACTION_COMPUTE) {
value = this.compute();
}

if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {
this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;
5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816
};

var POINTER_ELEMENT_EVENTS = 'pointerdown';
var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';

if (window.MSPointerEvent && !window.PointerEvent) {
POINTER_ELEMENT_EVENTS = 'MSPointerDown';
POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';
}

function PointerEventInput() {
this.evEl = POINTER_ELEMENT_EVENTS;
this.evWin = POINTER_WINDOW_EVENTS;

Input.apply(this, arguments);

this.store = (this.manager.session.pointerEvents = []);
}

inherit(PointerEventInput, Input, {
handler: function PEhandler(ev) {
var store = this.store;
var removePointer = false;

var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');
var eventType = POINTER_INPUT_MAP[eventTypeNormalized];
var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;

var isTouch = (pointerType == INPUT_TYPE_TOUCH);

var storeIndex = inArray(store, ev.pointerId, 'pointerId');

if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {
if (storeIndex < 0) {
store.push(ev);
storeIndex = store.length - 1;
}
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
removePointer = true;
}

if (storeIndex < 0) {
return;
}

store[storeIndex] = ev;

this.callback(this.manager, eventType, {
pointers: store,
changedPointers: [ev],
pointerType: pointerType,
srcEvent: ev
});

if (removePointer) {
store.splice(storeIndex, 1);
}
}
});

var SINGLE_TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';
var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';

function SingleTouchInput() {
this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;
this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;
this.started = false;

Input.apply(this, arguments);
}

inherit(SingleTouchInput, Input, {
handler: function TEhandler(ev) {
var type = SINGLE_TOUCH_INPUT_MAP[ev.type];

if (type === INPUT_START) {
this.started = true;
}

if (!this.started) {
return;
}

var touches = normalizeSingleTouches.call(this, ev, type);

if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {
this.started = false;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

function normalizeSingleTouches(ev, type) {
var all = toArray(ev.touches);
var changed = toArray(ev.changedTouches);

if (type & (INPUT_END | INPUT_CANCEL)) {
all = uniqueArray(all.concat(changed), 'identifier', true);
}

return [all, changed];
}

var TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';

function TouchInput() {
this.evTarget = TOUCH_TARGET_EVENTS;
this.targetIds = {};

Input.apply(this, arguments);
}

inherit(TouchInput, Input, {
handler: function MTEhandler(ev) {
var type = TOUCH_INPUT_MAP[ev.type];
var touches = getTouches.call(this, ev, type);
if (!touches) {
return;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

input.direction = direction;
}

function simpleCloneInputData(input) {
var pointers = [];
var i = 0;
while (i < input.pointers.length) {
pointers[i] = {
clientX: round(input.pointers[i].clientX),
clientY: round(input.pointers[i].clientY)
};
i++;
}

return {
timeStamp: now(),
pointers: pointers,
center: getCenter(pointers),
deltaX: input.deltaX,
deltaY: input.deltaY
};
}

function getCenter(pointers) {
var pointersLength = pointers.length;

if (pointersLength === 1) {
return {
x: round(pointers[0].clientX),
y: round(pointers[0].clientY)
};
}

var x = 0, y = 0, i = 0;
while (i < pointersLength) {
x += pointers[i].clientX;
y += pointers[i].clientY;
i++;
}

return {
x: round(x / pointersLength),
y: round(y / pointersLength)
};
}

function getVelocity(deltaTime, x, y) {
return {
x: x / deltaTime || 0,
y: y / deltaTime || 0
};
}

function getDirection(x, y) {
if (x === y) {
return DIRECTION_NONE;
}

if (abs(x) >= abs(y)) {
return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
}
return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
}

function getDistance(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];

return Math.hypot(x, y);
}

function getAngle(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];
return Math.atan2(y, x) * 180 / Math.PI;
}

function getRotation(start, end) {
return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);
}

function getScale(start, end) {
return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);
}

var MOUSE_INPUT_MAP = {
mousedown: INPUT_START,
mousemove: INPUT_MOVE,
mouseup: INPUT_END
};

var MOUSE_ELEMENT_EVENTS = 'mousedown';
var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';

function MouseInput() {
this.evEl = MOUSE_ELEMENT_EVENTS;
this.evWin = MOUSE_WINDOW_EVENTS;

this.pressed = false; // mousedown state

Input.apply(this, arguments);
}

inherit(MouseInput, Input, {
handler: function MEhandler(ev) {
var eventType = MOUSE_INPUT_MAP[ev.type];

if (eventType & INPUT_START && ev.button === 0) {
this.pressed = true;
}

if (eventType & INPUT_MOVE && ev.which !== 1) {
eventType = INPUT_END;
}

if (!this.pressed) {
return;
}

if (eventType & INPUT_END) {
this.pressed = false;
}

this.callback(this.manager, eventType, {
pointers: [ev],
changedPointers: [ev],
pointerType: INPUT_TYPE_MOUSE,
srcEvent: ev
});
}
});

var POINTER_INPUT_MAP = {
pointerdown: INPUT_START,
pointermove: INPUT_MOVE,
pointerup: INPUT_END,
pointercancel: INPUT_CANCEL,
pointerout: INPUT_CANCEL
};

var IE10_POINTER_TYPE_ENUM = {
2: INPUT_TYPE_TOUCH,
3: INPUT_TYPE_PEN,
4: INPUT_TYPE_MOUSE,
this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
},

destroy: function() {
this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
}
};

function createInputInstance(manager) {
var Type;
var inputClass = manager.options.inputClass;

if (inputClass) {
Type = inputClass;
} else if (!SUPPORT_TOUCH && SUPPORT_POINTER_EVENTS) {
Type = PointerEventInput;
} else if (SUPPORT_ONLY_TOUCH) {
Type = TouchInput;
} else if (!SUPPORT_TOUCH) {
Type = MouseInput;
} else {
Type = TouchMouseInput;
}
return new (Type)(manager, inputHandler);
}

function inputHandler(manager, eventType, input) {
var pointersLen = input.pointers.length;
var changedPointersLen = input.changedPointers.length;
var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));
var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));

input.isFirst = !!isFirst;
input.isFinal = !!isFinal;

if (isFirst) {
manager.session = {};
}

input.eventType = eventType;

computeInputData(manager, input);

manager.emit('hammer.input', input);

manager.recognize(input);
manager.session.prevInput = input;
}

function computeInputData(manager, input) {
var session = manager.session;
var pointers = input.pointers;
var pointersLength = pointers.length;

if (!session.firstInput) {
session.firstInput = simpleCloneInputData(input);
}

if (pointersLength > 1 && !session.firstMultiple) {
session.firstMultiple = simpleCloneInputData(input);
} else if (pointersLength === 1) {
session.firstMultiple = false;
}

var firstInput = session.firstInput;
var firstMultiple = session.firstMultiple;
var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;

var center = input.center = getCenter(pointers);
input.timeStamp = now();
input.deltaTime = input.timeStamp - firstInput.timeStamp;

input.angle = getAngle(offsetCenter, center);
input.distance = getDistance(offsetCenter, center);

computeDeltaXY(session, input);
input.offsetDirection = getDirection(input.deltaX, input.deltaY);

var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
input.overallVelocityX = overallVelocity.x;
input.overallVelocityY = overallVelocity.y;
input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;

input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;

input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >
session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);

computeIntervalInputData(session, input);

var target = manager.element;
if (hasParent(input.srcEvent.target, target)) {
target = input.srcEvent.target;
}
input.target = target;
}

function computeDeltaXY(session, input) {
var center = input.center;
var offset = session.offsetDelta || {};
var prevDelta = session.prevDelta || {};
var prevInput = session.prevInput || {};

if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
prevDelta = session.prevDelta = {
x: prevInput.deltaX || 0,
y: prevInput.deltaY || 0
};

offset = session.offsetDelta = {
x: center.x,
y: center.y
};
}

input.deltaX = prevDelta.x + (center.x - offset.x);
input.deltaY = prevDelta.y + (center.y - offset.y);
}

function computeIntervalInputData(session, input) {
var last = session.lastInterval || input,
deltaTime = input.timeStamp - last.timeStamp,
velocity, velocityX, velocityY, direction;

if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {
var deltaX = input.deltaX - last.deltaX;
var deltaY = input.deltaY - last.deltaY;

var v = getVelocity(deltaTime, deltaX, deltaY);
velocityX = v.x;
velocityY = v.y;
velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;
direction = getDirection(deltaX, deltaY);

session.lastInterval = input;
} else {
velocity = last.velocity;
velocityX = last.velocityX;
velocityY = last.velocityY;
direction = last.direction;
}

input.velocity = velocity;
input.velocityX = velocityX;
input.velocityY = velocityY;
});
}

function hasParent(node, parent) {
while (node) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
}

function inStr(str, find) {
return str.indexOf(find) > -1;
}

function splitStr(str) {
return str.trim().split(/\s+/g);
}

function inArray(src, find, findByKey) {
if (src.indexOf && !findByKey) {
return src.indexOf(find);
} else {
var i = 0;
while (i < src.length) {
if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {
return i;
}
i++;
}
return -1;
}
}

function toArray(obj) {
return Array.prototype.slice.call(obj, 0);
}

function uniqueArray(src, key, sort) {
var results = [];
var values = [];
var i = 0;

while (i < src.length) {
var val = key ? src[i][key] : src[i];
if (inArray(values, val) < 0) {
results.push(src[i]);
}
values[i] = val;
i++;
}

if (sort) {
if (!key) {
results = results.sort();
} else {
results = results.sort(function sortUniqueArray(a, b) {
return a[key] > b[key];
});
}
}

return results;
}

function prefixed(obj, property) {
if (obj === undefined) {
return undefined;
}

var prefix, prop;
var camelProp = property[0].toUpperCase() + property.slice(1);

var i = 0;
while (i < VENDOR_PREFIXES.length) {
prefix = VENDOR_PREFIXES[i];
prop = (prefix) ? prefix + camelProp : property;

if (prop in obj) {
return prop;
}
i++;
}
return undefined;
}

var _uniqueId = 1;
function uniqueId() {
return _uniqueId++;
}

function getWindowForElement(element) {
var doc = element.ownerDocument || element;
return (doc.defaultView || doc.parentWindow || window);
}

var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;

var SUPPORT_TOUCH = ('ontouchstart' in window);
var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;
var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);

var INPUT_TYPE_TOUCH = 'touch';
var INPUT_TYPE_PEN = 'pen';
var INPUT_TYPE_MOUSE = 'mouse';
var INPUT_TYPE_KINECT = 'kinect';

var COMPUTE_INTERVAL = 25;

var INPUT_START = 1;
var INPUT_MOVE = 2;
var INPUT_END = 4;
var INPUT_CANCEL = 8;

var DIRECTION_NONE = 1;
var DIRECTION_LEFT = 2;
var DIRECTION_RIGHT = 4;
var DIRECTION_UP = 8;
var DIRECTION_DOWN = 16;

var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;
var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;
var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;

var PROPS_XY = ['x', 'y'];
var PROPS_CLIENT_XY = ['clientX', 'clientY'];

function Input(manager, callback) {
var self = this;
this.manager = manager;
this.callback = callback;
this.element = manager.element;
this.target = manager.options.inputTarget;

this.domHandler = function(ev) {
if (boolOrFn(manager.options.enable, [manager])) {
self.handler(ev);
}
};

this.init();

}

Input.prototype = {
handler: function() { },

init: function() {
<![CDATA[


(function(window, document, exportName, undefined) {
'use strict';

var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];
var TEST_ELEMENT = document.createElement('div');

var TYPE_FUNCTION = 'function';

var round = Math.round;
var abs = Math.abs;
var now = Date.now;

if (!Math.trunc) {
Math.trunc = function (v) {
return v < 0 ? Math.ceil(v) : Math.floor(v);
};
}

function setTimeoutContext(fn, timeout, context) {
return setTimeout(bindFn(fn, context), timeout);
}

function invokeArrayArg(arg, fn, context) {
if (Array.isArray(arg)) {
each(arg, context[fn], context);
return true;
}
return false;
}

function each(obj, iterator, context) {
var i;

if (!obj) {
return;
}

if (obj.forEach) {
obj.forEach(iterator, context);
} else if (obj.length !== undefined) {
i = 0;
while (i < obj.length) {
iterator.call(context, obj[i], i, obj);
i++;
}
} else {
for (i in obj) {
obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);
}
}
}

function deprecate(method, name, message) {
var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\n' + message + ' AT \n';
return function() {
var e = new Error('get-stack-trace');
var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';

var log = window.console && (window.console.warn || window.console.log);
if (log) {
log.call(window.console, deprecationMessage, stack);
}
return method.apply(this, arguments);
};
}

var assign;
if (typeof Object.assign !== 'function') {
assign = function assign(target) {
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}

var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
} else {
assign = Object.assign;
}

var extend = deprecate(function extend(dest, src, merge) {
var keys = Object.keys(src);
var i = 0;
while (i < keys.length) {
if (!merge || (merge && dest[keys[i]] === undefined)) {
dest[keys[i]] = src[keys[i]];
}
i++;
}
return dest;
}, 'extend', 'Use `assign`.');

var merge = deprecate(function merge(dest, src) {
return extend(dest, src, true);
}, 'merge', 'Use `assign`.');

function inherit(child, base, properties) {
var baseP = base.prototype,
childP;

childP = child.prototype = Object.create(baseP);
childP.constructor = child;
childP._super = baseP;

if (properties) {
assign(childP, properties);
}
}

function bindFn(fn, context) {
return function boundFn() {
return fn.apply(context, arguments);
};
}

function boolOrFn(val, args) {
if (typeof val == TYPE_FUNCTION) {
return val.apply(args ? args[0] || undefined : undefined, args);
}
return val;
}

function ifUndefined(val1, val2) {
return (val1 === undefined) ? val2 : val1;
}

function addEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.addEventListener(type, handler, false);
});
}

function removeEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.removeEventListener(type, handler, false);
9SVGExport@xlink@1.1@ooo:header-field@FillBitmapOffsetY@FillBitmapOffsetX@FillBitmapTile@ExportOnlyBackground@OutputStream@SVM@
FilterName@a@BoundingBox@Bookmark@desc@Description@title@Title@ooo:text-adjust@
ParaAdjust@Group@IsEmptyPresentationObject@SlideBackground@
SlideGroup@Page@
dummy-page@	clip-path@Slide@
DummySlide@BackgroundObjects@bo-dummy-master-page@
visibility@bg-dummy-master-page@Master_Slide@script@text/ecmascript@type@TextEmbeddedBitmaps@fill@none@stroke@0@use@
xlink:href@pattern@patternUnits@BackgroundPatterns@BackgroundBitmaps@path@d@	transform@-M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z@EmbeddedBulletChars@ooo:id-list@TextShapeIndex@
Animations@presentation-animations@TransitionSubtype@TransitionType@HighResDuration@Change@ooo:footer-visibility@IsFooterVisible@
FooterText@ooo:date-time-visibility@IsDateTimeVisible@DateTimeFormat@DateTimeText@IsDateTimeFixed@visible@ooo:page-number-visibility@IsPageNumberVisible@IsBackgroundObjectsVisible@IsBackgroundVisible@	FillStyle@
Background@LinkDisplayName@false@hidden@dummy-master-page@dummy-slide@ooo:meta_dummy_slide@ooo:meta_slide@ooo:page-numbering-type@true@ooo:use-positioned-chars@ooo:start-slide-number@ooo:number-of-slides@ooo:meta_slides@9urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0@0urn:oasis:names:tc:opendocument:xmlns:office:1.0@xmlns:office@presentation_clip_path_shrink@rect@y@x@clipPath@userSpaceOnUse@
clipPathUnits@id@defs@
ClipPathGroup@svg@preserve@	xml:space@8urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0@	xmlns:svg@3urn:oasis:names:tc:opendocument:xmlns:animation:1.0@
xmlns:anim@http://www.w3.org/2001/SMIL20/@
xmlns:smil@,http://sun.com/xmlns/staroffice/presentation@xmlns:presentation@http://www.w3.org/1999/xlink@xmlns:xlink@$http://xml.openoffice.org/svg/export@	xmlns:ooo@xmlns@round@stroke-linejoin@stroke-width@evenodd@	fill-rule@xMidYMid@preserveAspectRatio@viewBox@height@width@tiny@baseProfile@1.2@version@	BoundRect@Height@Width@TransformedGraphic@GraphicPreview@Graphic@#com.sun.star.text.TextGraphicObject@inner@SVG_DISABLE_FONT_EMBEDDING@ooo:date-time-format@VariableDateTimeField@VariableTextField@FooterField@FixedDateTimeField@g@FixedTextField@class@	TextField@http://www.w3.org/2000/svg@ooo:name@ooo:has-transition@ooo:footer-field@ooo:date-time-field@ooo:master-objects-visibility@ooo:background-visibility@
ooo:master@	ooo:slide@ooo:text_field@<[:isPlaceholder:]>@b<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">bullet-char-tempbg-patte#bitmap(ooo:metata_slideooo:textxt_field��������containe-variablooo:date-time-fiSLIDE_BACKGROUND�������embedded-bitmap(clip_patgradientfill:urlGradientbitmap-placeholdtranslat#bullet-char-tem����������������opacity:mask:url@glyph@unicode@
missing-glyph@	font-face@descent@ascent@
font-style@font-weight@units-per-em@font-family@font@horiz-adv-x@
EmbeddedFont_�R���R��0R��pS��S���S���E���E���E���N���E��0N�� M���K���J���I��I���H��`H���G���G��XG���D���D���D���F���F���D���D���D���D���D���D���D���D���D���D���D���D��R���Q���D���P��P���D���D���D���O��0O���D��Ȋ������p���8���؇�����؇��؇����؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��؇��ȉ��؇����������؇��؇��؇��؇��؇��؇��@���d�,���X� �N3com3sun4star3svg10XSVGWriterEN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEE9SVGWriter@com.sun.star.svg.SVGWriter@ com.sun.star.comp.Draw.SVGWriter@source@	video/mp4@src@video@poster@auto@preload@loop@controls@autoplay@body@http://www.w3.org/1999/xhtml@
foreignObject@overflow@image@mask@stroke-dasharray@square@bevel@miter@ellipse@line@ @white-space: pre@	PageCount@UrlField@PlaceholderText@BulletPlaceholder@EmbeddedBitmap@EmbeddedBitmaps@BitmapPlaceholder@
BulletChar@BulletChars@HyperlinkIdList@TextPosition@ListItem@ooo:numbering-type@SVGTextShape@Time@Date@IsDate@IsFixed@$com.sun.star.presentation.TextField.@com.sun.star.text.textfield.@TextPortionType@
TextParagraph@com.sun.star.text.Table@NumberingIsNumber@NumberingRules@NumberingLevel@com.sun.star.text.Paragraph@radialGradient@r@stroke-opacity@fill-opacity@	direction@stroke-linecap@
stop-color@offset@
gradientUnits@text-decoration@	font-size@ry@rx@cy@cx@y2@x2@y1@x1@style@stop@linearGradient@tspan@text����@SLIDE_BACKGROUND;(���D���l����|F���������,���|���$p��|������������ &��T������L���` ���!&��0"D��#��$���$���L%���%���&���l&���&��'>��P'���'���(4��\(��(���)2��\)���)���*j��d*���*$��4+H���+v��P,~��|,����,N�4.x�,/��/j�0�	�<1�
�2�
�p2��2��(3��38�5R�h5~�5�h64�6J�7`�7��P8f�8�8��P9V�9��:|�p;���;, ��<R �D=� �=#��=:#�>l#��>�#�?$�4?%�`?8)�A�)�B�)�C*�D2*�D|*��D�*�0F�*�F+��F"-�@G�.��G,/�pH�/�I�/��IJ0�0J�0�J`1��J,2�DKH3�K4��K5�HLF5�L�5��L�5�Mv6�N^7�pN|7��N�7�O�=�O@�O�@�PP A�QxA�Q�A�LR*B�R�B��RC�SXD�TTDE�T@F�T\G�\U�G�U�H�V�H�V�J��V�J�LW*N��WS�XT�X�T�YU�tYxU��Y�U�$Z�V���V��W�hW��W���W��\�(]�<$]�@t]�l�]��]��$^�t^���`�P�f�|���L4������H�������$���P��p�������0��������$��4��D��PT��xd��t�������������(���,���@���T���h���|����<$��d4��D��T���d��t��,���P$�������d����H���tD�����|��d��������T��<$��T��$���L��t���4�����$t������T�����4��L���t�����d���$����0���`������������������������4��T�����$��$��8T�� ���0 ����!����!d��"$	��P"�	���"�
���"d���"4��#���0#�
��X#����#D���#���h$T���$����$44��%D:���%�H���%�H���%dI��<&�I���&�J���&DK��$'�L��p'dN���'tc��(($m���(�r���($u��()4x���)����)����0*���*�+����T+�x+$����+�����+����,$����,����.$����.��P/����/���1D��14��<2����2�
���2t��L3����444��45�5���5�D�� 6�D��46DG���6I���6�J���74j�� 8�n��t8{���8�}��9����t9����9Ԗ��D��X�l��������$��� 4���4ԗ��� t���� ���� ����!T���4!�`!����`��hD���������4����ĝ��<$D���p%d����*����(,�-����0-D���h-Ԭ���-����-����T.4����.�����.d����/���40���p0����0����0T��`1$���1����3d���3���4���@4D��t4���4����5T�<7d�P7t�d7��x7���7���7���7��$:�P:4�|:���:��:d�;�4;$�;��<d���=$���h=����=����:����;�	��<��L<���x<�
��>�
���>�
���>d���?d���?���H@����@����A����AD��B4��LB����Bt$���B�9���B:��C$:��$CD:��8C�:��`C�:��tC$;���C4=���CD>��4D�>��\D4@���D�C���DD�� E4D��@E�D��dE�D���E�E���E�E���EG��F4H��PF�M���FdR��G�`��dG4a���G�c���G�c��H�c��,Hd��@HTe���H�e���Hf���HDf���H�g��$I�h��TI�i���I�o��JTp��PJ�v���J�v���J�y��K�}��hK��K����L��lL����L���MT���@M��pM�����M4���$N����8Nd����N�����Nt���hO���OD��P���lQ����Q���R4��lR4���R���|S��S$�$T��tTD��T�� U���Ut����U���8Vd���V$��WT4��pW�f���Wto��@Xp��tX4x���XT��,Y�����YD����Y����HZ����(>�����?�����?Ĉ���?Ԉ��<>t���$A���PA����|AT���h>�����>����@ċ�� @ԋ��4@��\@D����@�����@4����@č��@O���tP�����Pt����P����Q����8Q����S����DST����SzRx�$���FJw�?9*3$"D���\x���tP���L��
�H��
��F���F����
���	t��	��	((,��E�C
F���D�X
FT`��,E�C
A�^tp��Aa�R
M����Aa�R
M����Aa�R
M���Aa�R
MzPLRx�թ�($���IE�C
G��a
H@�E�
T���2A�H
(�tE���HE�V
I����
D�z��{�H������E�
,��E�A�Q
W������
G�J��J�(��
<���
PԽ�
d���
x���
����
����
�p��
����
�X��
�t��
@��
(�I�EE�C
B�D�f
LDDJ�	X���,E�C
A�^(x�I�EE�C
B�D�l
FD(�J�EE�C
B�D�l
FD(�$J�EE�C
B�D�f
LD$�(��[E�C
B�H�f
H$$`��[E�C
B�H�f
H$L���E�C
G��D
E$t��E�C
G��D
E(�X��E�C
F���D�Y
E(�̽�E�C
F���D�Y
E(�@��E�C
F���D�Y
E( ���E�C
F���D�Y
E(L(��E�C
F���D�Y
E(x���E�C
F���D�Y
E(��H�:A�C
M�����((�4��E�C
M�����R
I(����rE�C
P�����R
F,8\J��'DA�C
P�����P
D h:��
D������(|�O�RA�C
P�����R
J(����K�CE�C
B�D�e
A,�e��CE�N
E���3
EL���C����,4ph�apCE�\
K���M�h
G d��0UC�����(x��E�J
k
FX
Ha(������C
f�H�A�$���
E�C
G��|
E(����A�C
G���
E\4$	���fE�C
D��E�J��D
A�
H4\	(��E�C
D��G��H�r
C:
F0����;BE�C
P�����F
B0�<k�N?BE�C
P�����*
F ����B������004y��BE�C
D��K��D��
A d���N+C������,x
��E�C
B�J���
JJ,�
���E�C
B�H����
HH,�
���E�C
D��F���
HH,���E�C
D��F���
MH(H	L��#ZBE�C
G��
B0t	P��ABE�E
B�I���H��
I0�	�~�=#BE�C
D��P�F�N�
J �	����B�������ą�
���
|��
,x��
@t��
Tp��
hl��
$|X���E�C
G���
C$����E�C
B�H����,�����E�C
B�J���
HJ(�Ȅ�E�R
G�����
N(
\��"E�C
A�T8Xl���'�@E�C
I�����!
FM.P. ����nGB������8����kBE�C
H����H�K
Ms
A ����%=B���������
�y��0�y��D�y��X|y��lxy��������������������� ����x��(�x���E�C
F���D�X
F8,}��Aa�R
M(h
����@E�C
C��k
A�
r��.�@������@E�L
A�m�`��2A�H
,���A�Q
W������
G���"$2��	A�C
$@t|��[E�C
B�H�f
H$h�|��[E�C
B�H�f
H$��|���E�C
G��D
E$�L}���E�C
G��D
E$�D��vE�L
A�t
J^,���7?E�C
D��K���
A H(��w ?�����(\Hw���E�C
F���D�Y
E(��w���E�C
F���D�Y
E(�0x���E�C
F���D�Y
E(��x���E�C
F���D�Y
E(y���E�C
F���D�Y
E(8�y���E�C
F���D�Y
E(d@���A�C
M������(�����=E�R
B�D��
E����=���(�X���=E�R
B�D��
E���r=���,(���E�J
B�J���
KJ$X\��E�J
B�J���,�����E�J
B�J���
KJ,�����E�J
B�J���
KJ$�$��E�J
B�J���$���E�J
B�J���,0T��A�C
B�G��L�M�[
G0pD��n#<A�C
B�G��F���
B$�����<A������0�X��H<E�J
D��I�E�L�V
E ���y�;������(�y���E�C
P�����R
F0P$���;A�Q
W�����:
E ����(�;������(����rA�C
P�����R
J(���RA�C
P�����R
J0��;A�C
F���J��m
G 4l��#;������H�|��0l����;E�S
D��F�I��f
G ����;�������#��(��"��g�:E�C
B�F��~
A���#�:����,$ #��r�:E�C
B�F��I
ATb��$�:����(tP#���h:E�C
E����
A�:��I:����(��#���1:E�C
C��
F���-:���($��Q�9E�C
I���B
E8���Z�9����0X,%����9E�C
M�����^
E ����.�9������8��&���9E�C
H����K��
F�
G ����mM:������0D;���	7:E�C
D��P�F���
D D����g:������0h�D���P:E�C
D��E�F�G��
E �H��D:������,��I��`-:E�O
D��E�
A����:����0�K���9E�C
P�����z
F�. D����9������,h�N����9E�C
P�����z
F �$��-:������4�(]���:E�C
P�����z
Fr.h. �|���6:������0|b��:E�O
D��K��L��
A L���:������,p4d����9E�C
B�I��F��
A �8��+�9�����(��w��ME�C
C��p
MD(��d���|9E�C
C���
F���$Y9��� ,Xg��1K�C
A�X��Ptg��)E�C
A�X(��g��u�8E�C
I����
F�|��.�8����,��h��E�E
B�K��E�H��
B��i��e$�v��5E�C
A�V
AT((��A�C
G���
E\(T���"A�C
M�����0�ti��l8E�O
I������
B �����8������,��u���Q�C
E���f
�B�B�A�L4|v���E�C
F���E�H�E
H�
I0P�y��v�8E�C
P�����F
B4t0��>E�C
D��E�J��D
A�
J0�8���v�8E�C
P�����F
B(��v����8E�C
G��i
A��*�8���4,8����E�C
F���E�H�E
H�
F0t����vC8E�C
P�����F
B,����E�C
B�J��y
KJ8�,v���B8E�H
I������
A[
E D��T18������,8�x���,8E�C
P�����S
E hD���9������,| �����E�C
B�H���]
IX8�����j
�9E�C
B�E�O���%.�
B`. �R��G:������8؏����9E�C
D��H����
H�
D0X<���>�9E�C
I�����
A0�H�����9E�C
D��J��D�a
E0�����9E�E
H����H�Z
D,���D�9E�C
P�����|
D $ n��/:������0H ���:E�C
D��J��D�a
E0| ����|�9E�E
H����H�Z
DL� t�����9E�C
D��O����
K�.N.y..h.[. !���;������0$!����;E�C
B�N����X
A X!v��+�:������8|!(����:E�C
D��O���>
G�.c. �!B��K;������0�!����K;E�C
B�E�E�M���
D "�����;������84" �Wi;E�C
I������
L
H p"����;������0�"���;E�C
F���E�G�Z
D0�"|���{�;E�C
M�����O
D(�$Ȣ���E�C
B�F���
C0%l����E�G
D��E�D�
H�
I0\#Ȥ���/;E�C
D��J��D�a
E0�#d����
;E�C
D��J��D�a
E0�#��[�:E�C
F���E�O�
A �# ��<������0$����r/<E�C
M�����K
A P$���+	<������0t$P���h�;E�E
I�����j
C8�$��<E�C
I�����f
IT
D �$z��/<�������&���	0%���k<E�C
H����H��
B P%����;������0t%�����;E�C
M�����
D �%l���;������0�%(����;E�C
M�����
D &*��l;������(���	((���
<(���
P(���
d(���
x(����
�(����
0�&��G�:E�C
I������
K �&\��g�;������,'2��f�;E�C
I�����k
D 8'p��<������0\'(6��h�;E�C
P�����J
F �'���@<������,�'@B��y+<E�C
E���
I�'��+<����0(pD��	<E�C
F���J��J
F 8(R���<������0\(8M��X{<E�J
M������
G �(����<������0�(@R���
m<E�C
D��S���
B �(����<������(�*����:A�C
M�����(((+����A�C
M�����0T+�����J�C
D��L����A������(�+<���A�C
M�������+����+���Q,�+X����E�C
D��L���_
I8*ȱ���;E�C
D��J�E�R��.0`.�
C X*��r�;������0|*������;E�C
B�G�e
J^
B�*��>Z;���0�*����B;E�C
I���W
HJ
F,�,���[E�C
B�I���E��
J($-����E�C
B�F���
C0P-d���E�G
D��E�D�
H�
I0�+ �����:E�C
F���M���
K �+D��%g:������<�+X����K:E�C
P�����L.r.�
B]
A ,,��O:������,P,����T	3:E�C
P�����}
K �,X���:������0�,���5�:E�C
I�����
A �,��$o:�������.x��/dJ��	(/�J���E�C
F���D�X
F@/�L��Aa�R
M`/M��	t/��
�/���2A�H
�/���2A�H
(�-����9E�J
G��g
C�-���nW9���(0���
A�C
G���
E\(80���"A�C
M�����,d0���A�Q
W������
G�0����0�H��
�0�H��
�0�H��
�0�K��
�0�K��
1�K��
 14��	$41�K��[E�C
B�H�f
H$\1�K��[E�C
B�H�f
H$�1����E�J
E���a
K$�1�K���E�C
G��D
E$�10L���E�C
G��D
E(�1HH���E�C
F���D�Y
E((2�H���E�C
F���D�Y
E(T20I���E�C
F���D�Y
E$�2���E�J
E���i
K(�0�����6E�J
G��g
C�04��n6���,�2 ���A�H
J���E�O��
I041����;6A�Q
W�����:
E h1��(6������(|3H��rA�C
P�����R
J(�3��RA�C
P�����R
J�3���;�3����	�3����$4���6E�C
E�^
EE84���nL4x���.0p2����5E�C
D��J�E�K��
I �2
��N�4������0�2L����4E�C
E����
KB
A�2���4����$5���FE�C
E�f
ME(D30����4E�C
I����
Fp3���Jl4����,�3�����T4E�C
I�����Q
F �3���PW4������ �5����1K�C
A�W���5���(E�C
A�W 6��IT�C
A�hH�� <6���IT�C
A�hH��,`6D����E�C
G���
MW
A�6���&4�6�BE�C
B�E�O����
F~
J(�4��33E�C
G���
B5���%3���885�����2E�C
H����H��
EN
J t5^��(�2������4�5<��o�2E�C
M������
Ia
G �5*���2������0�5P��@�2E�C
P�����v
B (6���G3������(<88���E�C
C��u
HD8x6���N3E�C
D��H���r
J`
H �6���m�2������$�8���FE�C
E�f
ME�8���9���,(7���Py2E�C
M�����|
G X7���_2������ l9���nE�J
V
D�9��@E�I
A�p�9$��@E�I
A�p(�9D��JE�E
D��H�.
A,�9h���E�C
B�J��F���
A0<88����1E�C
B�E�I�F���
A p8��$\1������0�8���@1E�C
I������
H �8���z1������(�8�%����0E�C
C��u
H9��:�0���,89�%��v�0E�C
P�����G
A h9�����0������|;(,��0�94,����0E�C
H����V�
A �9l����0������0�9l.��e�0E�N
F���I�K�:
I ,:����0������0P:�2����0E�C
D��E�I�G��
A �:�����0������,�:,5���f0E�C
H����K�z
K �:���b0������0�:x7��AG0E�C
D��J�F�G��
F 0;���A20������0T;p8��,0E�H
D��I���o
G �;���`0������,�;H:����/E�C
M�����t
G �;���C�/������$�=�;��FE�C
E�f
ME,><���E�C
D��D�D
Dh0X<l<���Z/E�V
H����E�g
A �<>��7/������4�<�=��{/E�C
I�����V
I�. L. �<n���T/�������>L��h4 =dL���-/E�N
F���D��
FG
A X=����.�����0|=�M��2�.E�O
F���E�M��
B �=���0�.������,�=�O����.E�C
P������
K >���6Q/������$@|>��6E�C
E�]
FE8P>`����/E�C
P�����\

L�
D �>6��*P0������,�>Dt��.V0E�C
I������
I �>��A0������0? v���%0E�C
M���I��P
B 8?6��;0������(LA�=��xE�C
E�A
JE
C4xA�=���E�C
F���E�H�y
D]
K,�?�>���/E�C
G�����
B,�?�A���/E�C
G�����
B0 @tD����/E�C
D��J��D�a
E,T@�z���t/E�C
I������
H �@|��XO/������4�@�}���7/E�C
K����{
J�
E �@x��$/�����,A`����.E�C
I���#
D4AH���.����0TA������.E�C
H����O�a
H �A�����.������(�Ah�����.E�C
C���
A�A���$�.���0�A|D���{.E�C
D��E�J���
H4D8F���E�C
M������
It
D,dB`���
?.E�C
P�����}
K �Bd��?r.������ �D,���E�C
C��,�DXI���E�C
B�J��~
NJ,C�����.E�G
E����
A<C�����-����0\CX���o�-E�C
E���F
EJ
A�C����-����0�Ct���z�-E�V
B�F�E�F���
K �C<���-������8D������-E�C
D��L����
L
A DD���z`-������0hD<����	D-E�C
F���E�D��
A �D����-������8�D������-E�C
M������
Gv
J �D���U�-������D Eԧ��M{-E�C
B�E�E�E�D��.S.�
E�. �. hEv���-������L�E������-E�C
D��E�E�H��.X
F[.�.K.n.Q.e.S. �E���$�-������0F���(y-E�C
D��E�E�D��
E 4Ft��b�.������TXF���>2�.E�C
F���M��

H�.z.�.�.�.A.�.�. �FZ����/������,�F�����/E�C
I�����d
K G��	0������0I,���E�C
B�E�E�E�G�w
I\0\G���/�/E�C
D��E�E�D�o
G �GT����/������8�G`���/E�G
H����G��.|.�
H �G���B�/������DH &��+�/E�C
D��E�E�D��.L.�
G�.A
K \H���g�/������0�H�)���q/E�C
B�E�G��E�<
I �H���6d/������0�HL-��9H/E�H
D��I�I�N��
H I���B2/������ K4.��
��
8���`����8Bq�������^���
�'1dG��,4F�����������������Q?J���������	�����	�	�	�	�
�
}}�_�_���>]�~��������������G���������
��
��
�������
A��
��������������������T 3������I��8������������(������\���
��
��
������
��
�B���
���#����
����?�u��s��F���U���������)@������	�
�}�]��6���}�]����8UA�M��M�M�M��M��	�M�	�L��L��L��L��
�M�
�M��N��N�!��M��O��L��M�7�L��M��L��L��L���M����L�!�L�!�O�"�"�M�#�#�M�$�M�(�L�*�O�*�L�*{�M�+�O�,�M�.�M�.�N�09�1�L�1�O�44�M�4�N�4�O�5�N�6�6�N�7�K�7�N�7��N�<�=�O�=�O�?�O�?�O�?�K�@�@�N�A�L�A�K�A�C�K�C�L�Ek�F�N�G�N�I�N�J�K}�[��E2�f�������������}�[��
c�D�����,H|��$��7R�������N��l�����l�����%6�U������<}��!-Tpk���}��T�������6.���"�����E5�����t���;���������}xZ��!����}TZ��,4F��H����
�������N��%-O;[����&7ZFf����	+(^�����
%k����#��)��������#-��������������)��)��'��&��'��(��(��(��(�	�(�	�(�
�'�
�'��)��)��)��&�
�(��)��)��(��(��(��)��)��)��)��(��&��&��'��&��'��&��'����'� �'�!�'��
8�"���`���������������	��	��
��
����������
���	6Jt���$��
��
����
����
��	�Z��O��������#N��������������*v����������������������	�����
��������������������������������L��
�������^���
��
��
��
��	��	�
�
�����Y����������t��F���!��9�����P��������\���������������S����� ��������������	�	��
��
��
����,��
�������������3���3�0������*�L�r,��o���������������(������	����	�J�	�
�	�
�
(�
�
�
��M:J���������
��
��
�	�	�	$�
�
}}�T�T��M:J���������
��
��
�	�	�	$�
�
}}<T0T��/~K[~����M:J���������
��
��
�	�	�	$�
�
}}�S�S��F���U��'H���������1����$�����X��S��S��S��U�"�U��X��U�	�U�
�U�
�U���V��V�
��V��Y��T��T��T��T��U��T��T��T��V��U��V��X��U��U��T���X��W��V�� �U� �T� �T�!�!�T�"�V�"��)�V�*�U�,�S�-�V�.�X�/�S�0�V�1�S�2�S�3�S�3�S�4�W�4�W�5�W�5�W�5�W�6�W�7�W�8�W�:�S�;�W�<�X�=�W�=�X�?�X�@�X�A�X�B�V�C�X�E�G�W�I�V�J�V�K�W�M�V�P�V��(������������	����Ae����������������������	��	��
��
��
����������������
D����,&s�������������-#k�����������}lP��5�����E3�����������{���+�}P��i_������
���C�
����
���
��
�	�
�	�
�
���
��
��
}�O��!Yh��Z��}�O��5�����E3�����������{���+�},O����5��/��/��/���/��1��1��1�E�1��1���1��2�
�2�
�2��0��0��0��0��2��2��1��1���2��1��2��2��0��3��3��3��3��3��3��3��3��/��1��3��2��2�9� �1� �0�!�1�!�!�1�"�0�"�0�"�$�/�$�/�%�1�&�/�'�1�)�0�*�0�+�0}�M��)'��������}�M��<���������X���������H���������������	��
��
������������������������}�L��!>�����}�L��j~�
��������
�����������
��
��
��
��
���	�
�	�
��K���aX��������������������������� ��	��	��
��
����������
��
�-�����������Wn��5�����������}DK��5�����5�������Bc��(�]���(��)��)��'��6�(�^�(��(��(��(��(�	�)�	�(�	�)�	�)�	�)�
��(��)�
�'���)�7��'�;�*��*����*���)��*��*��*��*��*��(���*���(��)��(��)��)��)��*��7�*��(��'� ��*�%�(�%�*�%�'�&�*�&�'��=2Mn����������������
;y������Q>��	�������;�	��-�	�	�	�	�
+�
}I��YMwR������������3����'����'�����}�H��H��}�H��H�������h�������h��������Ae�<~�<��<��<���<��<��Z�<�	�<�	�>�	�=�
�<�
K��<��<�
�<��0�<��=��=��;� � �=� ��=�"�;�"�;�"�;�#�$�;�&�=�&�=�&�;�'�=�'�=�'�=�'�>�(�>�(�=�(�>�*�=�+�=�,�=�/�;�0�;�0�;�1�=�1�=�1��=�3�=�4�;�6�=�7�>�:�:�=�:�=��!:�����������UQ���������F���������������������U �>�����������������������)�����������
������<A��-#$^�h{����$����Vq!����2����������7����`�������?��;��	��	��	
����@����
��������<�e�����:��
���
���
��
��
��
�	�
�	�
��/.q{���IW��������������������������������I����	 ��
��
�������6����6���(=K��������������2������)��
-����+3�������@1L�V��������	��	�����	����	��#���f����������������������������������	��	��
��
����������
��
���������
+m�(�������8Bd����8Bd���"�����,4F���i���D��Kq��������= o�������%��/5�����l����@��������*��
)W������$H����������������1My��L�������������&"�E�b,�����������<D��������5��!������������	��	���O���������������������������������������*����������$M��	6C[�����q�
���2Kp��&@�X���0��Q1����l��������7���������� �����*@��"H,������������"���8b������������������"���,]��������������"���(+x�����������������9P���������#��������������2����������+��
�������?H��i<f���������������������	��	��	��
���
���������
~e�~��`�����T���������<S���� �� �� ��� �� �!�-�!��!��!��!��!���	� �	"��
�
��� �� ��� �/�
� �
��
��
���� �� ������ �,���!�����+�N�g0������X��$���w�����(������	��	�,�	��	��	�K�	�	(�
��
��
�	����PK���&���&��&��&��&��&�	�'��'��'��'��'��&��&�e�&��&�$�&���'��'��'��(��(��(��(��(��(��(��(��(��(��(��)�I�)��'�L�)��'�$�)�#�&�#$�)��&z��C��z��������`���������$S��FDRb�
�����
��
��
������
�	�
�	�
�
�
��B��GR���������GR���������5���������� N���������!5g�������&����-R��+6���������Y�������	19<�����-!���������}��_������������,��9������	����>����
��
���rj���������h��
(��H���h��=5f�������������������Y������9�	��u���BU��������������������������	��	��
��
��
������"��
��
��
��&���������2���*���	���������	����",���t�?�%���%��%�4�%��&��%�x�%�	�	8�%�
��%�
�&�
��%��%��&��$��%��%��%��%��&��&��%��&��$��%��%��$��$��%��i>�����
PX�
������M=�v�9��9�K�9��9�[�7��7�	�6�
�6�
�9�:�7��8��8�
�8��8��8��8��8��8��8��7��7��7��7��7��7��7��6��6����8���6��7��:��9��6��6��9��7� �:� �:�#�7�#�9�#�9�$�6�$�6�&4�9�*�9�*�6�*�9�+�9�,�9�-�9�4"�8��~����������������c��c��r�b��b�2��b�9�d���	�c�
���b��M�d�
/�d��b�F�a�$�`��a�F�a�5�a��b�F�d�#�d����b�o��b���$�c�$�$�d�%:�%�a�&��(�b�(�b�(�a�)�b�*��-�a�-��/�c�/C�c�1�1�a�1�a�1�`�2��b�9w�:�b�;�;�c�;�c�<�c�<<�c�<��c�B�a�C�a�D"�b�E�c�E �a�F�b�H�a�I�J�a�L��N�`�O��T��c�X�b�Y�c��*�������^Gk���O��������������0��	��	��	��
�������f��Hp������������Y��-����)��������>R��0O*����V�
����
u�
����
�
���*��8B������������������3��#d�F����]��������"��LT�f�������.h~��FDO{"type":"deb","os":"ubuntu","name":"libreoffice","version":"4:25.2.2-0ubuntu1","architecture":"amd64"}Ї��`�P�
��
 �
��
/�5@z6�< >��
 /�5px6�;`=�
`/0vpAP:;`
 
 � 
�
�
�
 
`
�

@
`
��@�����`������ync`S�B�5`% �������l�Q@= 1�"� �
 �
��
`�
�
��
�
�
�v
 m
``
�S
�E
�7
 )
�
 �	��	��	��	�	�	@�	y	@e	 R	F	�9	�*	�			 ��@�� ��� ����vf`Y`G�6@% ���@�`�@�@����`��r�^O�>�3�&@
@� �`���`����@� ��z l�^�L�= 2% �@����
x�
��
p�
�

�.
�.
@
/
 /
@/
�
�/
� 
� 
�/
 !
0
�
p
�
�/
�/
�/
0
0
 0
00
@0


�
P0
�
p0
�0
�0
�0
�
�
@�
 (08@HX��@`@
�	������p���
�	�����������������0����������p����������`���������PPp��
�@` ���@
�	�������0��@���������
p���
�	���������
��� ����������
0��P����������
�p�P�����������
�`������������
PPp0�����������
���
0���
`���
����
��
�.�/��
�.�56��
`����8�9�����0� �@���������
 ��0`�p����������
��� ���������
������������
@������������
��������������
��� (0�#
�����������`�p��������@��������������
�м���D�Eн�p��>�>�>��������
���`�p����������
@��������������
���й�D�D�F�O�OP P1PAPPP_PiPwPQ�
,�P�
X�
���o(�0�
�Q��
h"�(��2	���o����o؅���o�o(����o���
0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p���������������� �0�@�P�`�p������������������
@(�0�80@ H` @( 0�8��@��H` ��( 0` 92de4b614d59022c19c18ba9700f1126793ff7.debug�T�.shstrtab.note.gnu.property.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.gcc_except_table.note.package.init_array.fini_array.data.rel.ro.dynamic.got.plt.data.bss.gnu_debuglink�� $1���o((|;���+C�0�0�QK���o(�(��X���o؅؅Pg(�(��2qB��h"{��v � �� � ��0�0���@@�@�,�,�
���,a �,1
,1
,�X@
X@
4K���
��
/���
��
x�P�
P�
�X�
X�
�`�
`�
x ��
��
��X�
X�
�
��
��
���
��
� �
�
�!�
4<�
0

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
classes Folder 0755
opencl Folder 0755
opengl Folder 0755
resource Folder 0755
services Folder 0755
shell Folder 0755
types Folder 0755
wizards Folder 0755
bootstraprc File 112 B 0644
fundamentalrc File 2.34 KB 0644
gdbtrace File 350 B 0644
intro-highres.png File 120.46 KB 0644
intro.png File 81.45 KB 0644
java-set-classpath File 1.98 KB 0755
libLanguageToollo.so File 171.58 KB 0644
libOGLTranslo.so File 303.22 KB 0644
libPresentationMinimizerlo.so File 327.36 KB 0644
libacclo.so File 1.65 MB 0644
libaffine_uno_uno.so File 22.52 KB 0644
libanalysislo.so File 432.91 KB 0644
libanimcorelo.so File 194.9 KB 0644
libavmediagst.so File 99.92 KB 0644
libbiblo.so File 592.59 KB 0644
libbinaryurplo.so File 211.63 KB 0644
libbootstraplo.so File 608.92 KB 0644
libcached1.so File 379.3 KB 0644
libcairocanvaslo.so File 705.61 KB 0644
libclewlo.so File 26.25 KB 0644
libcmdmaillo.so File 79.04 KB 0644
libcuilo.so File 5.04 MB 0644
libdatelo.so File 91.08 KB 0644
libdbahsqllo.so File 99.02 KB 0644
libdbalo.so File 3.79 MB 0644
libdeploymentgui.so File 412.92 KB 0644
libdlgprovlo.so File 199.47 KB 0644
libfilelo.so File 850.04 KB 0644
libgcc3_uno.so File 79.11 KB 0644
libgraphicfilterlo.so File 51.04 KB 0644
libhwplo.so File 555.85 KB 0644
libi18nlangtag.so File 151.38 KB 0644
libintrospectionlo.so File 211.41 KB 0644
libinvocadaptlo.so File 46.91 KB 0644
libinvocationlo.so File 126.94 KB 0644
libiolo.so File 388.89 KB 0644
libjavaloaderlo.so File 79.05 KB 0644
libjavavmlo.so File 143.51 KB 0644
libjvmaccesslo.so File 34.63 KB 0644
libjvmfwklo.so File 155.9 KB 0644
libldapbe2lo.so File 71.09 KB 0644
liblocaledata_en.so File 466.34 KB 0644
liblocaledata_es.so File 434.27 KB 0644
liblocaledata_euro.so File 2.98 MB 0644
liblocaledata_others.so File 4.16 MB 0644
liblog_uno_uno.so File 18.45 KB 0644
libloglo.so File 151.73 KB 0644
liblosessioninstalllo.so File 46.9 KB 0644
liblpsolve55.so File 640.63 KB 0644
liblwpftlo.so File 1.25 MB 0644
libmergedlo.so File 109.96 MB 0644
libmigrationoo2lo.so File 54.95 KB 0644
libmigrationoo3lo.so File 63.05 KB 0644
libmozbootstraplo.so File 55.03 KB 0644
libmsformslo.so File 608.91 KB 0644
libmswordlo.so File 3.01 MB 0644
libnamingservicelo.so File 34.74 KB 0644
libpcrlo.so File 1.77 MB 0644
libpdffilterlo.so File 369.13 KB 0644
libpdfimportlo.so File 592.92 KB 0644
libpdfiumlo.so File 4.85 MB 0644
libpricinglo.so File 106.91 KB 0644
libprotocolhandlerlo.so File 58.98 KB 0644
libproxyfaclo.so File 34.84 KB 0644
libpythonloaderlo.so File 30.94 KB 0644
libpyuno.so File 296.07 KB 0644
libreflectionlo.so File 255.81 KB 0644
libreglo.so File 91.1 KB 0644
libsal_textenclo.so File 1.62 MB 0644
libscdlo.so File 46.94 KB 0644
libscfiltlo.so File 5.69 MB 0644
libsclo.so File 20.9 MB 0644
libscnlo.so File 160.09 KB 0644
libscriptframe.so File 239.69 KB 0644
libscuilo.so File 906.58 KB 0644
libsdbtlo.so File 139.3 KB 0644
libsddlo.so File 43 KB 0644
libsdlo.so File 9.61 MB 0644
libsduilo.so File 1.81 MB 0644
libskialo.so File 7.17 MB 0644
libslideshowlo.so File 2.28 MB 0644
libsmdlo.so File 34.91 KB 0644
libsmlo.so File 1.93 MB 0644
libsolverlo.so File 167.27 KB 0644
libstaroffice-0.0-lo.so.0 File 2.55 MB 0644
libstocserviceslo.so File 159.64 KB 0644
libstoragefdlo.so File 54.94 KB 0644
libstorelo.so File 126.74 KB 0644
libsvgfilterlo.so File 889.55 KB 0644
libsw_writerfilterlo.so File 3.44 MB 0644
libswdlo.so File 34.93 KB 0644
libswlo.so File 22.23 MB 0644
libswuilo.so File 2.77 MB 0644
libt602filterlo.so File 131.05 KB 0644
libtextconversiondlgslo.so File 95 KB 0644
libucpchelp1.so File 496.42 KB 0644
libucpcmis1lo.so File 2.16 MB 0644
libucpdav1.so File 536.61 KB 0644
libucpgio1lo.so File 188.05 KB 0644
libucppkg1.so File 247.55 KB 0644
libuno_cppu.so.3 File 251.34 KB 0644
libuno_cppuhelpergcc3.so.3 File 1.24 MB 0644
libuno_purpenvhelpergcc3.so.3 File 30.56 KB 0644
libuno_sal.so.3 File 489.07 KB 0644
libuno_salhelpergcc3.so.3 File 38.76 KB 0644
libunoidllo.so File 487.22 KB 0644
libunopkgapp.so File 151.56 KB 0644
libunsafe_uno_uno.so File 14.39 KB 0644
libuuresolverlo.so File 38.8 KB 0644
libvbaobjlo.so File 3.04 MB 0644
libvbaswobjlo.so File 3.05 MB 0644
libvclplug_genlo.so File 599.66 KB 0644
libvclplug_gtk3lo.so File 2.37 MB 0644
libwpftcalclo.so File 99.52 KB 0644
libwpftdrawlo.so File 640.01 KB 0644
libwpftimpresslo.so File 75.27 KB 0644
libwpftwriterlo.so File 404.85 KB 0644
libwriterlo.so File 200.02 KB 0644
libwriterperfectlo.so File 79.02 KB 0644
libxmlreaderlo.so File 46.65 KB 0644
libxmlsecurity.so File 825.25 KB 0644
lounorc File 1.03 KB 0644
mailmerge.py File 21.91 KB 0644
msgbox.py File 7.99 KB 0644
officehelper.py File 7 KB 0644
oosplash File 50.3 KB 0755
opencltest File 14.31 KB 0755
pagein-calc File 24 B 0644
pagein-common File 255 B 0644
pagein-draw File 24 B 0644
pagein-impress File 24 B 0644
pagein-writer File 24 B 0644
pythonloader.py File 6.65 KB 0644
pythonloader.unorc File 182 B 0644
pyuno.so File 14.24 KB 0644
redirectrc File 50 B 0644
regview File 14.32 KB 0755
scalc File 63 B 0755
sdraw File 63 B 0755
senddoc File 13.63 KB 0755
services.rdb File 9.77 KB 0644
setuprc File 33 B 0644
simpress File 66 B 0755
smath File 63 B 0755
soffice File 6.5 KB 0755
soffice.bin File 14.23 KB 0755
sofficerc File 1.26 KB 0644
swriter File 65 B 0755
types.rdb File 56.36 KB 0644
uno File 1.26 KB 0755
uno.bin File 82.54 KB 0755
unoinfo File 1.27 KB 0755
unopkg File 2.83 KB 0755
unopkg.bin File 14.23 KB 0755
unorc File 239 B 0644
uri-encode File 14.23 KB 0755
versionrc File 1.01 KB 0644
xpdfimport File 78.41 KB 0755
Filemanager