diff --git a/README b/README index 9608f88..bdfdb5c 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ zms3.formulator =============== -This Python Package is an Extension for the ZMS3 Publishing System (Open Source Content Management for Science, Technology and Medicine) to integrate the `JSON Editor by Jeremy Dorn `_, Redwood City, CA. +This ZMS Content Object Definition is an Extension for the ZMS3 Publishing System (Open Source Content Management for Science, Technology and Medicine) to integrate the `JSON Editor by Jeremy Dorn `_, Redwood City, CA. A JSON Schema is generated based on special content objects and used to transform it into an HTML Form handling all the front-end validations. diff --git a/ZMSFormulator/ACE_onChangeJS.dtml b/ZMSFormulator/ACE_onChangeJS.dtml new file mode 100644 index 0000000..ebf6d21 --- /dev/null +++ b/ZMSFormulator/ACE_onChangeJS.dtml @@ -0,0 +1,7 @@ + +
+
+
+
+
+
\ No newline at end of file diff --git a/ZMSFormulator/ACE_onReadyJS.dtml b/ZMSFormulator/ACE_onReadyJS.dtml new file mode 100644 index 0000000..e3e2d0d --- /dev/null +++ b/ZMSFormulator/ACE_onReadyJS.dtml @@ -0,0 +1,7 @@ + +
+
+
+
+
+
\ No newline at end of file diff --git a/ZMSFormulator/ACE_optionsJS.zpt b/ZMSFormulator/ACE_optionsJS.zpt new file mode 100644 index 0000000..8984e3f --- /dev/null +++ b/ZMSFormulator/ACE_optionsJS.zpt @@ -0,0 +1,9 @@ + + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/ZMSFormulator/HINT_FROM.zpt b/ZMSFormulator/HINT_FROM.zpt new file mode 100644 index 0000000..30be1e5 --- /dev/null +++ b/ZMSFormulator/HINT_FROM.zpt @@ -0,0 +1,5 @@ + + +
+
Leave blank to use default ZMSAdministrator.email set in System-Properties.
+
\ No newline at end of file diff --git a/ZMSFormulator/ZMSFORMULATORINTERFACE.zpt b/ZMSFormulator/ZMSFORMULATORINTERFACE.zpt new file mode 100644 index 0000000..7c7d6c6 --- /dev/null +++ b/ZMSFormulator/ZMSFORMULATORINTERFACE.zpt @@ -0,0 +1,5 @@ + + +
+
See JSON-Editor README for options and usage of custom Schema (JSON).
+
\ No newline at end of file diff --git a/ZMSFormulator/__init__.py b/ZMSFormulator/__init__.py new file mode 100644 index 0000000..79c7e2a --- /dev/null +++ b/ZMSFormulator/__init__.py @@ -0,0 +1,360 @@ +class ZMSFormulator: + """ + python-representation of ZMSFormulator + """ + + # Access + access = {"delete_custom":"" + ,"delete_deny":["" + ,"" + ,""] + ,"insert_custom":"{$}" + ,"insert_deny":["" + ,"" + ,""]} + + # Enabled + enabled = 1 + + # Id + id = "ZMSFormulator" + + # Name + name = "ZMSFormulator" + + # Package + package = "zms3.formulator" + + # Revision + revision = "3.4.17" + + # Type + type = "ZMSDocument" + + # Attrs + class Attrs: + icon_clazz = {"custom":"icon-list-alt" + ,"default":"" + ,"id":"icon_clazz" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Icon (Class)" + ,"repetitive":0 + ,"type":"constant"} + + warnung = {"default":"" + ,"id":"warnung" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"
Bitte beachten! Legen Sie Formulare, sowie Formularelemente immer zuerst in der Primärsprache an. Falls Sie das Formular nur in der Sekundärsprache verwenden, dann deaktivieren Sie das Objekt in der Primärsprache.
" + ,"repetitive":0 + ,"type":"hint"} + + titlealt = {"default":"" + ,"id":"titlealt" + ,"keys":[] + ,"mandatory":1 + ,"multilang":1 + ,"name":"DC.Title.Alt" + ,"repetitive":0 + ,"type":"titlealt"} + + title = {"default":"" + ,"id":"title" + ,"keys":[] + ,"mandatory":1 + ,"multilang":1 + ,"name":"DC.Title" + ,"repetitive":0 + ,"type":"title"} + + feedbackmsg = {"default":"" + ,"id":"feedbackMsg" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Feedback" + ,"repetitive":0 + ,"type":"text"} + + feedbackmsg_help = {"default":"" + ,"id":"feedbackMsg_help" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"
Im Feld Feedback haben Sie die Möglichkeit, eine eigene Meldung zu definieren, welche dem Absender nach dem Ausfüllen des Formulars im Browser angezeigt wird. Sie können zum Formatieren der Nachricht HTML-Tags verwenden. Wenn das Feld leer bleibt, wird eine Standardmeldung ausgegeben.
" + ,"repetitive":0 + ,"type":"hint"} + + tab_metadata = {"default":"" + ,"id":"TAB_METADATA" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"TAB_METADATA" + ,"repetitive":0 + ,"type":"delimiter"} + + attr_dc_description = {"default":"" + ,"id":"attr_dc_description" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"DC.Description" + ,"repetitive":0 + ,"type":"attr_dc_description"} + + attr_dc_subject = {"default":"" + ,"id":"attr_dc_subject" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"DC.Subject" + ,"repetitive":0 + ,"type":"attr_dc_subject"} + + attr_dc_creator = {"default":"" + ,"id":"attr_dc_creator" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"DC.Creator" + ,"repetitive":0 + ,"type":"attr_dc_creator"} + + attr_dc_accessrights_restricted = {"default":"0" + ,"id":"attr_dc_accessrights_restricted" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Zugriffsschutz" + ,"repetitive":0 + ,"type":"attr_dc_accessrights_restricted"} + + attr_dc_relation_backlink = {"default":"" + ,"id":"attr_dc_relation_backlink" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Force Backlink" + ,"repetitive":0 + ,"type":"url"} + + attr_dc_identifier_url_node = {"default":"" + ,"id":"attr_dc_identifier_url_node" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"URL Pfadname" + ,"repetitive":0 + ,"type":"attr_dc_identifier_url_node"} + + delimiter_advanced = {"default":"" + ,"id":"delimiter_Advanced" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Advanced (JavaScript)" + ,"repetitive":0 + ,"type":"delimiter"} + + optionsjs = {"default":"// Disable additional properties\nZMSFormulator.options.no_additional_properties = true;\n\n// Require all properties by default\nZMSFormulator.options.required_by_default = true;" + ,"id":"optionsJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Options" + ,"repetitive":0 + ,"type":"text"} + + ace_optionsjs = {"default":"" + ,"id":"ACE_optionsJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ACE_optionsJS" + ,"repetitive":0 + ,"type":"interface"} + + onreadyjs = {"default":"" + ,"id":"onReadyJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"onReady" + ,"repetitive":0 + ,"type":"text"} + + ace_onreadyjs = {"default":"" + ,"id":"ACE_onReadyJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ACE_onReadyJS" + ,"repetitive":0 + ,"type":"interface"} + + onchangejs = {"default":"" + ,"id":"onChangeJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"onChange" + ,"repetitive":0 + ,"type":"text"} + + ace_onchangejs = {"default":"" + ,"id":"ACE_onChangeJS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ACE_onChangeJS" + ,"repetitive":0 + ,"type":"interface"} + + zmsformulatorinterface = {"default":"" + ,"id":"ZMSFORMULATORINTERFACE" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ZMSFORMULATORINTERFACE" + ,"repetitive":0 + ,"type":"interface"} + + delimiter_data = {"default":"" + ,"id":"delimiter_Data" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Data" + ,"repetitive":0 + ,"type":"delimiter"} + + data = {"default":"" + ,"id":"_data" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Data" + ,"repetitive":0 + ,"type":"dictionary"} + + interface2 = {"default":"" + ,"id":"interface2" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"interface2" + ,"repetitive":0 + ,"type":"interface"} + + datastoragedisabled = {"default":"0" + ,"id":"dataStorageDisabled" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Disable Storage of Data" + ,"repetitive":0 + ,"type":"boolean"} + + datastoragesql = {"default":"1" + ,"id":"dataStorageSQL" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Use SQL-Storage" + ,"repetitive":0 + ,"type":"boolean"} + + sendviamail = {"default":"0" + ,"id":"sendViaMail" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Send Data by Mail" + ,"repetitive":0 + ,"type":"boolean"} + + sendviamailaddress = {"default":"" + ,"id":"sendViaMailAddress" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Mail Address [TO]" + ,"repetitive":0 + ,"type":"string"} + + sendviamailfrom = {"default":"" + ,"id":"sendViaMailFrom" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Mail Address [FROM]" + ,"repetitive":0 + ,"type":"string"} + + hint_from = {"default":"" + ,"id":"HINT_FROM" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"HINT_FROM" + ,"repetitive":0 + ,"type":"interface"} + + mailfrmt = {"default":"0" + ,"id":"mailFrmt" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"HTML formatted?" + ,"repetitive":0 + ,"type":"boolean"} + + mailfrmtcss = {"default":"table { background-color:#fff; border:1px solid #000; }\nth { text-align:right; vertical-align: bottom; font-family:sans-serif; padding:0 0.5em; font-weight:normal; }\ntd { text-align:left; vertical-align: bottom; font-family:sans-serif; padding:0 0.5em; font-size:1.5em; }\nh1, h3 { font-weight:normal; }" + ,"id":"mailFrmtCSS" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Styling" + ,"repetitive":0 + ,"type":"text"} + + interface = {"default":"" + ,"id":"interface" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"interface" + ,"repetitive":0 + ,"type":"interface"} + + formulatoritems = {"default":"" + ,"id":"formulatorItems" + ,"keys":["ZMSFormulatorItem" + ,"ZMSTextarea"] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Items" + ,"repetitive":1 + ,"type":"*"} + + standard_html = {"default":"" + ,"id":"standard_html" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Template: ZMSFormulator" + ,"repetitive":0 + ,"type":"zpt"} + + javscriptandstyle = {"default":"" + ,"id":"javscriptandstyle" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"javscriptandstyle" + ,"repetitive":0 + ,"type":"interface"} diff --git a/ZMSFormulator/interface.zpt b/ZMSFormulator/interface.zpt new file mode 100644 index 0000000..7840897 --- /dev/null +++ b/ZMSFormulator/interface.zpt @@ -0,0 +1,4 @@ + + +
data
+
\ No newline at end of file diff --git a/ZMSFormulator/interface2.dtml b/ZMSFormulator/interface2.dtml new file mode 100644 index 0000000..84cb12e --- /dev/null +++ b/ZMSFormulator/interface2.dtml @@ -0,0 +1,10 @@ + +
+
+
+ + + + +
+
\ No newline at end of file diff --git a/ZMSFormulator/javscriptandstyle.zpt b/ZMSFormulator/javscriptandstyle.zpt new file mode 100644 index 0000000..3d35909 --- /dev/null +++ b/ZMSFormulator/javscriptandstyle.zpt @@ -0,0 +1,152 @@ + + + + + + \ No newline at end of file diff --git a/ZMSFormulator/standard_html.zpt b/ZMSFormulator/standard_html.zpt new file mode 100644 index 0000000..6986896 --- /dev/null +++ b/ZMSFormulator/standard_html.zpt @@ -0,0 +1,29 @@ + + + + +
+

title

+

attr_dc_description

+ +
+
+ + \ No newline at end of file diff --git a/ZMSFormulatorItem/ACE_rawJSON.dtml b/ZMSFormulatorItem/ACE_rawJSON.dtml new file mode 100644 index 0000000..c8e8545 --- /dev/null +++ b/ZMSFormulatorItem/ACE_rawJSON.dtml @@ -0,0 +1,7 @@ + +
+
+
+
+
+
\ No newline at end of file diff --git a/ZMSFormulatorItem/HINT_mail.zpt b/ZMSFormulatorItem/HINT_mail.zpt new file mode 100644 index 0000000..52096fb --- /dev/null +++ b/ZMSFormulatorItem/HINT_mail.zpt @@ -0,0 +1,5 @@ + + +
+
You can use the received value of this ZMSFormulatorItem as default for mail replies on notifications and/or send copies of the submitted data as acknowledgement.
+
\ No newline at end of file diff --git a/ZMSFormulatorItem/HINT_titlealt.zpt b/ZMSFormulatorItem/HINT_titlealt.zpt new file mode 100644 index 0000000..9c7445e --- /dev/null +++ b/ZMSFormulatorItem/HINT_titlealt.zpt @@ -0,0 +1,5 @@ + + +
+
Used as column name in data table – one single word without special characters is recommended.
+
\ No newline at end of file diff --git a/ZMSFormulatorItem/__init__.py b/ZMSFormulatorItem/__init__.py new file mode 100644 index 0000000..4c79bfd --- /dev/null +++ b/ZMSFormulatorItem/__init__.py @@ -0,0 +1,231 @@ +class ZMSFormulatorItem: + """ + python-representation of ZMSFormulatorItem + """ + + # Access + access = {"delete_custom":"" + ,"delete_deny":["" + ,"" + ,""] + ,"insert_custom":"{$}" + ,"insert_deny":["" + ,"" + ,""]} + + # Id + id = "ZMSFormulatorItem" + + # Name + name = "ZMSFormulatorItem" + + # Package + package = "zms3.formulator" + + # Revision + revision = "3.4.16" + + # Type + type = "ZMSObject" + + # Attrs + class Attrs: + icon_clazz = {"custom":"icon-tasks" + ,"default":"" + ,"id":"icon_clazz" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Icon (Class)" + ,"repetitive":0 + ,"type":"constant"} + + identifier = {"default":"" + ,"id":"identifier" + ,"keys":[] + ,"mandatory":1 + ,"multilang":1 + ,"name":"ID" + ,"repetitive":0 + ,"type":"identifier"} + + mandatoryfield = {"default":"0" + ,"id":"mandatoryField" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Mandatory?" + ,"repetitive":0 + ,"type":"boolean"} + + hiddenfield = {"default":"0" + ,"id":"hiddenField" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Hidden?" + ,"repetitive":0 + ,"type":"boolean"} + + replytofield = {"default":"0" + ,"id":"replyToField" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Use as Reply-To" + ,"repetitive":0 + ,"type":"boolean"} + + copytofield = {"default":"0" + ,"id":"copyToField" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Send a copy" + ,"repetitive":0 + ,"type":"boolean"} + + hint_mail = {"default":"" + ,"id":"HINT_mail" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"HINT_mail" + ,"repetitive":0 + ,"type":"interface"} + + type = {"default":"" + ,"id":"type" + ,"keys":["string" + ,"email" + ,"mailattachment" + ,"textarea" + ,"date" + ,"select" + ,"multiselect" + ,"checkbox" + ,"integer" + ,"float" + ,"custom"] + ,"mandatory":1 + ,"multilang":1 + ,"name":"Type" + ,"repetitive":0 + ,"type":"select"} + + titlealt = {"default":"" + ,"id":"titlealt" + ,"keys":[] + ,"mandatory":1 + ,"multilang":1 + ,"name":"DC.Title.Alt" + ,"repetitive":0 + ,"type":"titlealt"} + + hint_titlealt = {"default":"" + ,"id":"HINT_titlealt" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"HINT_titlealt" + ,"repetitive":0 + ,"type":"interface"} + + title = {"default":"" + ,"id":"title" + ,"keys":[] + ,"mandatory":1 + ,"multilang":1 + ,"name":"DC.Title" + ,"repetitive":0 + ,"type":"title"} + + attr_dc_description = {"default":"" + ,"id":"attr_dc_description" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"DC.Description" + ,"repetitive":0 + ,"type":"attr_dc_description"} + + valuedefault = {"default":"" + ,"id":"valueDefault" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Default" + ,"repetitive":0 + ,"type":"string"} + + valueminimum = {"default":"" + ,"id":"valueMinimum" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Minimum" + ,"repetitive":0 + ,"type":"int"} + + valuemaximum = {"default":"" + ,"id":"valueMaximum" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Maximum" + ,"repetitive":0 + ,"type":"int"} + + valueselect = {"default":"" + ,"id":"valueSelect" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"Auswahlwerte" + ,"repetitive":0 + ,"type":"text"} + + rawjson = {"default":"{}" + ,"id":"rawJSON" + ,"keys":[] + ,"mandatory":0 + ,"multilang":1 + ,"name":"JSON-Schema" + ,"repetitive":0 + ,"type":"text"} + + ace_rawjson = {"default":"" + ,"id":"ACE_rawJSON" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ACE_rawJSON" + ,"repetitive":0 + ,"type":"interface"} + + interface = {"default":"" + ,"id":"interface" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"interface" + ,"repetitive":0 + ,"type":"interface"} + + f_css_defaults = {"default":"" + ,"id":"f_css_defaults" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"CSS: Defaults" + ,"repetitive":0 + ,"type":"resource"} + + standard_html = {"default":"" + ,"id":"standard_html" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"Template: ZMSFormulatorItem" + ,"repetitive":0 + ,"type":"zpt"} diff --git a/ZMSFormulatorItem/f_css_defaults b/ZMSFormulatorItem/f_css_defaults new file mode 100644 index 0000000..3213fc5 --- /dev/null +++ b/ZMSFormulatorItem/f_css_defaults @@ -0,0 +1,144 @@ +textarea.form-control.optionsJS, +textarea.form-control.onReadyJS, +textarea.form-control.rawJSON { + font-family: Courier New; + height: 20em; +} + +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner .ACE_Editor, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_rawJSON, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_rawJSON_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_rawJSON_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_rawJSON_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueSelect, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueSelect_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueSelect_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueSelect_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueDefault, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueDefault_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueDefault_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueDefault_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueDefault, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueDefault_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueDefault_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueDefault_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.date #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueDefault, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueDefault_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueDefault_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueDefault_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.color #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.email #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_mandatoryField, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_hiddenField, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueDefault, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueDefault_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueDefault_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueDefault_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.mailattachment #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueMaximum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMinimum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMinimum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMinimum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMinimum_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMaximum, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMaximum_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMaximum_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueMaximum_fra {display:none;} +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom .ACE_Editor, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_rawJSON, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_rawJSON_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_rawJSON_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.custom #tr_rawJSON_fra {display:block;} +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueSelect, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueSelect_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueSelect_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.checkbox #tr_valueSelect_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueSelect, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueSelect_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueSelect_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.select #tr_valueSelect_fra, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueSelect, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueSelect_ger, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueSelect_eng, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner.multiselect #tr_valueSelect_fra {display:block;} +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMinimum input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMinimum_ger input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMinimum_eng input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMinimum_fra input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMaximum input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMaximum_ger input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMaximum_eng input, +.zmi.ZMSFormulatorItem #tabProperties .accordion-inner #tr_valueMaximum_fra input {max-width:52px !important;} +.zmi .form-insert #tr_valueDefault, +.zmi .form-insert #tr_valueDefault_ger, +.zmi .form-insert #tr_valueDefault_eng, +.zmi .form-insert #tr_valueDefault_fra, +.zmi .form-insert #tr_valueMinimum, +.zmi .form-insert #tr_valueMinimum_ger, +.zmi .form-insert #tr_valueMinimum_eng, +.zmi .form-insert #tr_valueMinimum_fra, +.zmi .form-insert #tr_valueMaximum, +.zmi .form-insert #tr_valueMaximum_ger, +.zmi .form-insert #tr_valueMaximum_eng, +.zmi .form-insert #tr_valueMaximum_fra, +.zmi .form-insert #tr_valueSelect, +.zmi .form-insert #tr_valueSelect_ger, +.zmi .form-insert #tr_valueSelect_eng, +.zmi .form-insert #tr_valueSelect_fra, +.zmi .form-insert .ACE_Editor, +.zmi .form-insert #tr_rawJSON, +.zmi .form-insert #tr_rawJSON_ger, +.zmi .form-insert #tr_rawJSON_eng, +.zmi .form-insert #tr_rawJSON_fra {display:none;} diff --git a/ZMSFormulatorItem/interface.dtml b/ZMSFormulatorItem/interface.dtml new file mode 100644 index 0000000..536c795 --- /dev/null +++ b/ZMSFormulatorItem/interface.dtml @@ -0,0 +1,88 @@ + + + \ No newline at end of file diff --git a/ZMSFormulatorItem/standard_html.zpt b/ZMSFormulatorItem/standard_html.zpt new file mode 100644 index 0000000..302c28a --- /dev/null +++ b/ZMSFormulatorItem/standard_html.zpt @@ -0,0 +1,12 @@ + + + +titlealt +* +type + + + + + \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..2e4ca60 --- /dev/null +++ b/__init__.py @@ -0,0 +1,25 @@ +class zms3_formulator: + """ + python-representation of zms3.formulator + """ + + # Access + access = {"delete_custom":"" + ,"delete_deny":[] + ,"insert_custom":"" + ,"insert_deny":[]} + + # Enabled + enabled = 1 + + # Id + id = "zms3.formulator" + + # Name + name = "zms3.formulator" + + # Revision + revision = "3.5.0" + + # Type + type = "ZMSPackage" diff --git a/conf/zms3.formulator.example.xml b/conf/zms3.formulator.example.xml deleted file mode 100644 index cfb8938..0000000 --- a/conf/zms3.formulator.example.xml +++ /dev/null @@ -1,479 +0,0 @@ - - -0 - - - -'+JSONEditor.defaults.translate('check_birthday')+'

'); - } -} -else { - div_birthday.find("p[class^='help-block']").remove(); -}]]>
-0 - - - - - - - - -This example demonstrates the following:

-
    -
  • Loading external schemas via ajax (using $ref)
  • -
  • Setting the editor's value from javascript (try the Restore to Default button)
  • -
  • Validating the editor's contents (try setting name to an empty string)
  • -
  • Macro templates (try changing the city or state fields and watch the citystate field update automatically)
  • -
  • Enabling and disabling editor fields
  • -
]]>
- -1 -0 -1 -<_data> - - -0 - -<lang id="ger"><![CDATA[Advanced JSON Editor Example for a Person form]]></lang> - -0 - - - -0 -0 -0 - - - -0 -0 -0 - -0 -0 -0 - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Message]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -4 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Name]]></lang> - - -0 - -0 - - - -0 -0 -0 - - - -99 -0 -0 - -18 -0 -0 - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Age]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -0 -0 -0 - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Birthday]]></lang> - - -1 - -0 - - - -0 -0 -0 - - - -0 -0 -0 - -0 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Gender]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -0 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Location]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -0 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Pets]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -0 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Interests]]></lang> - - -0 - -0 - - - -0 -0 -0 - -0 -0 -0 - -0 -0 -0 - - - - - - -1 -1 -1 - -0 -0 -0 - -<lang id="ger"><![CDATA[Memberships]]></lang> - - -1 -
\ No newline at end of file diff --git a/conf/zms3.formulator.langdict.xml b/conf/zms3.formulator.langdict.xml deleted file mode 100644 index b3c4911..0000000 --- a/conf/zms3.formulator.langdict.xml +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - -key -ger -fra -eng - - -TYPE_ZMSFORMULATORITEM -Formular Item -Élément formulaire -Form item - - -TYPE_ZMSFORMULATOR -Formular -Formulaire -Form - - -ZMSFORMULATOR_BUTTON_SUBMIT -Absenden -Soumettre -Submit - - -ZMSFORMULATOR_BUTTON_RESTORE -Zurücksetzen -Restaurer -Restore - - -ZMSFORMULATOR_HINT_FILETYPE -Dateityp: - -File type: - - -ZMSFORMULATOR_HINT_FILESIZE -Dateigröße: - -File size: - - -ZMSFORMULATOR_HINT_MULTISELECT -Tipp: Sie können mehrere Einträge durch das Halten der cmd- bzw. Strg-Taste auswählen. - -Hint: Select multiple entries by holding cmd- or Ctrl-key. - - -ZMSFORMULATOR_HINT_EMAILSYNTAX -E-Mails erwarten ein Format wie \"user@domain.tld\" - -E-Mails expect a format like \"user@domain.tld\" - - -ZMSFORMULATOR_HINT_CHECKINPUT -Bitte überprüfen Sie Ihre Eingabe! - -Please check your input! - - -ZMSFORMULATOR_HINT_DATASENT -Die Daten wurden übertragen. - -Data was sent. - - -ZMSFORMULATOR_HINT_DATANOTSENT -Daten wurden nicht übertragen! Bist du etwa ein Roboter? - -Data was not sent. Are you a robot? - - -ZMSFORMULATOR_HINT_ERROROCCURED -Es ist ein Fehler aufgetreten! - -An Error occurred! - - -ZMSFORMULATOR_ERROR_MINITEMS -Der Wert muss mindestens {{0}} Elemente enthalten - -Value must have at least {{0}} items - - -ZMSFORMULATOR_ERROR_MAXITEMS -Der Wert darf maximal {{0}} Elemente enthalten - -Value must have at most {{0}} items - - -ZMSFORMULATOR_ERROR_MAXIMUM_INCL -Der Wert muss maximal {{0}} sein - -Value must be at most {{0}} - - -ZMSFORMULATOR_ERROR_ONEOF - - -Value must validate against exactly one of the provided schemas. It currently validates against {{0}} of the schemas. - - -ZMSFORMULATOR_ERROR_DISALLOW -Der Wert darf nicht dem Typen {{0}} entsprechen - -Value must not be of type {{0}} - - -ZMSFORMULATOR_ERROR_ADDITIONALITEMS -Keine weiteren Elemente in diesem Array erlaubt! - -No additional items allowed in this array - - -ZMSFORMULATOR_ERROR_ADDITIONAL_PROPERTIES -Keine weiteren Eigenschaften sind erlaubt; die Eigenschaft {{0}} ist gesetzt - -No additional properties allowed, but property {{0}} is set - - -ZMSFORMULATOR_ERROR_MAXPROPERTIES -Das Objekt darf maximal {{0}} Eigenschaften haben - -Object must have at most {{0}} properties - - -ZMSFORMULATOR_ERROR_ANYOF - - -Value must validate against at least one of the provided schemas - - -ZMSFORMULATOR_ERROR_DISALLOW_UNION -Der Wert darf nicht einem der unerlaubten Typen entsprechen - -Value must not be one of the provided disallowed types - - -ZMSFORMULATOR_ERROR_MINPROPERTIES -Das Objekt muss mindestens {{0}} Eigenschaften haben - -Object must have at least {{0}} properties - - -ZMSFORMULATOR_ERROR_TYPE -Der Wert muss dem Typen {{0}} entsprechen - -Value must be of type {{0}} - - -ZMSFORMULATOR_ERROR_TYPE_UNION -Der Wert muss dem vorgegebenen Typen entsprechen - -Value must be one of the provided types - - -ZMSFORMULATOR_ERROR_PATTERN -Der Wert muss dem vorgegebenen Muster entsprechen - -Value must match the provided pattern - - -ZMSFORMULATOR_ERROR_MULTIPLEOF -Der Wert muss ein Vielfaches von {{0}} sein - -Value must be a multiple of {{0}} - - -ZMSFORMULATOR_ERROR_MINIMUM_INCL -Der Wert muss mindestens {{0}} sein - -Value must be at least {{0}} - - -ZMSFORMULATOR_ERROR_NOT - - -Value must not validate against the provided schema - - -ZMSFORMULATOR_ERROR_DEPENDENCY -Muss die Eigenschaft {0}} haben - -Must have property {{0}} - - -ZMSFORMULATOR_ERROR_MINLENGTH -Der Wert muss mindestens {{0}} Zeichen lang sein - -Value must be at least {{0}} characters long - - -ZMSFORMULATOR_ERROR_NOTEMPTY -Es wird ein Wert benötigt - -Value required - - -ZMSFORMULATOR_ERROR_NOTSET -Eigenschaft muss angegeben werden - -Property must be set - - -ZMSFORMULATOR_ERROR_UNIQUEITEMS -Das Feld darf nur eindeutige Elemente enthalten! - -Array must have unique items - - -ZMSFORMULATOR_ERROR_MAXIMUM_EXCL -Der Wert muss kleiner sein als {{0}} - -Value must be less than {{0}} - - -ZMSFORMULATOR_ERROR_MAXLENGTH -Der Wert darf maximal {{0}} Zeichen lang sein - -Value must be at most {{0}} characters long - - -ZMSFORMULATOR_ERROR_MINIMUM_EXCL -Der Wert muss grösser sein als {{0}} - -Value must be greater than {{0}} - - -ZMSFORMULATOR_ERROR_ENUM -Der Wert muss einem der aufgezählten Werte entsprechen - -Value must be one of the enumerated values - - -ZMSFORMULATOR_ERROR_REQUIRED -Dem Objekt fehlt die benötigte Eigenschaft ’{{0}} - -Object is missing the required property '{{0}}' - - -ZMSFORMULATOR_ERROR_MANDATORY -Der Wert ist eine Pflichtangabe - -Value is mandatory - - -ZMSFORMULATOR_FEEDBACK_MSG -Vielen Dank, die Daten sind bei uns eingegangen. - -Thank you, we have received the data. - -
-
-
\ No newline at end of file diff --git a/conf/zms3.formulator.metaobj.xml b/conf/zms3.formulator.metaobj.xml deleted file mode 100644 index 414e38d..0000000 --- a/conf/zms3.formulator.metaobj.xml +++ /dev/null @@ -1,1533 +0,0 @@ - - - - - - - - - - - - - - - 0 - 1 - - 0 - - - - - - - - - - - - 0 - 1 - Bitte beachten! Legen Sie Formulare, sowie Formularelemente immer zuerst in der Primärsprache an. Falls Sie das Formular nur in der Sekundärsprache verwenden, dann deaktivieren Sie das Objekt in der Primärsprache.]]> - 0 - - - - - - - 1 - 1 - - 0 - - - - - - - 1 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - - 0 - 1 - Im Feld Feedback haben Sie die Möglichkeit, eine eigene Meldung zu definieren, welche dem Absender nach dem Ausfüllen des Formulars im Browser angezeigt wird. Sie können zum Formatieren der Nachricht HTML-Tags verwenden. Wenn das Feld leer bleibt, wird eine Standardmeldung ausgegeben.]]> - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - - -
-
-
-
-
-
-
]]> -
- 0 - -
-
- - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - -
-
-
-
-
-
]]> -
- 0 - -
-
- - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - - -
-
-
-
-
-
]]> -
- 0 - -
-
- - - - 0 - 0 - - - -
-
See JSON-Editor README for options and usage of custom Schema (JSON).
-
]]> -
- 0 - -
-
- - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 0 - - -
-
-
- - - - -
-
]]> -
- 0 - -
-
- - - - - 0 - 0 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 0 - - - -
-
Leave blank to use default ZMSAdministrator.email set in System-Properties.
-
]]> -
- 0 - -
-
- - - - - 0 - 0 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - 0 - 0 - - - -
data
-
]]> -
- 0 - -
-
- - - - - - - - - - 0 - 0 - - 1 - - - - - - - - - -
-

title

-

attr_dc_description

- -
-
- -]]> -
- - 0 - 0 - - 0 - -
-
- - - - 0 - 0 - - - - - - -]]> - - 0 - - - -
-
- - - - - - - - - - - - - - - - - - - - - 1 - - - - - -
-
-
-
- - - - - - - - - - - - 0 - 1 - - 0 - - - - - - - 1 - 1 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - - 0 - 0 - - 0 - - - - - - - - 0 - 1 - - 0 - - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - - -
-
You can use the received value of this ZMSFormulatorItem as default for mail replies on notifications and/or send copies of the submitted data as acknowledgement.
-
]]> -
- 0 - -
-
- - - - - - - - - - - - - - - - - - - 1 - 1 - - 0 - - - - - - - 1 - 1 - - 0 - - - - - - - 0 - 0 - - - -
-
Used as column name in data table – one single word without special characters is recommended.
-
]]> -
- 0 - -
-
- - - - 1 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 1 - - 0 - - - - - - - - 0 - 1 - - 0 - - - - - - - 0 - 0 - - -
-
-
-
-
-
]]> -
- 0 - -
-
- - - - 0 - 0 - - - -]]> - - 0 - - - - - - - - - - 0 - 0 - - 0 - - - - - - - - -titlealt -* -type - - - - -]]> - - - 0 - 0 - - 0 - - - -
-
- - - - - - - - - - - - - - - - - - - - - 0 - - - - - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - 2f2a21204a534f4e20456469746f722076302e372e3238202d204a534f4e20536368656d61202d3e2048544d4c20456469746f720a202a204279204a6572656d7920446f726e202d2068747470733a2f2f6769746875622e636f6d2f6a646f726e2f6a736f6e2d656469746f722f0a202a2052656c656173656420756e64657220746865204d4954206c6963656e73650a202a0a202a20446174653a20323031362d30382d30370a202a2f0a2f2a2a0a202a2053656520524541444d452e6d6420666f7220726571756972656d656e747320616e6420757361676520696e666f0a202a2f0a2166756e6374696f6e28297b2f2a6a7368696e74206c6f6f7066756e633a2074727565202a2f0a2f2a2053696d706c65204a61766153637269707420496e6865726974616e63650a202a204279204a6f686e20526573696720687474703a2f2f656a6f686e2e6f72672f0a202a204d4954204c6963656e7365642e0a202a2f0a2f2f20496e73706972656420627920626173653220616e642050726f746f747970650a76617220613b2166756e6374696f6e28297b76617220623d21312c633d2f78797a2f2e746573742866756e6374696f6e28297b77696e646f772e706f73744d657373616765282278797a22297d293f2f5c625f73757065725c622f3a2f2e2a2f3b0a2f2f20546865206261736520436c61737320696d706c656d656e746174696f6e2028646f6573206e6f7468696e67290a2f2f204372656174652061206e657720436c617373207468617420696e6865726974732066726f6d207468697320636c6173730a72657475726e20613d66756e6374696f6e28297b7d2c612e657874656e643d66756e6374696f6e20642861297b0a2f2f205468652064756d6d7920636c61737320636f6e7374727563746f720a66756e6374696f6e206528297b0a2f2f20416c6c20636f6e737472756374696f6e2069732061637475616c6c7920646f6e6520696e2074686520696e6974206d6574686f640a21622626746869732e696e69742626746869732e696e69742e6170706c7928746869732c617267756d656e7473297d76617220663d746869732e70726f746f747970653b0a2f2f20496e7374616e74696174652061206261736520636c6173732028627574206f6e6c79206372656174652074686520696e7374616e63652c0a2f2f20646f6e27742072756e2074686520696e697420636f6e7374727563746f72290a623d21303b76617220673d6e657720746869733b623d21313b0a2f2f20436f7079207468652070726f70657274696573206f766572206f6e746f20746865206e65772070726f746f747970650a666f7228766172206820696e2061290a2f2f20436865636b206966207765277265206f76657277726974696e6720616e206578697374696e672066756e6374696f6e0a675b685d3d2266756e6374696f6e223d3d747970656f6620615b685d26262266756e6374696f6e223d3d747970656f6620665b685d2626632e7465737428615b685d293f66756e6374696f6e28612c62297b72657475726e2066756e6374696f6e28297b76617220633d746869732e5f73757065723b0a2f2f204164642061206e6577202e5f73757065722829206d6574686f642074686174206973207468652073616d65206d6574686f640a2f2f20627574206f6e207468652073757065722d636c6173730a746869732e5f73757065723d665b615d3b0a2f2f20546865206d6574686f64206f6e6c79206e65656420746f20626520626f756e642074656d706f726172696c792c20736f2077650a2f2f2072656d6f7665206974207768656e20776527726520646f6e6520657865637574696e670a76617220643d622e6170706c7928746869732c617267756d656e7473293b72657475726e20746869732e5f73757065723d632c647d7d28682c615b685d293a615b685d3b0a2f2f20506f70756c617465206f757220636f6e73747275637465642070726f746f74797065206f626a6563740a2f2f20456e666f7263652074686520636f6e7374727563746f7220746f2062652077686174207765206578706563740a2f2f20416e64206d616b65207468697320636c61737320657874656e6461626c650a72657475726e20652e70726f746f747970653d672c652e70726f746f747970652e636f6e7374727563746f723d652c652e657874656e643d642c657d2c617d28292c0a2f2f20437573746f6d4576656e7420636f6e7374727563746f7220706f6c7966696c6c0a2f2f2046726f6d204d444e0a66756e6374696f6e28297b66756e6374696f6e206128612c62297b623d627c7c7b627562626c65733a21312c63616e63656c61626c653a21312c64657461696c3a766f696420307d3b76617220633d646f63756d656e742e6372656174654576656e742822437573746f6d4576656e7422293b72657475726e20632e696e6974437573746f6d4576656e7428612c622e627562626c65732c622e63616e63656c61626c652c622e64657461696c292c637d612e70726f746f747970653d77696e646f772e4576656e742e70726f746f747970652c77696e646f772e437573746f6d4576656e743d617d28292c0a2f2f2072657175657374416e696d6174696f6e4672616d6520706f6c7966696c6c206279204572696b204dc3b66c6c65722e2066697865732066726f6d205061756c20497269736820616e642054696e6f205a696a64656c0a2f2f204d4954206c6963656e73650a66756e6374696f6e28297b666f722876617220613d302c623d5b226d73222c226d6f7a222c227765626b6974222c226f225d2c633d303b633c622e6c656e67746826262177696e646f772e72657175657374416e696d6174696f6e4672616d653b2b2b632977696e646f772e72657175657374416e696d6174696f6e4672616d653d77696e646f775b625b635d2b2252657175657374416e696d6174696f6e4672616d65225d2c77696e646f772e63616e63656c416e696d6174696f6e4672616d653d77696e646f775b625b635d2b2243616e63656c416e696d6174696f6e4672616d65225d7c7c77696e646f775b625b635d2b2243616e63656c52657175657374416e696d6174696f6e4672616d65225d3b77696e646f772e72657175657374416e696d6174696f6e4672616d657c7c2877696e646f772e72657175657374416e696d6174696f6e4672616d653d66756e6374696f6e28622c63297b76617220643d286e65772044617465292e67657454696d6528292c653d4d6174682e6d617828302c31362d28642d6129292c663d77696e646f772e73657454696d656f75742866756e6374696f6e28297b6228642b65297d2c65293b72657475726e20613d642b652c667d292c77696e646f772e63616e63656c416e696d6174696f6e4672616d657c7c2877696e646f772e63616e63656c416e696d6174696f6e4672616d653d66756e6374696f6e2861297b636c65617254696d656f75742861297d297d28292c0a2f2f2041727261792e6973417272617920706f6c7966696c6c0a2f2f2046726f6d204d444e0a66756e6374696f6e28297b41727261792e697341727261797c7c2841727261792e697341727261793d66756e6374696f6e2861297b72657475726e225b6f626a6563742041727261795d223d3d3d4f626a6563742e70726f746f747970652e746f537472696e672e63616c6c2861297d297d28293b2f2a2a0a202a2054616b656e2066726f6d206a517565727920322e312e330a202a0a202a2040706172616d206f626a0a202a204072657475726e73207b626f6f6c65616e7d0a202a2f0a76617220623d66756e6374696f6e2861297b0a2f2f204e6f7420706c61696e206f626a656374733a0a2f2f202d20416e79206f626a656374206f722076616c75652077686f736520696e7465726e616c205b5b436c6173735d5d2070726f7065727479206973206e6f7420225b6f626a656374204f626a6563745d220a2f2f202d20444f4d206e6f6465730a2f2f202d2077696e646f770a2f2f204e6f7420706c61696e206f626a656374733a0a2f2f202d20416e79206f626a656374206f722076616c75652077686f736520696e7465726e616c205b5b436c6173735d5d2070726f7065727479206973206e6f7420225b6f626a656374204f626a6563745d220a2f2f202d20444f4d206e6f6465730a2f2f202d2077696e646f770a72657475726e2128226f626a65637422213d747970656f6620617c7c612e6e6f6465547970657c7c6e756c6c213d3d612626613d3d3d612e77696e646f772926262128612e636f6e7374727563746f722626214f626a6563742e70726f746f747970652e6861734f776e50726f70657274792e63616c6c28612e636f6e7374727563746f722e70726f746f747970652c22697350726f746f747970654f662229297d2c633d66756e6374696f6e2861297b76617220642c652c663b666f7228653d313b653c617267756d656e74732e6c656e6774683b652b2b297b643d617267756d656e74735b655d3b666f72286620696e206429642e6861734f776e50726f7065727479286629262628645b665d26266228645b665d293f28612e6861734f776e50726f70657274792866297c7c28615b665d3d7b7d292c6328615b665d2c645b665d29293a615b665d3d645b665d297d72657475726e20617d2c643d66756e6374696f6e28612c62297b696628612626226f626a656374223d3d747970656f662061297b76617220633b69662841727261792e697341727261792861297c7c226e756d626572223d3d747970656f6620612e6c656e6774682626612e6c656e6774683e302626612e6c656e6774682d3120696e2061297b666f7228633d303b633c612e6c656e6774683b632b2b296966286228632c615b635d293d3d3d21312972657475726e7d656c7365206966284f626a6563742e6b657973297b76617220643d4f626a6563742e6b6579732861293b666f7228633d303b633c642e6c656e6774683b632b2b296966286228645b635d2c615b645b635d5d293d3d3d21312972657475726e7d656c736520666f72286320696e206129696628612e6861734f776e50726f706572747928632926266228632c615b635d293d3d3d21312972657475726e7d7d2c653d66756e6374696f6e28612c62297b76617220633d646f63756d656e742e6372656174654576656e74282248544d4c4576656e747322293b632e696e69744576656e7428622c21302c2130292c612e64697370617463684576656e742863297d2c663d66756e6374696f6e28612c62297b69662821286120696e7374616e63656f6620456c656d656e7429297468726f77206e6577204572726f722822656c656d656e742073686f756c6420626520616e20696e7374616e6365206f6620456c656d656e7422293b623d63287b7d2c662e64656661756c74732e6f7074696f6e732c627c7c7b7d292c746869732e656c656d656e743d612c746869732e6f7074696f6e733d622c746869732e696e697428297d3b662e70726f746f747970653d7b0a2f2f206e65636573736172792073696e63652077652072656d6f7665207468652063746f722070726f706572747920627920646f696e672061206c69746572616c2061737369676e6d656e742e20576974686f757420746869730a2f2f2074686520246973706c61696e6f626a6563742066756e6374696f6e2077696c6c207468696e6b20746861742074686973206973206120706c61696e206f626a6563742e0a636f6e7374727563746f723a662c696e69743a66756e6374696f6e28297b76617220613d746869733b746869732e72656164793d21313b76617220623d662e64656661756c74732e7468656d65735b746869732e6f7074696f6e732e7468656d657c7c662e64656661756c74732e7468656d655d3b6966282162297468726f7722556e6b6e6f776e207468656d6520222b28746869732e6f7074696f6e732e7468656d657c7c662e64656661756c74732e7468656d65293b746869732e736368656d613d746869732e6f7074696f6e732e736368656d612c746869732e7468656d653d6e657720622c746869732e74656d706c6174653d746869732e6f7074696f6e732e74656d706c6174652c746869732e726566733d746869732e6f7074696f6e732e726566737c7c7b7d2c746869732e757569643d302c746869732e5f5f646174613d7b7d3b76617220633d662e64656661756c74732e69636f6e6c6962735b746869732e6f7074696f6e732e69636f6e6c69627c7c662e64656661756c74732e69636f6e6c69625d3b63262628746869732e69636f6e6c69623d6e65772063292c746869732e726f6f745f636f6e7461696e65723d746869732e7468656d652e676574436f6e7461696e657228292c746869732e656c656d656e742e617070656e644368696c6428746869732e726f6f745f636f6e7461696e6572292c746869732e7472616e736c6174653d746869732e6f7074696f6e732e7472616e736c6174657c7c662e64656661756c74732e7472616e736c6174652c0a2f2f20466574636820616c6c2065787465726e616c20726566732076696120616a61780a746869732e5f6c6f616445787465726e616c5265667328746869732e736368656d612c66756e6374696f6e28297b612e5f676574446566696e6974696f6e7328612e736368656d61293b0a2f2f2056616c696461746f72206f7074696f6e730a76617220623d7b7d3b612e6f7074696f6e732e637573746f6d5f76616c696461746f7273262628622e637573746f6d5f76616c696461746f72733d612e6f7074696f6e732e637573746f6d5f76616c696461746f7273292c612e76616c696461746f723d6e657720662e56616c696461746f7228612c6e756c6c2c62293b0a2f2f204372656174652074686520726f6f7420656469746f720a76617220633d612e676574456469746f72436c61737328612e736368656d61293b612e726f6f743d612e637265617465456469746f7228632c7b6a736f6e656469746f723a612c736368656d613a612e736368656d612c72657175697265643a21302c636f6e7461696e65723a612e726f6f745f636f6e7461696e65727d292c612e726f6f742e7072654275696c6428292c612e726f6f742e6275696c6428292c612e726f6f742e706f73744275696c6428292c0a2f2f205374617274696e6720646174610a612e6f7074696f6e732e737461727476616c2626612e726f6f742e73657456616c756528612e6f7074696f6e732e737461727476616c292c612e76616c69646174696f6e5f726573756c74733d612e76616c696461746f722e76616c696461746528612e726f6f742e67657456616c75652829292c612e726f6f742e73686f7756616c69646174696f6e4572726f727328612e76616c69646174696f6e5f726573756c7473292c612e72656164793d21302c0a2f2f2046697265207265616479206576656e74206173796e6368726f6e6f75736c790a77696e646f772e72657175657374416e696d6174696f6e4672616d652866756e6374696f6e28297b612e7265616479262628612e76616c69646174696f6e5f726573756c74733d612e76616c696461746f722e76616c696461746528612e726f6f742e67657456616c75652829292c612e726f6f742e73686f7756616c69646174696f6e4572726f727328612e76616c69646174696f6e5f726573756c7473292c612e747269676765722822726561647922292c612e7472696767657228226368616e67652229297d297d297d2c67657456616c75653a66756e6374696f6e28297b69662821746869732e7265616479297468726f77224a534f4e20456469746f72206e6f74207265616479207965742e20204c697374656e20666f722027726561647927206576656e74206265666f72652067657474696e67207468652076616c7565223b72657475726e20746869732e726f6f742e67657456616c756528297d2c73657456616c75653a66756e6374696f6e2861297b69662821746869732e7265616479297468726f77224a534f4e20456469746f72206e6f74207265616479207965742e20204c697374656e20666f722027726561647927206576656e74206265666f72652073657474696e67207468652076616c7565223b72657475726e20746869732e726f6f742e73657456616c75652861292c746869737d2c76616c69646174653a66756e6374696f6e2861297b69662821746869732e7265616479297468726f77224a534f4e20456469746f72206e6f74207265616479207965742e20204c697374656e20666f722027726561647927206576656e74206265666f72652076616c69646174696e67223b0a2f2f20437573746f6d2076616c75650a2f2f20437573746f6d2076616c75650a72657475726e20313d3d3d617267756d656e74732e6c656e6774683f746869732e76616c696461746f722e76616c69646174652861293a746869732e76616c69646174696f6e5f726573756c74737d2c64657374726f793a66756e6374696f6e28297b746869732e64657374726f7965647c7c746869732e7265616479262628746869732e736368656d613d6e756c6c2c746869732e6f7074696f6e733d6e756c6c2c746869732e726f6f742e64657374726f7928292c746869732e726f6f743d6e756c6c2c746869732e726f6f745f636f6e7461696e65723d6e756c6c2c746869732e76616c696461746f723d6e756c6c2c746869732e76616c69646174696f6e5f726573756c74733d6e756c6c2c746869732e7468656d653d6e756c6c2c746869732e69636f6e6c69623d6e756c6c2c746869732e74656d706c6174653d6e756c6c2c746869732e5f5f646174613d6e756c6c2c746869732e72656164793d21312c746869732e656c656d656e742e696e6e657248544d4c3d22222c746869732e64657374726f7965643d2130297d2c6f6e3a66756e6374696f6e28612c62297b72657475726e20746869732e63616c6c6261636b733d746869732e63616c6c6261636b737c7c7b7d2c746869732e63616c6c6261636b735b615d3d746869732e63616c6c6261636b735b615d7c7c5b5d2c746869732e63616c6c6261636b735b615d2e707573682862292c746869737d2c6f66663a66756e6374696f6e28612c62297b0a2f2f2053706563696669632063616c6c6261636b0a69662861262662297b746869732e63616c6c6261636b733d746869732e63616c6c6261636b737c7c7b7d2c746869732e63616c6c6261636b735b615d3d746869732e63616c6c6261636b735b615d7c7c5b5d3b666f722876617220633d5b5d2c643d303b643c746869732e63616c6c6261636b735b615d2e6c656e6774683b642b2b29746869732e63616c6c6261636b735b615d5b645d213d3d622626632e7075736828746869732e63616c6c6261636b735b615d5b645d293b746869732e63616c6c6261636b735b615d3d637d656c736520613f28746869732e63616c6c6261636b733d746869732e63616c6c6261636b737c7c7b7d2c746869732e63616c6c6261636b735b615d3d5b5d293a746869732e63616c6c6261636b733d7b7d3b72657475726e20746869737d2c747269676765723a66756e6374696f6e2861297b696628746869732e63616c6c6261636b732626746869732e63616c6c6261636b735b615d2626746869732e63616c6c6261636b735b615d2e6c656e67746829666f722876617220623d303b623c746869732e63616c6c6261636b735b615d2e6c656e6774683b622b2b29746869732e63616c6c6261636b735b615d5b625d28293b72657475726e20746869737d2c7365744f7074696f6e3a66756e6374696f6e28612c62297b6966282273686f775f6572726f727322213d3d61297468726f77224f7074696f6e20222b612b22206d7573742062652073657420647572696e6720696e7374616e74696174696f6e20616e642063616e6e6f74206265206368616e676564206c61746572223b72657475726e20746869732e6f7074696f6e732e73686f775f6572726f72733d622c746869732e6f6e4368616e676528292c746869737d2c676574456469746f72436c6173733a66756e6374696f6e2861297b76617220623b696628613d746869732e657870616e64536368656d612861292c6428662e64656661756c74732e7265736f6c766572732c66756e6374696f6e28632c64297b76617220653d642861293b696628652626662e64656661756c74732e656469746f72735b655d2972657475726e20623d652c21317d292c2162297468726f7722556e6b6e6f776e20656469746f7220666f7220736368656d6120222b4a534f4e2e737472696e676966792861293b69662821662e64656661756c74732e656469746f72735b625d297468726f7722556e6b6e6f776e20656469746f7220222b623b72657475726e20662e64656661756c74732e656469746f72735b625d7d2c637265617465456469746f723a66756e6374696f6e28612c62297b72657475726e20623d63287b7d2c612e6f7074696f6e737c7c7b7d2c62292c6e657720612862297d2c6f6e4368616e67653a66756e6374696f6e28297b696628746869732e7265616479262621746869732e666972696e675f6368616e6765297b746869732e666972696e675f6368616e67653d21303b76617220613d746869733b72657475726e2077696e646f772e72657175657374416e696d6174696f6e4672616d652866756e6374696f6e28297b612e666972696e675f6368616e67653d21312c612e72656164792626280a2f2f2056616c696461746520616e6420636163686520726573756c74730a612e76616c69646174696f6e5f726573756c74733d612e76616c696461746f722e76616c696461746528612e726f6f742e67657456616c75652829292c226e6576657222213d3d612e6f7074696f6e732e73686f775f6572726f72733f612e726f6f742e73686f7756616c69646174696f6e4572726f727328612e76616c69646174696f6e5f726573756c7473293a612e726f6f742e73686f7756616c69646174696f6e4572726f7273285b5d292c0a2f2f2046697265206368616e6765206576656e740a612e7472696767657228226368616e67652229297d292c746869737d7d2c636f6d70696c6554656d706c6174653a66756e6374696f6e28612c62297b623d627c7c662e64656661756c74732e74656d706c6174653b76617220633b0a2f2f2053706563696679696e6720612070726573657420656e67696e650a69662822737472696e67223d3d747970656f662062297b69662821662e64656661756c74732e74656d706c617465735b625d297468726f7722556e6b6e6f776e2074656d706c61746520656e67696e6520222b623b696628633d662e64656661756c74732e74656d706c617465735b625d28292c2163297468726f772254656d706c61746520656e67696e6520222b622b22206d697373696e67207265717569726564206c6962726172792e227d656c736520633d623b6966282163297468726f77224e6f2074656d706c61746520656e67696e6520736574223b69662821632e636f6d70696c65297468726f7722496e76616c69642074656d706c61746520656e67696e6520736574223b72657475726e20632e636f6d70696c652861297d2c5f646174613a66756e6374696f6e28612c622c63297b0a2f2f2053657474696e6720646174610a69662833213d3d617267756d656e74732e6c656e677468290a2f2f204e6f20646174612073746f7265640a2f2f204e6f20646174612073746f7265640a72657475726e20612e6861734174747269627574652822646174612d6a736f6e656469746f722d222b62293f746869732e5f5f646174615b612e6765744174747269627574652822646174612d6a736f6e656469746f722d222b62295d3a6e756c6c3b76617220643b612e6861734174747269627574652822646174612d6a736f6e656469746f722d222b62293f643d612e6765744174747269627574652822646174612d6a736f6e656469746f722d222b62293a28643d746869732e757569642b2b2c612e7365744174747269627574652822646174612d6a736f6e656469746f722d222b622c6429292c746869732e5f5f646174615b645d3d637d2c7265676973746572456469746f723a66756e6374696f6e2861297b72657475726e20746869732e656469746f72733d746869732e656469746f72737c7c7b7d2c746869732e656469746f72735b612e706174685d3d612c746869737d2c756e7265676973746572456469746f723a66756e6374696f6e2861297b72657475726e20746869732e656469746f72733d746869732e656469746f72737c7c7b7d2c746869732e656469746f72735b612e706174685d3d6e756c6c2c746869737d2c676574456469746f723a66756e6374696f6e2861297b696628746869732e656469746f72732972657475726e20746869732e656469746f72735b615d7d2c77617463683a66756e6374696f6e28612c62297b72657475726e20746869732e77617463686c6973743d746869732e77617463686c6973747c7c7b7d2c746869732e77617463686c6973745b615d3d746869732e77617463686c6973745b615d7c7c5b5d2c746869732e77617463686c6973745b615d2e707573682862292c746869737d2c756e77617463683a66756e6374696f6e28612c62297b69662821746869732e77617463686c6973747c7c21746869732e77617463686c6973745b615d2972657475726e20746869733b0a2f2f2049662072656d6f76696e6720616c6c2063616c6c6261636b7320666f72206120706174680a69662821622972657475726e20746869732e77617463686c6973745b615d3d6e756c6c2c746869733b666f722876617220633d5b5d2c643d303b643c746869732e77617463686c6973745b615d2e6c656e6774683b642b2b29746869732e77617463686c6973745b615d5b645d213d3d622626632e7075736828746869732e77617463686c6973745b615d5b645d293b72657475726e20746869732e77617463686c6973745b615d3d632e6c656e6774683f633a6e756c6c2c746869737d2c6e6f7469667957617463686572733a66756e6374696f6e2861297b69662821746869732e77617463686c6973747c7c21746869732e77617463686c6973745b615d2972657475726e20746869733b666f722876617220623d303b623c746869732e77617463686c6973745b615d2e6c656e6774683b622b2b29746869732e77617463686c6973745b615d5b625d28297d2c6973456e61626c65643a66756e6374696f6e28297b72657475726e21746869732e726f6f747c7c746869732e726f6f742e6973456e61626c656428297d2c656e61626c653a66756e6374696f6e28297b746869732e726f6f742e656e61626c6528297d2c64697361626c653a66756e6374696f6e28297b746869732e726f6f742e64697361626c6528297d2c5f676574446566696e6974696f6e733a66756e6374696f6e28612c62297b696628623d627c7c22232f646566696e6974696f6e732f222c612e646566696e6974696f6e7329666f7228766172206320696e20612e646566696e6974696f6e7329612e646566696e6974696f6e732e6861734f776e50726f7065727479286329262628746869732e726566735b622b635d3d612e646566696e6974696f6e735b635d2c612e646566696e6974696f6e735b635d2e646566696e6974696f6e732626746869732e5f676574446566696e6974696f6e7328612e646566696e6974696f6e735b635d2c622b632b222f646566696e6974696f6e732f2229297d2c5f67657445787465726e616c526566733a66756e6374696f6e2861297b76617220623d7b7d2c633d66756e6374696f6e2861297b666f7228766172206320696e206129612e6861734f776e50726f7065727479286329262628625b635d3d2130297d3b612e247265662626226f626a65637422213d747970656f6620612e247265662626222322213d3d612e247265662e73756273747228302c3129262621746869732e726566735b612e247265665d262628625b612e247265665d3d2130293b666f7228766172206420696e206129696628612e6861734f776e50726f706572747928642929696628615b645d2626226f626a656374223d3d747970656f6620615b645d262641727261792e6973417272617928615b645d2929666f722876617220653d303b653c615b645d2e6c656e6774683b652b2b29226f626a656374223d3d747970656f6620615b645d5b655d26266328746869732e5f67657445787465726e616c5265667328615b645d5b655d29293b656c736520615b645d2626226f626a656374223d3d747970656f6620615b645d26266328746869732e5f67657445787465726e616c5265667328615b645d29293b72657475726e20627d2c5f6c6f616445787465726e616c526566733a66756e6374696f6e28612c62297b76617220633d746869732c653d746869732e5f67657445787465726e616c526566732861292c663d302c673d302c683d21313b6428652c66756e6374696f6e2861297b69662821632e726566735b615d297b69662821632e6f7074696f6e732e616a6178297468726f77224d7573742073657420616a6178206f7074696f6e20746f207472756520746f206c6f61642065787465726e616c2072656620222b613b632e726566735b615d3d226c6f6164696e67222c672b2b3b76617220643d6e657720584d4c48747470526571756573743b642e6f70656e2822474554222c612c2130292c642e6f6e726561647973746174656368616e67653d66756e6374696f6e28297b696628343d3d642e72656164795374617465297b0a2f2f2052657175657374207375636365656465640a696628323030213d3d642e737461747573297468726f772077696e646f772e636f6e736f6c652e6c6f672864292c224661696c656420746f206665746368207265662076696120616a61782d20222b613b76617220653b7472797b653d4a534f4e2e706172736528642e726573706f6e736554657874297d63617463682869297b7468726f772077696e646f772e636f6e736f6c652e6c6f672869292c224661696c656420746f2070617273652065787465726e616c2072656620222b617d69662821657c7c226f626a65637422213d747970656f662065297468726f772245787465726e616c2072656620646f6573206e6f7420636f6e7461696e20612076616c696420736368656d61202d20222b613b632e726566735b615d3d652c632e5f6c6f616445787465726e616c5265667328652c66756e6374696f6e28297b662b2b2c663e3d6726262168262628683d21302c622829297d297d7d2c642e73656e6428297d7d292c677c7c6228297d2c657870616e64526566733a66756e6374696f6e2861297b666f7228613d63287b7d2c61293b612e247265663b297b76617220623d612e247265663b64656c65746520612e247265662c746869732e726566735b625d7c7c28623d6465636f6465555249436f6d706f6e656e74286229292c613d746869732e657874656e64536368656d617328612c746869732e726566735b625d297d72657475726e20617d2c657870616e64536368656d613a66756e6374696f6e2861297b76617220622c653d746869732c663d63287b7d2c61293b0a2f2f20616c6c4f6620736368656d61732073686f756c64206265206d657267656420696e746f2074686520706172656e740a6966280a2f2f2056657273696f6e2033206074797065600a226f626a656374223d3d747970656f6620612e747970652626280a2f2f204172726179206f662074797065730a41727261792e6973417272617928612e74797065293f6428612e747970652c66756e6374696f6e28622c63297b0a2f2f20536368656d610a226f626a656374223d3d747970656f662063262628612e747970655b625d3d652e657870616e64536368656d61286329297d293a612e747970653d652e657870616e64536368656d6128612e7479706529292c0a2f2f2056657273696f6e20332060646973616c6c6f77600a226f626a656374223d3d747970656f6620612e646973616c6c6f772626280a2f2f204172726179206f662074797065730a41727261792e6973417272617928612e646973616c6c6f77293f6428612e646973616c6c6f772c66756e6374696f6e28622c63297b0a2f2f20536368656d610a226f626a656374223d3d747970656f662063262628612e646973616c6c6f775b625d3d652e657870616e64536368656d61286329297d293a612e646973616c6c6f773d652e657870616e64536368656d6128612e646973616c6c6f7729292c0a2f2f2056657273696f6e20342060616e794f66600a612e616e794f6626266428612e616e794f662c66756e6374696f6e28622c63297b612e616e794f665b625d3d652e657870616e64536368656d612863297d292c0a2f2f2056657273696f6e20342060646570656e64656e63696573602028736368656d6120646570656e64656e63696573290a612e646570656e64656e6369657326266428612e646570656e64656e636965732c66756e6374696f6e28622c63297b226f626a65637422213d747970656f6620637c7c41727261792e697341727261792863297c7c28612e646570656e64656e636965735b625d3d652e657870616e64536368656d61286329297d292c0a2f2f2056657273696f6e203420606e6f74600a612e6e6f74262628612e6e6f743d746869732e657870616e64536368656d6128612e6e6f7429292c612e616c6c4f66297b666f7228623d303b623c612e616c6c4f662e6c656e6774683b622b2b29663d746869732e657874656e64536368656d617328662c746869732e657870616e64536368656d6128612e616c6c4f665b625d29293b64656c65746520662e616c6c4f667d0a2f2f20657874656e647320736368656d61732073686f756c64206265206d657267656420696e746f20706172656e740a696628615b22657874656e6473225d297b0a2f2f20496620657874656e6473206973206120736368656d610a69662841727261792e6973417272617928615b22657874656e6473225d2929666f7228623d303b623c615b22657874656e6473225d2e6c656e6774683b622b2b29663d746869732e657874656e64536368656d617328662c746869732e657870616e64536368656d6128615b22657874656e6473225d5b625d29293b656c736520663d746869732e657874656e64536368656d617328662c746869732e657870616e64536368656d6128615b22657874656e6473225d29293b64656c65746520665b22657874656e6473225d7d0a2f2f20706172656e742073686f756c64206265206d657267656420696e746f206f6e654f6620736368656d61730a696628612e6f6e654f66297b76617220673d63287b7d2c66293b666f722864656c65746520672e6f6e654f662c623d303b623c612e6f6e654f662e6c656e6774683b622b2b29662e6f6e654f665b625d3d746869732e657874656e64536368656d617328746869732e657870616e64536368656d6128612e6f6e654f665b625d292c67297d72657475726e20746869732e657870616e64526566732866297d2c657874656e64536368656d61733a66756e6374696f6e28612c62297b613d63287b7d2c61292c623d63287b7d2c62293b76617220653d746869732c663d7b7d3b0a2f2f2050726f7065727469657320696e206f626a322074686174206172656e277420696e206f626a310a72657475726e206428612c66756e6374696f6e28612c63297b0a2f2f2049662074686973206b657920697320616c736f20646566696e656420696e206f626a322c206d65726765207468656d0a22756e646566696e656422213d747970656f6620625b615d3f0a2f2f20526571756972656420616e642064656661756c7450726f70657274696573206172726179732073686f756c6420626520756e696f6e656420746f6765746865720a22726571756972656422213d3d6126262264656661756c7450726f7065727469657322213d3d617c7c226f626a65637422213d747970656f6620637c7c2141727261792e697341727261792863293f227479706522213d3d617c7c22737472696e6722213d747970656f66206326262141727261792e697341727261792863293f226f626a656374223d3d747970656f662063262641727261792e697341727261792863293f665b615d3d632e66696c7465722866756e6374696f6e2863297b72657475726e20625b615d2e696e6465784f66286329213d3d2d317d293a226f626a656374223d3d747970656f66206326266e756c6c213d3d633f665b615d3d652e657874656e64536368656d617328632c625b615d293a665b615d3d633a280a2f2f204d616b652073757265207765277265206465616c696e672077697468206172726179730a22737472696e67223d3d747970656f662063262628633d5b635d292c22737472696e67223d3d747970656f6620622e74797065262628622e747970653d5b622e747970655d292c0a2f2f2049662074797065206973206f6e6c7920646566696e656420696e2074686520666972737420736368656d612c206b6565702069740a622e747970652626622e747970652e6c656e6774683f662e747970653d632e66696c7465722866756e6374696f6e2861297b72657475726e20622e747970652e696e6465784f66286129213d3d2d317d293a662e747970653d632c0a2f2f2049662074686572652773206f6e6c792031207479706520616e6420697427732061207072696d69746976652c20757365206120737472696e6720696e7374656164206f662061727261790a313d3d3d662e747970652e6c656e677468262622737472696e67223d3d747970656f6620662e747970655b305d3f662e747970653d662e747970655b305d3a303d3d3d662e747970652e6c656e677468262664656c65746520662e74797065293a0a2f2f20556e696f6e2061727261797320616e6420756e697175650a665b615d3d632e636f6e63617428625b615d292e7265647563652866756e6374696f6e28612c62297b72657475726e20612e696e6465784f662862293c302626612e707573682862292c617d2c5b5d293a665b615d3d637d292c6428622c66756e6374696f6e28622c63297b22756e646566696e6564223d3d747970656f6620615b625d262628665b625d3d63297d292c667d7d2c662e64656661756c74733d7b7468656d65733a7b7d2c74656d706c617465733a7b7d2c69636f6e6c6962733a7b7d2c656469746f72733a7b7d2c6c616e6775616765733a7b7d2c7265736f6c766572733a5b5d2c637573746f6d5f76616c696461746f72733a5b5d7d2c662e56616c696461746f723d612e657874656e64287b696e69743a66756e6374696f6e28612c622c63297b746869732e6a736f6e656469746f723d612c746869732e736368656d613d627c7c746869732e6a736f6e656469746f722e736368656d612c746869732e6f7074696f6e733d637c7c7b7d2c746869732e7472616e736c6174653d746869732e6a736f6e656469746f722e7472616e736c6174657c7c662e64656661756c74732e7472616e736c6174657d2c76616c69646174653a66756e6374696f6e2861297b72657475726e20746869732e5f76616c6964617465536368656d6128746869732e736368656d612c61297d2c5f76616c6964617465536368656d613a66756e6374696f6e28612c622c65297b76617220672c682c692c6a3d746869732c6b3d5b5d2c6c3d4a534f4e2e737472696e676966792862293b2f2a0a20202020202a20547970652041676e6f737469632056616c69646174696f6e0a20202020202a2f0a2f2f2056657273696f6e203320607265717569726564600a696628653d657c7c22726f6f74222c0a2f2f20576f726b206f6e206120636f7079206f662074686520736368656d610a613d63287b7d2c746869732e6a736f6e656469746f722e657870616e6452656673286129292c612e72657175697265642626612e72657175697265643d3d3d2130297b69662822756e646566696e6564223d3d747970656f662062290a2f2f2043616e277420646f20616e79206d6f72652076616c69646174696f6e206174207468697320706f696e740a72657475726e206b2e70757368287b706174683a652c70726f70657274793a227265717569726564222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6e6f7473657422297d292c6b7d656c73652069662822756e646566696e6564223d3d747970656f662062297b0a2f2f2049662072657175697265645f62795f64656661756c74206973207365742c20616c6c206669656c6473206172652072657175697265640a69662821746869732e6a736f6e656469746f722e6f7074696f6e732e72657175697265645f62795f64656661756c742972657475726e206b3b6b2e70757368287b706174683a652c70726f70657274793a227265717569726564222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6e6f7473657422297d297d0a2f2f2060656e756d600a696628615b22656e756d225d297b666f7228673d21312c683d303b683c615b22656e756d225d2e6c656e6774683b682b2b296c3d3d3d4a534f4e2e737472696e6769667928615b22656e756d225d5b685d29262628673d2130293b677c7c6b2e70757368287b706174683a652c70726f70657274793a22656e756d222c6d6573736167653a746869732e7472616e736c61746528226572726f725f656e756d22297d297d0a2f2f2060657874656e647360202876657273696f6e2033290a696628615b22657874656e6473225d29666f7228683d303b683c615b22657874656e6473225d2e6c656e6774683b682b2b296b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128615b22657874656e6473225d5b685d2c622c6529293b0a2f2f2060616c6c4f66600a696628612e616c6c4f6629666f7228683d303b683c612e616c6c4f662e6c656e6774683b682b2b296b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e616c6c4f665b685d2c622c6529293b0a2f2f2060616e794f66600a696628612e616e794f66297b666f7228673d21312c683d303b683c612e616e794f662e6c656e6774683b682b2b2969662821746869732e5f76616c6964617465536368656d6128612e616e794f665b685d2c622c65292e6c656e677468297b673d21303b627265616b7d677c7c6b2e70757368287b706174683a652c70726f70657274793a22616e794f66222c6d6573736167653a746869732e7472616e736c61746528226572726f725f616e794f6622297d297d0a2f2f20606f6e654f66600a696628612e6f6e654f66297b673d303b766172206d3d5b5d3b666f7228683d303b683c612e6f6e654f662e6c656e6774683b682b2b297b0a2f2f2053657420746865206572726f7220706174687320746f20626520706174682e6f6e654f665b695d2e726573742e6f662e706174680a766172206e3d746869732e5f76616c6964617465536368656d6128612e6f6e654f665b685d2c622c65293b666f72286e2e6c656e6774687c7c672b2b2c693d303b693c6e2e6c656e6774683b692b2b296e5b695d2e706174683d652b222e6f6e654f665b222b682b225d222b6e5b695d2e706174682e73756273747228652e6c656e677468293b6d3d6d2e636f6e636174286e297d31213d3d672626286b2e70757368287b706174683a652c70726f70657274793a226f6e654f66222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6f6e654f66222c5b675d297d292c6b3d6b2e636f6e636174286d29297d0a2f2f206074797065602028626f74682056657273696f6e203320616e642056657273696f6e203420737570706f7274290a6966280a2f2f20606e6f74600a612e6e6f74262628746869732e5f76616c6964617465536368656d6128612e6e6f742c622c65292e6c656e6774687c7c6b2e70757368287b706174683a652c70726f70657274793a226e6f74222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6e6f7422297d29292c612e74797065290a2f2f20556e696f6e20747970650a69662841727261792e6973417272617928612e7479706529297b666f7228673d21312c683d303b683c612e747970652e6c656e6774683b682b2b29696628746869732e5f636865636b5479706528612e747970655b685d2c6229297b673d21303b627265616b7d677c7c6b2e70757368287b706174683a652c70726f70657274793a2274797065222c6d6573736167653a746869732e7472616e736c61746528226572726f725f747970655f756e696f6e22297d297d656c736520746869732e5f636865636b5479706528612e747970652c62297c7c6b2e70757368287b706174683a652c70726f70657274793a2274797065222c6d6573736167653a746869732e7472616e736c61746528226572726f725f74797065222c5b612e747970655d297d293b0a2f2f2060646973616c6c6f7760202876657273696f6e2033290a696628612e646973616c6c6f77290a2f2f20556e696f6e20747970650a69662841727261792e6973417272617928612e646973616c6c6f7729297b666f7228673d21302c683d303b683c612e646973616c6c6f772e6c656e6774683b682b2b29696628746869732e5f636865636b5479706528612e646973616c6c6f775b685d2c6229297b673d21313b627265616b7d677c7c6b2e70757368287b706174683a652c70726f70657274793a22646973616c6c6f77222c6d6573736167653a746869732e7472616e736c61746528226572726f725f646973616c6c6f775f756e696f6e22297d297d656c736520746869732e5f636865636b5479706528612e646973616c6c6f772c622926266b2e70757368287b706174683a652c70726f70657274793a22646973616c6c6f77222c6d6573736167653a746869732e7472616e736c61746528226572726f725f646973616c6c6f77222c5b612e646973616c6c6f775d297d293b2f2a0a20202020202a20547970652053706563696669632056616c69646174696f6e0a20202020202a2f0a2f2f204e756d6265722053706563696669632056616c69646174696f6e0a696628226e756d626572223d3d747970656f662062297b0a2f2f20606d756c7469706c654f666020616e642060646976697369626c654279600a696628612e6d756c7469706c654f667c7c612e646976697369626c654279297b766172206f3d612e6d756c7469706c654f667c7c612e646976697369626c6542793b0a2f2f2056616e696c6c61204a532c2070726f6e6520746f20666c6f6174696e6720706f696e7420726f756e64696e67206572726f72732028652e672e20312e3134202f202e3031203d3d203131332e3939393939290a673d622f6f3d3d3d4d6174682e666c6f6f7228622f6f292c0a2f2f20557365206d6174682e6a7320697320617661696c61626c650a77696e646f772e6d6174683f673d77696e646f772e6d6174682e6d6f642877696e646f772e6d6174682e6269676e756d6265722862292c77696e646f772e6d6174682e6269676e756d626572286f29292e657175616c732830293a77696e646f772e446563696d616c262628673d6e65772077696e646f772e446563696d616c2862292e6d6f64286e65772077696e646f772e446563696d616c286f29292e657175616c73283029292c677c7c6b2e70757368287b706174683a652c70726f70657274793a612e6d756c7469706c654f663f226d756c7469706c654f66223a22646976697369626c654279222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d756c7469706c654f66222c5b6f5d297d297d0a2f2f20606d6178696d756d600a612e6861734f776e50726f706572747928226d6178696d756d22292626280a2f2f2056616e696c6c61204a532c2070726f6e6520746f20666c6f6174696e6720706f696e7420726f756e64696e67206572726f72732028652e672e202e393939393939393939393939393939203d3d2031290a673d612e6578636c75736976654d6178696d756d3f623c612e6d6178696d756d3a623c3d612e6d6178696d756d2c0a2f2f20557365206d6174682e6a7320697320617661696c61626c650a77696e646f772e6d6174683f673d77696e646f772e6d6174685b612e6578636c75736976654d6178696d756d3f22736d616c6c6572223a22736d616c6c65724571225d2877696e646f772e6d6174682e6269676e756d6265722862292c77696e646f772e6d6174682e6269676e756d62657228612e6d6178696d756d29293a77696e646f772e446563696d616c262628673d6e65772077696e646f772e446563696d616c2862295b612e6578636c75736976654d6178696d756d3f226c74223a226c7465225d286e65772077696e646f772e446563696d616c28612e6d6178696d756d2929292c677c7c6b2e70757368287b706174683a652c70726f70657274793a226d6178696d756d222c6d6573736167653a746869732e7472616e736c61746528612e6578636c75736976654d6178696d756d3f226572726f725f6d6178696d756d5f6578636c223a226572726f725f6d6178696d756d5f696e636c222c5b612e6d6178696d756d5d297d29292c0a2f2f20606d696e696d756d600a612e6861734f776e50726f706572747928226d696e696d756d22292626280a2f2f2056616e696c6c61204a532c2070726f6e6520746f20666c6f6174696e6720706f696e7420726f756e64696e67206572726f72732028652e672e202e393939393939393939393939393939203d3d2031290a673d612e6578636c75736976654d696e696d756d3f623e612e6d696e696d756d3a623e3d612e6d696e696d756d2c0a2f2f20557365206d6174682e6a7320697320617661696c61626c650a77696e646f772e6d6174683f673d77696e646f772e6d6174685b612e6578636c75736976654d696e696d756d3f226c6172676572223a226c61726765724571225d2877696e646f772e6d6174682e6269676e756d6265722862292c77696e646f772e6d6174682e6269676e756d62657228612e6d696e696d756d29293a77696e646f772e446563696d616c262628673d6e65772077696e646f772e446563696d616c2862295b612e6578636c75736976654d696e696d756d3f226774223a22677465225d286e65772077696e646f772e446563696d616c28612e6d696e696d756d2929292c677c7c6b2e70757368287b706174683a652c70726f70657274793a226d696e696d756d222c6d6573736167653a746869732e7472616e736c61746528612e6578636c75736976654d696e696d756d3f226572726f725f6d696e696d756d5f6578636c223a226572726f725f6d696e696d756d5f696e636c222c5b612e6d696e696d756d5d297d29297d656c73652069662822737472696e67223d3d747970656f662062290a2f2f20606d61784c656e677468600a612e6d61784c656e677468262628622b2222292e6c656e6774683e612e6d61784c656e67746826266b2e70757368287b706174683a652c70726f70657274793a226d61784c656e677468222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d61784c656e677468222c5b612e6d61784c656e6774685d297d292c0a2f2f20606d696e4c656e677468600a612e6d696e4c656e677468262628622b2222292e6c656e6774683c612e6d696e4c656e67746826266b2e70757368287b706174683a652c70726f70657274793a226d696e4c656e677468222c6d6573736167653a746869732e7472616e736c61746528313d3d3d612e6d696e4c656e6774683f226572726f725f6e6f74656d707479223a226572726f725f6d696e4c656e677468222c5b612e6d696e4c656e6774685d297d292c0a2f2f20607061747465726e600a612e7061747465726e2626286e65772052656745787028612e7061747465726e292e746573742862297c7c6b2e70757368287b706174683a652c70726f70657274793a227061747465726e222c6d6573736167653a746869732e7472616e736c61746528226572726f725f7061747465726e222c5b612e7061747465726e5d297d29293b656c736520696628226f626a656374223d3d747970656f66206226266e756c6c213d3d62262641727261792e69734172726179286229297b0a2f2f20606974656d736020616e6420606164646974696f6e616c4974656d73600a696628612e6974656d73290a2f2f20606974656d736020697320616e2061727261790a69662841727261792e6973417272617928612e6974656d732929666f7228683d303b683c622e6c656e6774683b682b2b290a2f2f2049662074686973206974656d20686173206120737065636966696320736368656d61207469656420746f2069740a2f2f2056616c696461746520616761696e73742069740a696628612e6974656d735b685d296b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e6974656d735b685d2c625b685d2c652b222e222b6829293b656c73657b696628612e6164646974696f6e616c4974656d733d3d3d213029627265616b3b69662821612e6164646974696f6e616c4974656d73297b696628612e6164646974696f6e616c4974656d733d3d3d2131297b6b2e70757368287b706174683a652c70726f70657274793a226164646974696f6e616c4974656d73222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6164646974696f6e616c4974656d7322297d293b627265616b7d627265616b7d6b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e6164646974696f6e616c4974656d732c625b685d2c652b222e222b6829297d656c73650a2f2f2045616368206974656d20696e20746865206172726179206d7573742076616c696461746520616761696e73742074686520736368656d610a666f7228683d303b683c622e6c656e6774683b682b2b296b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e6974656d732c625b685d2c652b222e222b6829293b0a2f2f2060756e697175654974656d73600a6966280a2f2f20606d61784974656d73600a612e6d61784974656d732626622e6c656e6774683e612e6d61784974656d7326266b2e70757368287b706174683a652c70726f70657274793a226d61784974656d73222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d61784974656d73222c5b612e6d61784974656d735d297d292c0a2f2f20606d696e4974656d73600a612e6d696e4974656d732626622e6c656e6774683c612e6d696e4974656d7326266b2e70757368287b706174683a652c70726f70657274793a226d696e4974656d73222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d696e4974656d73222c5b612e6d696e4974656d735d297d292c612e756e697175654974656d73297b76617220703d7b7d3b666f7228683d303b683c622e6c656e6774683b682b2b297b696628673d4a534f4e2e737472696e6769667928625b685d292c705b675d297b6b2e70757368287b706174683a652c70726f70657274793a22756e697175654974656d73222c6d6573736167653a746869732e7472616e736c61746528226572726f725f756e697175654974656d7322297d293b627265616b7d705b675d3d21307d7d7d656c736520696628226f626a656374223d3d747970656f66206226266e756c6c213d3d62297b0a2f2f20606d617850726f70657274696573600a696628612e6d617850726f70657274696573297b673d303b666f72286820696e206229622e6861734f776e50726f70657274792868292626672b2b3b673e612e6d617850726f7065727469657326266b2e70757368287b706174683a652c70726f70657274793a226d617850726f70657274696573222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d617850726f70657274696573222c5b612e6d617850726f706572746965735d297d297d0a2f2f20606d696e50726f70657274696573600a696628612e6d696e50726f70657274696573297b673d303b666f72286820696e206229622e6861734f776e50726f70657274792868292626672b2b3b673c612e6d696e50726f7065727469657326266b2e70757368287b706174683a652c70726f70657274793a226d696e50726f70657274696573222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6d696e50726f70657274696573222c5b612e6d696e50726f706572746965735d297d297d0a2f2f2056657273696f6e203420607265717569726564600a696628612e7265717569726564262641727261792e6973417272617928612e72657175697265642929666f7228683d303b683c612e72657175697265642e6c656e6774683b682b2b2922756e646566696e6564223d3d747970656f6620625b612e72657175697265645b685d5d26266b2e70757368287b706174683a652c70726f70657274793a227265717569726564222c6d6573736167653a746869732e7472616e736c61746528226572726f725f7265717569726564222c5b612e72657175697265645b685d5d297d293b0a2f2f206070726f70657274696573600a76617220713d7b7d3b696628612e70726f7065727469657329666f72286820696e20612e70726f7065727469657329612e70726f706572746965732e6861734f776e50726f7065727479286829262628715b685d3d21302c6b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e70726f706572746965735b685d2c625b685d2c652b222e222b682929293b0a2f2f20607061747465726e50726f70657274696573600a696628612e7061747465726e50726f7065727469657329666f72286820696e20612e7061747465726e50726f7065727469657329696628612e7061747465726e50726f706572746965732e6861734f776e50726f7065727479286829297b76617220723d6e6577205265674578702868293b0a2f2f20436865636b2077686963682070726f70657274696573206d617463680a666f72286920696e206229622e6861734f776e50726f70657274792869292626722e74657374286929262628715b695d3d21302c6b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e7061747465726e50726f706572746965735b685d2c625b695d2c652b222e222b692929297d0a2f2f20606164646974696f6e616c50726f70657274696573600a6966280a2f2f20546865206e6f5f6164646974696f6e616c5f70726f70657274696573206f7074696f6e2063757272656e746c7920646f65736e277420776f726b207769746820657874656e64656420736368656d6173207468617420757365206f6e654f66206f7220616e794f660a22756e646566696e656422213d747970656f6620612e6164646974696f6e616c50726f706572746965737c7c21746869732e6a736f6e656469746f722e6f7074696f6e732e6e6f5f6164646974696f6e616c5f70726f706572746965737c7c612e6f6e654f667c7c612e616e794f667c7c28612e6164646974696f6e616c50726f706572746965733d2131292c22756e646566696e656422213d747970656f6620612e6164646974696f6e616c50726f7065727469657329666f72286820696e206229696628622e6861734f776e50726f7065727479286829262621715b685d297b0a2f2f204e6f2065787472612070726f7065727469657320616c6c6f7765640a69662821612e6164646974696f6e616c50726f70657274696573297b6b2e70757368287b706174683a652c70726f70657274793a226164646974696f6e616c50726f70657274696573222c6d6573736167653a746869732e7472616e736c61746528226572726f725f6164646974696f6e616c5f70726f70657274696573222c5b685d297d293b627265616b7d696628612e6164646974696f6e616c50726f706572746965733d3d3d213029627265616b3b6b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e6164646974696f6e616c50726f706572746965732c625b685d2c652b222e222b6829297d0a2f2f2060646570656e64656e63696573600a696628612e646570656e64656e6369657329666f72286820696e20612e646570656e64656e6369657329696628612e646570656e64656e636965732e6861734f776e50726f7065727479286829262622756e646566696e656422213d747970656f6620625b685d290a2f2f2050726f706572747920646570656e64656e63790a69662841727261792e6973417272617928612e646570656e64656e636965735b685d2929666f7228693d303b693c612e646570656e64656e636965735b685d2e6c656e6774683b692b2b2922756e646566696e6564223d3d747970656f6620625b612e646570656e64656e636965735b685d5b695d5d26266b2e70757368287b706174683a652c70726f70657274793a22646570656e64656e63696573222c6d6573736167653a746869732e7472616e736c61746528226572726f725f646570656e64656e6379222c5b612e646570656e64656e636965735b685d5b695d5d297d293b656c7365206b3d6b2e636f6e63617428746869732e5f76616c6964617465536368656d6128612e646570656e64656e636965735b685d2c622c6529297d0a2f2f20437573746f6d20747970652076616c69646174696f6e2028676c6f62616c290a2f2f20437573746f6d20747970652076616c69646174696f6e2028696e7374616e6365207370656369666963290a72657475726e206428662e64656661756c74732e637573746f6d5f76616c696461746f72732c66756e6374696f6e28632c64297b6b3d6b2e636f6e63617428642e63616c6c286a2c612c622c6529297d292c746869732e6f7074696f6e732e637573746f6d5f76616c696461746f727326266428746869732e6f7074696f6e732e637573746f6d5f76616c696461746f72732c66756e6374696f6e28632c64297b6b3d6b2e636f6e63617428642e63616c6c286a2c612c622c6529297d292c6b7d2c5f636865636b547970653a66756e6374696f6e28612c62297b0a2f2f2053696d706c652074797065730a2f2f2053696d706c652074797065730a72657475726e22737472696e67223d3d747970656f6620613f22737472696e67223d3d3d613f22737472696e67223d3d747970656f6620623a226e756d626572223d3d3d613f226e756d626572223d3d747970656f6620623a22696e7465676572223d3d3d613f226e756d626572223d3d747970656f6620622626623d3d3d4d6174682e666c6f6f722862293a22626f6f6c65616e223d3d3d613f22626f6f6c65616e223d3d747970656f6620623a226172726179223d3d3d613f41727261792e697341727261792862293a226f626a656374223d3d3d613f6e756c6c213d3d6226262141727261792e697341727261792862292626226f626a656374223d3d747970656f6620623a226e756c6c22213d3d617c7c6e756c6c3d3d3d623a21746869732e5f76616c6964617465536368656d6128612c62292e6c656e6774687d7d292c2f2a2a0a202a20416c6c20656469746f72732073686f756c6420657874656e642066726f6d207468697320636c6173730a202a2f0a662e4162737472616374456469746f723d612e657874656e64287b6f6e4368696c64456469746f724368616e67653a66756e6374696f6e2861297b746869732e6f6e4368616e6765282130297d2c6e6f746966793a66756e6374696f6e28297b746869732e6a736f6e656469746f722e6e6f74696679576174636865727328746869732e70617468297d2c6368616e67653a66756e6374696f6e28297b746869732e706172656e743f746869732e706172656e742e6f6e4368696c64456469746f724368616e67652874686973293a746869732e6a736f6e656469746f722e6f6e4368616e676528297d2c6f6e4368616e67653a66756e6374696f6e2861297b746869732e6e6f7469667928292c746869732e77617463685f6c697374656e65722626746869732e77617463685f6c697374656e657228292c612626746869732e6368616e676528297d2c72656769737465723a66756e6374696f6e28297b746869732e6a736f6e656469746f722e7265676973746572456469746f722874686973292c746869732e6f6e4368616e676528297d2c756e72656769737465723a66756e6374696f6e28297b746869732e6a736f6e656469746f722626746869732e6a736f6e656469746f722e756e7265676973746572456469746f722874686973297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e2031327d2c696e69743a66756e6374696f6e2861297b746869732e6a736f6e656469746f723d612e6a736f6e656469746f722c746869732e7468656d653d746869732e6a736f6e656469746f722e7468656d652c746869732e74656d706c6174655f656e67696e653d746869732e6a736f6e656469746f722e74656d706c6174652c746869732e69636f6e6c69623d746869732e6a736f6e656469746f722e69636f6e6c69622c746869732e7472616e736c6174653d746869732e6a736f6e656469746f722e7472616e736c6174657c7c662e64656661756c74732e7472616e736c6174652c746869732e6f726967696e616c5f736368656d613d612e736368656d612c746869732e736368656d613d746869732e6a736f6e656469746f722e657870616e64536368656d6128746869732e6f726967696e616c5f736368656d61292c746869732e6f7074696f6e733d63287b7d2c746869732e6f7074696f6e737c7c7b7d2c612e736368656d612e6f7074696f6e737c7c7b7d2c61292c612e706174687c7c746869732e736368656d612e69647c7c28746869732e736368656d612e69643d22726f6f7422292c746869732e706174683d612e706174687c7c22726f6f74222c746869732e666f726d6e616d653d612e666f726d6e616d657c7c746869732e706174682e7265706c616365282f5c2e285b5e2e5d2b292f672c225b24315d22292c746869732e6a736f6e656469746f722e6f7074696f6e732e666f726d5f6e616d655f726f6f74262628746869732e666f726d6e616d653d746869732e666f726d6e616d652e7265706c616365282f5e726f6f745c5b2f2c746869732e6a736f6e656469746f722e6f7074696f6e732e666f726d5f6e616d655f726f6f742b225b2229292c746869732e6b65793d746869732e706174682e73706c697428222e22292e706f7028292c746869732e706172656e743d612e706172656e742c746869732e6c696e6b5f77617463686572733d5b5d2c612e636f6e7461696e65722626746869732e736574436f6e7461696e657228612e636f6e7461696e6572297d2c736574436f6e7461696e65723a66756e6374696f6e2861297b746869732e636f6e7461696e65723d612c746869732e736368656d612e69642626746869732e636f6e7461696e65722e7365744174747269627574652822646174612d736368656d616964222c746869732e736368656d612e6964292c746869732e736368656d612e74797065262622737472696e67223d3d747970656f6620746869732e736368656d612e747970652626746869732e636f6e7461696e65722e7365744174747269627574652822646174612d736368656d6174797065222c746869732e736368656d612e74797065292c746869732e636f6e7461696e65722e7365744174747269627574652822646174612d736368656d6170617468222c746869732e70617468297d2c7072654275696c643a66756e6374696f6e28297b7d2c6275696c643a66756e6374696f6e28297b7d2c706f73744275696c643a66756e6374696f6e28297b746869732e736574757057617463684c697374656e65727328292c746869732e6164644c696e6b7328292c746869732e73657456616c756528746869732e67657444656661756c7428292c2130292c746869732e7570646174654865616465725465787428292c746869732e726567697374657228292c746869732e6f6e576174636865644669656c644368616e676528297d2c736574757057617463684c697374656e6572733a66756e6374696f6e28297b76617220613d746869733b6966280a2f2f2057617463686564206669656c64730a746869732e776174636865643d7b7d2c746869732e736368656d612e76617273262628746869732e736368656d612e77617463683d746869732e736368656d612e76617273292c746869732e776174636865645f76616c7565733d7b7d2c746869732e77617463685f6c697374656e65723d66756e6374696f6e28297b612e72656672657368576174636865644669656c6456616c75657328292626612e6f6e576174636865644669656c644368616e676528297d2c746869732e726567697374657228292c746869732e736368656d612e6861734f776e50726f7065727479282277617463682229297b76617220622c632c642c652c663b666f7228766172206720696e20746869732e736368656d612e776174636829696628746869732e736368656d612e77617463682e6861734f776e50726f7065727479286729297b696628623d746869732e736368656d612e77617463685b675d2c41727261792e69734172726179286229297b696628622e6c656e6774683c3229636f6e74696e75653b633d5b625b305d5d2e636f6e63617428625b315d2e73706c697428222e2229297d656c736520633d622e73706c697428222e22292c612e7468656d652e636c6f7365737428612e636f6e7461696e65722c275b646174612d736368656d6169643d22272b635b305d2b27225d27297c7c632e756e736869667428222322293b696628643d632e736869667428292c2223223d3d3d64262628643d612e6a736f6e656469746f722e736368656d612e69647c7c22726f6f7422292c0a2f2f2046696e642074686520726f6f74206e6f646520666f7220746869732074656d706c617465207661726961626c650a653d612e7468656d652e636c6f7365737428612e636f6e7461696e65722c275b646174612d736368656d6169643d22272b642b27225d27292c2165297468726f7722436f756c64206e6f742066696e6420616e636573746f72206e6f6465207769746820696420222b643b0a2f2f204b65657020747261636b206f662074686520726f6f74206e6f646520616e64207061746820666f7220757365207768656e2072656e646572696e67207468652074656d706c6174650a663d652e6765744174747269627574652822646174612d736368656d617061746822292b222e222b632e6a6f696e28222e22292c612e6a736f6e656469746f722e776174636828662c612e77617463685f6c697374656e6572292c612e776174636865645b675d3d667d7d0a2f2f2044796e616d6963206865616465720a746869732e736368656d612e68656164657254656d706c617465262628746869732e6865616465725f74656d706c6174653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e736368656d612e68656164657254656d706c6174652c746869732e74656d706c6174655f656e67696e6529297d2c6164644c696e6b733a66756e6374696f6e28297b0a2f2f20416464206c696e6b730a69662821746869732e6e6f5f6c696e6b5f686f6c646572262628746869732e6c696e6b5f686f6c6465723d746869732e7468656d652e6765744c696e6b73486f6c64657228292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6c696e6b5f686f6c646572292c746869732e736368656d612e6c696e6b732929666f722876617220613d303b613c746869732e736368656d612e6c696e6b732e6c656e6774683b612b2b29746869732e6164644c696e6b28746869732e6765744c696e6b28746869732e736368656d612e6c696e6b735b615d29297d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d226a736f6e2d656469746f722d62746e2d222b623b623d746869732e69636f6e6c69623f746869732e69636f6e6c69622e67657449636f6e2862293a6e756c6c2c2162262663262628613d632c633d6e756c6c293b76617220653d746869732e7468656d652e676574427574746f6e28612c622c63293b72657475726e20652e636c6173734e616d652b3d2220222b642b2220222c657d2c736574427574746f6e546578743a66756e6374696f6e28612c622c632c64297b72657475726e20633d746869732e69636f6e6c69623f746869732e69636f6e6c69622e67657449636f6e2863293a6e756c6c2c2163262664262628623d642c643d6e756c6c292c746869732e7468656d652e736574427574746f6e5465787428612c622c632c64297d2c6164644c696e6b3a66756e6374696f6e2861297b746869732e6c696e6b5f686f6c6465722626746869732e6c696e6b5f686f6c6465722e617070656e644368696c642861297d2c6765744c696e6b3a66756e6374696f6e2861297b76617220622c632c643d612e6d65646961547970657c7c226170706c69636174696f6e2f6a617661736372697074222c653d642e73706c697428222f22295b305d2c663d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528612e687265662c746869732e74656d706c6174655f656e67696e65292c673d6e756c6c3b0a2f2f20496d616765206c696e6b730a696628612e646f776e6c6f6164262628673d612e646f776e6c6f6164292c67262667213d3d2130262628673d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528672c746869732e74656d706c6174655f656e67696e6529292c22696d616765223d3d3d65297b623d746869732e7468656d652e676574426c6f636b4c696e6b486f6c64657228292c633d646f63756d656e742e637265617465456c656d656e7428226122292c632e7365744174747269627574652822746172676574222c225f626c616e6b22293b76617220683d646f63756d656e742e637265617465456c656d656e742822696d6722293b746869732e7468656d652e637265617465496d6167654c696e6b28622c632c68292c0a2f2f205768656e20612077617463686564206669656c64206368616e6765732c20757064617465207468652075726c20200a746869732e6c696e6b5f77617463686572732e707573682866756e6374696f6e2862297b76617220643d662862293b632e736574417474726962757465282268726566222c64292c632e73657441747472696275746528227469746c65222c612e72656c7c7c64292c682e7365744174747269627574652822737263222c64297d297d656c7365206966285b22617564696f222c22766964656f225d2e696e6465784f662865293e3d30297b623d746869732e7468656d652e676574426c6f636b4c696e6b486f6c64657228292c633d746869732e7468656d652e676574426c6f636b4c696e6b28292c632e7365744174747269627574652822746172676574222c225f626c616e6b22293b76617220693d646f63756d656e742e637265617465456c656d656e742865293b692e7365744174747269627574652822636f6e74726f6c73222c22636f6e74726f6c7322292c746869732e7468656d652e6372656174654d656469614c696e6b28622c632c69292c0a2f2f205768656e20612077617463686564206669656c64206368616e6765732c20757064617465207468652075726c20200a746869732e6c696e6b5f77617463686572732e707573682866756e6374696f6e2862297b76617220643d662862293b632e736574417474726962757465282268726566222c64292c632e74657874436f6e74656e743d612e72656c7c7c642c692e7365744174747269627574652822737263222c64297d297d656c736520633d623d746869732e7468656d652e676574426c6f636b4c696e6b28292c622e7365744174747269627574652822746172676574222c225f626c616e6b22292c622e74657874436f6e74656e743d612e72656c2c0a2f2f205768656e20612077617463686564206669656c64206368616e6765732c20757064617465207468652075726c0a746869732e6c696e6b5f77617463686572732e707573682866756e6374696f6e2863297b76617220643d662863293b622e736574417474726962757465282268726566222c64292c622e74657874436f6e74656e743d612e72656c7c7c647d293b72657475726e2067262663262628673d3d3d21303f632e7365744174747269627574652822646f776e6c6f6164222c2222293a746869732e6c696e6b5f77617463686572732e707573682866756e6374696f6e2861297b632e7365744174747269627574652822646f776e6c6f6164222c67286129297d29292c615b22636c617373225d262628632e636c6173734e616d653d632e636c6173734e616d652b2220222b615b22636c617373225d292c627d2c72656672657368576174636865644669656c6456616c7565733a66756e6374696f6e28297b696628746869732e776174636865645f76616c756573297b76617220613d7b7d2c623d21312c633d746869733b696628746869732e77617463686564297b76617220642c653b666f7228766172206620696e20746869732e7761746368656429746869732e776174636865642e6861734f776e50726f7065727479286629262628653d632e6a736f6e656469746f722e676574456469746f7228746869732e776174636865645b665d292c643d653f652e67657456616c756528293a6e756c6c2c632e776174636865645f76616c7565735b665d213d3d64262628623d2130292c615b665d3d64297d72657475726e20612e73656c663d746869732e67657456616c756528292c746869732e776174636865645f76616c7565732e73656c66213d3d612e73656c66262628623d2130292c746869732e776174636865645f76616c7565733d612c627d7d2c676574576174636865644669656c6456616c7565733a66756e6374696f6e28297b72657475726e20746869732e776174636865645f76616c7565737d2c757064617465486561646572546578743a66756e6374696f6e28297b696628746869732e686561646572290a2f2f204966207468652068656164657220686173206368696c6472656e2c206f6e6c7920757064617465207468652074657874206e6f646527732076616c75650a696628746869732e6865616465722e6368696c6472656e2e6c656e677468297b666f722876617220613d303b613c746869732e6865616465722e6368696c644e6f6465732e6c656e6774683b612b2b29696628333d3d3d746869732e6865616465722e6368696c644e6f6465735b615d2e6e6f646554797065297b746869732e6865616465722e6368696c644e6f6465735b615d2e6e6f646556616c75653d746869732e6765744865616465725465787428293b627265616b7d7d656c736520746869732e6865616465722e74657874436f6e74656e743d746869732e6765744865616465725465787428297d2c676574486561646572546578743a66756e6374696f6e2861297b72657475726e20746869732e6865616465725f746578743f746869732e6865616465725f746578743a613f746869732e736368656d612e7469746c653a746869732e6765745469746c6528297d2c6f6e576174636865644669656c644368616e67653a66756e6374696f6e28297b76617220613b696628746869732e6865616465725f74656d706c617465297b613d6328746869732e676574576174636865644669656c6456616c75657328292c7b6b65793a746869732e6b65792c693a746869732e6b65792c69303a312a746869732e6b65792c69313a312a746869732e6b65792b312c7469746c653a746869732e6765745469746c6528297d293b76617220623d746869732e6865616465725f74656d706c6174652861293b62213d3d746869732e6865616465725f74657874262628746869732e6865616465725f746578743d622c746869732e7570646174654865616465725465787428292c746869732e6e6f746966792829297d696628746869732e6c696e6b5f77617463686572732e6c656e677468297b613d746869732e676574576174636865644669656c6456616c75657328293b666f722876617220643d303b643c746869732e6c696e6b5f77617463686572732e6c656e6774683b642b2b29746869732e6c696e6b5f77617463686572735b645d2861297d7d2c73657456616c75653a66756e6374696f6e2861297b746869732e76616c75653d617d2c67657456616c75653a66756e6374696f6e28297b72657475726e20746869732e76616c75657d2c7265667265736856616c75653a66756e6374696f6e28297b7d2c6765744368696c64456469746f72733a66756e6374696f6e28297b72657475726e21317d2c64657374726f793a66756e6374696f6e28297b76617220613d746869733b746869732e756e72656769737465722874686973292c6428746869732e776174636865642c66756e6374696f6e28622c63297b612e6a736f6e656469746f722e756e776174636828632c612e77617463685f6c697374656e6572297d292c746869732e776174636865643d6e756c6c2c746869732e776174636865645f76616c7565733d6e756c6c2c746869732e77617463685f6c697374656e65723d6e756c6c2c746869732e6865616465725f746578743d6e756c6c2c746869732e6865616465725f74656d706c6174653d6e756c6c2c746869732e76616c75653d6e756c6c2c746869732e636f6e7461696e65722626746869732e636f6e7461696e65722e706172656e744e6f64652626746869732e636f6e7461696e65722e706172656e744e6f64652e72656d6f76654368696c6428746869732e636f6e7461696e6572292c746869732e636f6e7461696e65723d6e756c6c2c746869732e6a736f6e656469746f723d6e756c6c2c746869732e736368656d613d6e756c6c2c746869732e706174683d6e756c6c2c746869732e6b65793d6e756c6c2c746869732e706172656e743d6e756c6c7d2c67657444656661756c743a66756e6374696f6e28297b696628746869732e736368656d615b2264656661756c74225d2972657475726e20746869732e736368656d615b2264656661756c74225d3b696628746869732e736368656d615b22656e756d225d2972657475726e20746869732e736368656d615b22656e756d225d5b305d3b76617220613d746869732e736368656d612e747970657c7c746869732e736368656d612e6f6e654f663b69662861262641727261792e69734172726179286129262628613d615b305d292c612626226f626a656374223d3d747970656f662061262628613d612e74797065292c61262641727261792e69734172726179286129262628613d615b305d292c22737472696e67223d3d747970656f662061297b696628226e756d626572223d3d3d612972657475726e20303b69662822626f6f6c65616e223d3d3d612972657475726e21313b69662822696e7465676572223d3d3d612972657475726e20303b69662822737472696e67223d3d3d612972657475726e22223b696628226f626a656374223d3d3d612972657475726e7b7d3b696628226172726179223d3d3d612972657475726e5b5d7d72657475726e206e756c6c7d2c6765745469746c653a66756e6374696f6e28297b72657475726e20746869732e736368656d612e7469746c657c7c746869732e6b65797d2c656e61626c653a66756e6374696f6e28297b746869732e64697361626c65643d21317d2c64697361626c653a66756e6374696f6e28297b746869732e64697361626c65643d21307d2c6973456e61626c65643a66756e6374696f6e28297b72657475726e21746869732e64697361626c65647d2c697352657175697265643a66756e6374696f6e28297b72657475726e22626f6f6c65616e223d3d747970656f6620746869732e736368656d612e72657175697265643f746869732e736368656d612e72657175697265643a746869732e706172656e742626746869732e706172656e742e736368656d61262641727261792e6973417272617928746869732e706172656e742e736368656d612e7265717569726564293f746869732e706172656e742e736368656d612e72657175697265642e696e6465784f6628746869732e6b6579293e2d313a2121746869732e6a736f6e656469746f722e6f7074696f6e732e72657175697265645f62795f64656661756c747d2c676574446973706c6179546578743a66756e6374696f6e2861297b76617220623d5b5d2c633d7b7d3b0a2f2f2044657465726d696e6520686f77206d616e792074696d6573206561636820617474726962757465206e616d6520697320757365642e0a2f2f20546869732068656c7073207573207069636b20746865206d6f73742064697374696e637420646973706c6179207465787420666f722074686520736368656d61732e0a6428612c66756e6374696f6e28612c62297b622e7469746c65262628635b622e7469746c655d3d635b622e7469746c655d7c7c302c635b622e7469746c655d2b2b292c622e6465736372697074696f6e262628635b622e6465736372697074696f6e5d3d635b622e6465736372697074696f6e5d7c7c302c635b622e6465736372697074696f6e5d2b2b292c622e666f726d6174262628635b622e666f726d61745d3d635b622e666f726d61745d7c7c302c635b622e666f726d61745d2b2b292c622e74797065262628635b622e747970655d3d635b622e747970655d7c7c302c635b622e747970655d2b2b297d292c0a2f2f2044657465726d696e6520646973706c6179207465787420666f72206561636820656c656d656e74206f66207468652061727261790a6428612c66756e6374696f6e28612c64297b76617220653b0a2f2f204966206974277320612073696d706c6520737472696e670a653d22737472696e67223d3d747970656f6620643f643a642e7469746c652626635b642e7469746c655d3c3d313f642e7469746c653a642e666f726d61742626635b642e666f726d61745d3c3d313f642e666f726d61743a642e747970652626635b642e747970655d3c3d313f642e747970653a642e6465736372697074696f6e2626635b642e6465736372697074696f6e5d3c3d313f642e64657363726970746f6e3a642e7469746c653f642e7469746c653a642e666f726d61743f642e666f726d61743a642e747970653f642e747970653a642e6465736372697074696f6e3f642e6465736372697074696f6e3a4a534f4e2e737472696e676966792864292e6c656e6774683c35303f4a534f4e2e737472696e676966792864293a2274797065222c622e707573682865297d293b0a2f2f205265706c616365206964656e746963616c20646973706c6179207465787420776974682022746578742031222c2022746578742032222c206574632e0a76617220653d7b7d3b72657475726e206428622c66756e6374696f6e28612c64297b655b645d3d655b645d7c7c302c655b645d2b2b2c635b645d3e31262628625b615d3d642b2220222b655b645d297d292c627d2c6765744f7074696f6e3a66756e6374696f6e2861297b7472797b7468726f77226765744f7074696f6e2069732064657072656361746564227d63617463682862297b77696e646f772e636f6e736f6c652e6572726f722862297d72657475726e20746869732e6f7074696f6e735b615d7d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b7d7d292c662e64656661756c74732e656469746f72735b226e756c6c225d3d662e4162737472616374456469746f722e657874656e64287b67657456616c75653a66756e6374696f6e28297b72657475726e206e756c6c7d2c73657456616c75653a66756e6374696f6e28297b746869732e6f6e4368616e676528297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20327d7d292c662e64656661756c74732e656469746f72732e737472696e673d662e4162737472616374456469746f722e657874656e64287b72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e73657441747472696275746528226e616d65222c746869732e666f726d6e616d65297d2c756e72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e72656d6f766541747472696275746528226e616d6522297d2c73657456616c75653a66756e6374696f6e28612c622c63297b6966282821746869732e74656d706c6174657c7c63292626286e756c6c3d3d3d617c7c22756e646566696e6564223d3d747970656f6620613f613d22223a226f626a656374223d3d747970656f6620613f613d4a534f4e2e737472696e676966792861293a22737472696e6722213d747970656f662061262628613d22222b61292c61213d3d746869732e73657269616c697a656429297b0a2f2f2053616e6974697a652076616c7565206265666f72652073657474696e672069740a76617220643d746869732e73616e6974697a652861293b696628746869732e696e7075742e76616c7565213d3d64297b746869732e696e7075742e76616c75653d642c0a2f2f204966207573696e67205343456469746f722c207570646174652074686520575953495759470a746869732e7363656469746f725f696e7374616e63653f746869732e7363656469746f725f696e7374616e63652e76616c2864293a746869732e65706963656469746f723f746869732e65706963656469746f722e696d706f727446696c65286e756c6c2c64293a746869732e6163655f656469746f722626746869732e6163655f656469746f722e73657456616c75652864293b76617220653d637c7c746869732e67657456616c75652829213d3d613b746869732e7265667265736856616c756528292c623f746869732e69735f64697274793d21313a226368616e6765223d3d3d746869732e6a736f6e656469746f722e6f7074696f6e732e73686f775f6572726f7273262628746869732e69735f64697274793d2130292c746869732e61646a7573745f6865696768742626746869732e61646a7573745f68656967687428746869732e696e707574292c0a2f2f20427562626c6520746869732073657456616c756520746f20706172656e7473206966207468652076616c7565206368616e6765640a746869732e6f6e4368616e67652865297d7d7d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b76617220612c623d4d6174682e6365696c284d6174682e6d617828746869732e6765745469746c6528292e6c656e6774682c746869732e736368656d612e6d61784c656e6774687c7c302c746869732e736368656d612e6d696e4c656e6774687c7c30292f35293b72657475726e20613d227465787461726561223d3d3d746869732e696e7075745f747970653f363a5b2274657874222c22656d61696c225d2e696e6465784f6628746869732e696e7075745f74797065293e3d303f343a322c4d6174682e6d696e2831322c4d6174682e6d617828622c6129297d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b0a2f2f20537065636966696320666f726d61740a696628746869732e6f7074696f6e732e636f6d706163747c7c28746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c65282929292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c746869732e666f726d61743d746869732e736368656d612e666f726d61742c21746869732e666f726d61742626746869732e736368656d612e6d656469612626746869732e736368656d612e6d656469612e74797065262628746869732e666f726d61743d746869732e736368656d612e6d656469612e747970652e7265706c616365282f285e286170706c69636174696f6e7c74657874295c2f28782d293f287363726970745c2e293f297c282d736f7572636524292f672c222229292c21746869732e666f726d61742626746869732e6f7074696f6e732e64656661756c745f666f726d6174262628746869732e666f726d61743d746869732e6f7074696f6e732e64656661756c745f666f726d6174292c746869732e6f7074696f6e732e666f726d6174262628746869732e666f726d61743d746869732e6f7074696f6e732e666f726d6174292c746869732e666f726d6174290a2f2f205465787420417265610a696628227465787461726561223d3d3d746869732e666f726d617429746869732e696e7075745f747970653d227465787461726561222c746869732e696e7075743d746869732e7468656d652e6765745465787461726561496e70757428293b656c7365206966282272616e6765223d3d3d746869732e666f726d6174297b746869732e696e7075745f747970653d2272616e6765223b76617220623d746869732e736368656d612e6d696e696d756d7c7c302c633d746869732e736368656d612e6d6178696d756d7c7c4d6174682e6d6178283130302c622b31292c643d313b746869732e736368656d612e6d756c7469706c654f662626286225746869732e736368656d612e6d756c7469706c654f66262628623d4d6174682e6365696c28622f746869732e736368656d612e6d756c7469706c654f66292a746869732e736368656d612e6d756c7469706c654f66292c6325746869732e736368656d612e6d756c7469706c654f66262628633d4d6174682e666c6f6f7228632f746869732e736368656d612e6d756c7469706c654f66292a746869732e736368656d612e6d756c7469706c654f66292c643d746869732e736368656d612e6d756c7469706c654f66292c746869732e696e7075743d746869732e7468656d652e67657452616e6765496e70757428622c632c64297d656c73655b22616374696f6e736372697074222c22626174636866696c65222c226262636f6465222c2263222c22632b2b222c22637070222c22636f66666565222c22637368617270222c22637373222c2264617274222c22646a616e676f222c22656a73222c2265726c616e67222c22676f6c616e67222c2267726f6f7679222c2268616e646c6562617273222c226861736b656c6c222c2268617865222c2268746d6c222c22696e69222c226a616465222c226a617661222c226a617661736372697074222c226a736f6e222c226c657373222c226c697370222c226c7561222c226d616b6566696c65222c226d61726b646f776e222c226d61746c6162222c226d7973716c222c226f626a65637469766563222c2270617363616c222c227065726c222c22706773716c222c22706870222c22707974686f6e222c2272222c2272756279222c2273617373222c227363616c61222c2273637373222c22736d61727479222c2273716c222c227374796c7573222c22737667222c2274776967222c227662736372697074222c22786d6c222c2279616d6c225d2e696e6465784f6628746869732e666f726d6174293e3d303f28746869732e696e7075745f747970653d746869732e666f726d61742c746869732e736f757263655f636f64653d21302c746869732e696e7075743d746869732e7468656d652e6765745465787461726561496e7075742829293a28746869732e696e7075745f747970653d746869732e666f726d61742c746869732e696e7075743d746869732e7468656d652e676574466f726d496e7075744669656c6428746869732e696e7075745f7479706529293b656c736520746869732e696e7075745f747970653d2274657874222c746869732e696e7075743d746869732e7468656d652e676574466f726d496e7075744669656c6428746869732e696e7075745f74797065293b0a2f2f206d696e4c656e6774682c206d61784c656e6774682c20616e64207061747465726e0a22756e646566696e656422213d747970656f6620746869732e736368656d612e6d61784c656e6774682626746869732e696e7075742e73657441747472696275746528226d61786c656e677468222c746869732e736368656d612e6d61784c656e677468292c22756e646566696e656422213d747970656f6620746869732e736368656d612e7061747465726e3f746869732e696e7075742e73657441747472696275746528227061747465726e222c746869732e736368656d612e7061747465726e293a22756e646566696e656422213d747970656f6620746869732e736368656d612e6d696e4c656e6774682626746869732e696e7075742e73657441747472696275746528227061747465726e222c222e7b222b746869732e736368656d612e6d696e4c656e6774682b222c7d22292c746869732e6f7074696f6e732e636f6d706163743f746869732e636f6e7461696e65722e636c6173734e616d652b3d2220636f6d70616374223a746869732e6f7074696f6e732e696e7075745f7769647468262628746869732e696e7075742e7374796c652e77696474683d746869732e6f7074696f6e732e696e7075745f7769647468292c28746869732e736368656d612e726561644f6e6c797c7c746869732e736368656d612e726561646f6e6c797c7c746869732e736368656d612e74656d706c61746529262628746869732e616c776179735f64697361626c65643d21302c746869732e696e7075742e64697361626c65643d2130292c746869732e696e7075742e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b0a2f2f20446f6e277420616c6c6f77206368616e67696e672069662074686973206669656c6420697320612074656d706c6174650a696628622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e736368656d612e74656d706c6174652972657475726e20766f696428746869732e76616c75653d612e76616c7565293b76617220633d746869732e76616c75652c643d612e73616e6974697a652863293b63213d3d64262628746869732e76616c75653d64292c612e69735f64697274793d21302c612e7265667265736856616c756528292c612e6f6e4368616e6765282130297d292c746869732e6f7074696f6e732e696e7075745f686569676874262628746869732e696e7075742e7374796c652e6865696768743d746869732e6f7074696f6e732e696e7075745f686569676874292c746869732e6f7074696f6e732e657870616e645f686569676874262628746869732e61646a7573745f6865696768743d66756e6374696f6e2861297b69662861297b76617220622c633d612e6f66667365744865696768743b0a2f2f20496e70757420746f6f2073686f72740a696628612e6f66667365744865696768743c612e7363726f6c6c48656967687429666f7228623d303b612e6f66667365744865696768743c612e7363726f6c6c4865696768742b3326262128623e313030293b29622b2b2c632b2b2c612e7374796c652e6865696768743d632b227078223b656c73657b666f7228623d303b612e6f66667365744865696768743e3d612e7363726f6c6c4865696768742b3326262128623e313030293b29622b2b2c632d2d2c612e7374796c652e6865696768743d632b227078223b612e7374796c652e6865696768743d632b312b227078227d7d7d2c746869732e696e7075742e6164644576656e744c697374656e657228226b65797570222c66756e6374696f6e2862297b612e61646a7573745f6865696768742874686973297d292c746869732e696e7075742e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b612e61646a7573745f6865696768742874686973297d292c746869732e61646a7573745f6865696768742829292c746869732e666f726d61742626746869732e696e7075742e7365744174747269627574652822646174612d736368656d61666f726d6174222c746869732e666f726d6174292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e696e7075742c746869732e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c292c0a2f2f20416e79207370656369616c20666f726d617474696e672074686174206e6565647320746f2068617070656e2061667465722074686520696e70757420697320616464656420746f2074686520646f6d0a77696e646f772e72657175657374416e696d6174696f6e4672616d652866756e6374696f6e28297b0a2f2f20536b697020696e20636173652074686520696e707574206973206f6e6c7920612074656d706f7261727920656469746f722c0a2f2f206f74686572776973652c20696e207468652063617365206f6620616e206163655f656469746f72206372656174696f6e2c0a2f2f2069742077696c6c2067656e657261746520616e206572726f7220747279696e6720746f20617070656e6420697420746f20746865206d697373696e6720706172656e744e6f64650a612e696e7075742e706172656e744e6f64652626612e6166746572496e707574526561647928292c612e61646a7573745f6865696768742626612e61646a7573745f68656967687428612e696e707574297d292c0a2f2f20436f6d70696c6520616e642073746f7265207468652074656d706c6174650a746869732e736368656d612e74656d706c6174653f28746869732e74656d706c6174653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e736368656d612e74656d706c6174652c746869732e74656d706c6174655f656e67696e65292c746869732e7265667265736856616c75652829293a746869732e7265667265736856616c756528297d2c656e61626c653a66756e6374696f6e28297b746869732e616c776179735f64697361626c65647c7c28746869732e696e7075742e64697361626c65643d2131292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e696e7075742e64697361626c65643d21302c0a2f2f20544f444f3a205759534957594720616e64204d61726b646f776e20656469746f72730a746869732e5f737570657228297d2c6166746572496e70757452656164793a66756e6374696f6e28297b76617220612c623d746869733b0a2f2f20436f646520656469746f720a696628746869732e736f757263655f636f6465290a2f2f20575953495759472068746d6c20616e64206262636f646520656469746f720a696628746869732e6f7074696f6e732e7779736977796726265b2268746d6c222c226262636f6465225d2e696e6465784f6628746869732e696e7075745f74797065293e3d30262677696e646f772e6a5175657279262677696e646f772e6a51756572792e666e262677696e646f772e6a51756572792e666e2e7363656469746f7229613d63287b7d2c7b706c7567696e733a2268746d6c223d3d3d622e696e7075745f747970653f227868746d6c223a226262636f6465222c656d6f7469636f6e73456e61626c65643a21312c77696474683a2231303025222c6865696768743a3330307d2c662e706c7567696e732e7363656469746f722c622e6f7074696f6e732e7363656469746f725f6f7074696f6e737c7c7b7d292c77696e646f772e6a517565727928622e696e707574292e7363656469746f722861292c622e7363656469746f725f696e7374616e63653d77696e646f772e6a517565727928622e696e707574292e7363656469746f722822696e7374616e636522292c622e7363656469746f725f696e7374616e63652e626c75722866756e6374696f6e28297b0a2f2f2047657420656469746f7227732076616c75650a76617220613d77696e646f772e6a517565727928223c6469763e222b622e7363656469746f725f696e7374616e63652e76616c28292b223c2f6469763e22293b0a2f2f2052656d6f7665207363656469746f72207370616e732f646976730a77696e646f772e6a51756572792822237363656469746f722d73746172742d6d61726b65722c237363656469746f722d656e642d6d61726b65722c2e7363656469746f722d6e6c66222c61292e72656d6f766528292c0a2f2f20536574207468652076616c756520616e64207570646174650a622e696e7075742e76616c75653d612e68746d6c28292c622e76616c75653d622e696e7075742e76616c75652c622e69735f64697274793d21302c622e6f6e4368616e6765282130297d293b656c736520696628226d61726b646f776e223d3d3d746869732e696e7075745f74797065262677696e646f772e45706963456469746f7229746869732e65706963656469746f725f636f6e7461696e65723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e696e7075742e706172656e744e6f64652e696e736572744265666f726528746869732e65706963656469746f725f636f6e7461696e65722c746869732e696e707574292c746869732e696e7075742e7374796c652e646973706c61793d226e6f6e65222c613d63287b7d2c662e706c7567696e732e65706963656469746f722c7b636f6e7461696e65723a746869732e65706963656469746f725f636f6e7461696e65722c636c69656e745369646553746f726167653a21317d292c746869732e65706963656469746f723d6e65772077696e646f772e45706963456469746f722861292e6c6f616428292c746869732e65706963656469746f722e696d706f727446696c65286e756c6c2c746869732e67657456616c75652829292c746869732e65706963656469746f722e6f6e2822757064617465222c66756e6374696f6e28297b76617220613d622e65706963656469746f722e6578706f727446696c6528293b622e696e7075742e76616c75653d612c622e76616c75653d612c622e69735f64697274793d21302c622e6f6e4368616e6765282130297d293b656c73652069662877696e646f772e616365297b76617220643d746869732e696e7075745f747970653b0a2f2f20616c696173657320666f7220632f6370700a2263707022213d3d64262622632b2b22213d3d642626226322213d3d647c7c28643d22635f63707022292c746869732e6163655f636f6e7461696e65723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e6163655f636f6e7461696e65722e7374796c652e77696474683d2231303025222c746869732e6163655f636f6e7461696e65722e7374796c652e706f736974696f6e3d2272656c6174697665222c746869732e6163655f636f6e7461696e65722e7374796c652e6865696768743d223430307078222c746869732e696e7075742e706172656e744e6f64652e696e736572744265666f726528746869732e6163655f636f6e7461696e65722c746869732e696e707574292c746869732e696e7075742e7374796c652e646973706c61793d226e6f6e65222c746869732e6163655f656469746f723d77696e646f772e6163652e6564697428746869732e6163655f636f6e7461696e6572292c746869732e6163655f656469746f722e73657456616c756528746869732e67657456616c75652829292c0a2f2f20546865207468656d650a662e706c7567696e732e6163652e7468656d652626746869732e6163655f656469746f722e7365745468656d6528226163652f7468656d652f222b662e706c7567696e732e6163652e7468656d65292c0a2f2f20546865206d6f64650a643d77696e646f772e6163652e7265717569726528226163652f6d6f64652f222b64292c642626746869732e6163655f656469746f722e67657453657373696f6e28292e7365744d6f6465286e657720642e4d6f6465292c0a2f2f204c697374656e20666f72206368616e6765730a746869732e6163655f656469746f722e6f6e28226368616e6765222c66756e6374696f6e28297b76617220613d622e6163655f656469746f722e67657456616c756528293b622e696e7075742e76616c75653d612c622e7265667265736856616c756528292c622e69735f64697274793d21302c622e6f6e4368616e6765282130297d297d622e7468656d652e6166746572496e707574526561647928622e696e707574297d2c7265667265736856616c75653a66756e6374696f6e28297b746869732e76616c75653d746869732e696e7075742e76616c75652c22737472696e6722213d747970656f6620746869732e76616c7565262628746869732e76616c75653d2222292c746869732e73657269616c697a65643d746869732e76616c75657d2c64657374726f793a66756e6374696f6e28297b0a2f2f204966207573696e67205343456469746f722c2064657374726f792074686520656469746f7220696e7374616e63650a746869732e7363656469746f725f696e7374616e63653f746869732e7363656469746f725f696e7374616e63652e64657374726f7928293a746869732e65706963656469746f723f746869732e65706963656469746f722e756e6c6f616428293a746869732e6163655f656469746f722626746869732e6163655f656469746f722e64657374726f7928292c746869732e74656d706c6174653d6e756c6c2c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e6c6162656c2626746869732e6c6162656c2e706172656e744e6f64652626746869732e6c6162656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6c6162656c292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e5f737570657228297d2c2f2a2a0a2020202a2054686973206973206f76657272696464656e20696e206465726976617469766520656469746f72730a2020202a2f0a73616e6974697a653a66756e6374696f6e2861297b72657475726e20617d2c2f2a2a0a2020202a2052652d63616c63756c61746573207468652076616c7565206966206e65656465640a2020202a2f0a6f6e576174636865644669656c644368616e67653a66756e6374696f6e28297b76617220613b0a2f2f204966207468697320656469746f72206e6565647320746f2062652072656e64657265642062792061206d6163726f2074656d706c6174650a746869732e74656d706c617465262628613d746869732e676574576174636865644669656c6456616c75657328292c746869732e73657456616c756528746869732e74656d706c6174652861292c21312c213029292c746869732e5f737570657228297d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b76617220623d746869733b69662822616c77617973223d3d3d746869732e6a736f6e656469746f722e6f7074696f6e732e73686f775f6572726f7273293b656c73652069662821746869732e69735f64697274792626746869732e70726576696f75735f6572726f725f73657474696e673d3d3d746869732e6a736f6e656469746f722e6f7074696f6e732e73686f775f6572726f72732972657475726e3b746869732e70726576696f75735f6572726f725f73657474696e673d746869732e6a736f6e656469746f722e6f7074696f6e732e73686f775f6572726f72733b76617220633d5b5d3b6428612c66756e6374696f6e28612c64297b642e706174683d3d3d622e706174682626632e7075736828642e6d657373616765297d292c632e6c656e6774683f746869732e7468656d652e616464496e7075744572726f7228746869732e696e7075742c632e6a6f696e28222e2022292b222e22293a746869732e7468656d652e72656d6f7665496e7075744572726f7228746869732e696e707574297d7d292c662e64656661756c74732e656469746f72732e6e756d6265723d662e64656661756c74732e656469746f72732e737472696e672e657874656e64287b73616e6974697a653a66756e6374696f6e2861297b72657475726e28612b2222292e7265706c616365282f5b5e302d395c2e5c2d65455d2f672c2222297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20327d2c67657456616c75653a66756e6374696f6e28297b72657475726e20312a746869732e76616c75657d7d292c662e64656661756c74732e656469746f72732e696e74656765723d662e64656661756c74732e656469746f72732e6e756d6265722e657874656e64287b73616e6974697a653a66756e6374696f6e2861297b72657475726e20612b3d22222c612e7265706c616365282f5b5e302d395c2d5d2f672c2222297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20327d7d292c662e64656661756c74732e656469746f72732e6f626a6563743d662e4162737472616374456469746f722e657874656e64287b67657444656661756c743a66756e6374696f6e28297b72657475726e2063287b7d2c746869732e736368656d615b2264656661756c74225d7c7c7b7d297d2c6765744368696c64456469746f72733a66756e6374696f6e28297b72657475726e20746869732e656469746f72737d2c72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e656469746f727329666f7228766172206120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f70657274792861292626746869732e656469746f72735b615d2e726567697374657228297d2c756e72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e656469746f727329666f7228766172206120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f70657274792861292626746869732e656469746f72735b615d2e756e726567697374657228297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e204d6174682e6d6178284d6174682e6d696e2831322c746869732e6d61787769647468292c33297d2c656e61626c653a66756e6374696f6e28297b696628746869732e656469746a736f6e5f627574746f6e262628746869732e656469746a736f6e5f627574746f6e2e64697361626c65643d2131292c746869732e61646470726f70657274795f627574746f6e262628746869732e61646470726f70657274795f627574746f6e2e64697361626c65643d2131292c746869732e5f737570657228292c746869732e656469746f727329666f7228766172206120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f70657274792861292626746869732e656469746f72735b615d2e656e61626c6528297d2c64697361626c653a66756e6374696f6e28297b696628746869732e656469746a736f6e5f627574746f6e262628746869732e656469746a736f6e5f627574746f6e2e64697361626c65643d2130292c746869732e61646470726f70657274795f627574746f6e262628746869732e61646470726f70657274795f627574746f6e2e64697361626c65643d2130292c746869732e68696465456469744a534f4e28292c746869732e5f737570657228292c746869732e656469746f727329666f7228766172206120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f70657274792861292626746869732e656469746f72735b615d2e64697361626c6528297d2c6c61796f7574456469746f72733a66756e6374696f6e28297b76617220612c622c633d746869733b696628746869732e726f775f636f6e7461696e6572297b0a2f2f20536f727420656469746f72732062792070726f70657274794f726465720a746869732e70726f70657274795f6f726465723d4f626a6563742e6b65797328746869732e656469746f7273292c746869732e70726f70657274795f6f726465723d746869732e70726f70657274795f6f726465722e736f72742866756e6374696f6e28612c62297b76617220643d632e656469746f72735b615d2e736368656d612e70726f70657274794f726465722c653d632e656469746f72735b625d2e736368656d612e70726f70657274794f726465723b72657475726e226e756d62657222213d747970656f662064262628643d316533292c226e756d62657222213d747970656f662065262628653d316533292c642d657d293b76617220653b6966282267726964223d3d3d746869732e666f726d6174297b76617220663d5b5d3b0a2f2f204d616b6520616c6d6f73742066756c6c20726f77732077696474682031320a2f2f20446f207468697320627920696e6372656173696e6720616c6c20656469746f7273272073697a65732070726f70726f74696f6e6174656c790a2f2f20416e79206c656674206f76657220737061636520676f657320746f20746865206269676765737420656469746f720a2f2f20446f6e277420746f75636820726f777320776974682061207769647468206f662036206f72206c6573730a666f72286428746869732e70726f70657274795f6f726465722c66756e6374696f6e28612c62297b76617220643d632e656469746f72735b625d3b69662821642e70726f70657274795f72656d6f766564297b0a2f2f205365652069662074686520656469746f722077696c6c2066697420696e20616e79206f6620746865206578697374696e6720726f77732066697273740a666f722876617220653d21312c673d642e6f7074696f6e732e68696464656e3f303a642e6f7074696f6e732e677269645f636f6c756d6e737c7c642e6765744e756d436f6c756d6e7328292c683d642e6f7074696f6e732e68696464656e3f303a642e636f6e7461696e65722e6f66667365744865696768742c693d303b693c662e6c656e6774683b692b2b290a2f2f2049662074686520656469746f722077696c6c2066697420696e2074686520726f7720686f72697a6f6e74616c6c790a665b695d2e77696474682b673c3d313226262821687c7c2e352a665b695d2e6d696e683c682626322a665b695d2e6d6178683e6829262628653d69293b0a2f2f2049662074686572652069736e277420612073706f7420696e20616e79206f6620746865206578697374696e6720726f77732c2073746172742061206e657720726f770a653d3d3d2131262628662e70757368287b77696474683a302c6d696e683a3939393939392c6d6178683a302c656469746f72733a5b5d7d292c653d662e6c656e6774682d31292c665b655d2e656469746f72732e70757368287b6b65793a622c0a2f2f656469746f723a20656469746f722c0a77696474683a672c6865696768743a687d292c665b655d2e77696474682b3d672c665b655d2e6d696e683d4d6174682e6d696e28665b655d2e6d696e682c68292c665b655d2e6d6178683d4d6174682e6d617828665b655d2e6d6178682c68297d7d292c613d303b613c662e6c656e6774683b612b2b29696628665b615d2e77696474683c3132297b76617220673d21312c683d303b666f7228623d303b623c665b615d2e656469746f72732e6c656e6774683b622b2b29673d3d3d21313f673d623a665b615d2e656469746f72735b625d2e77696474683e665b615d2e656469746f72735b675d2e7769647468262628673d62292c665b615d2e656469746f72735b625d2e77696474682a3d31322f665b615d2e77696474682c665b615d2e656469746f72735b625d2e77696474683d4d6174682e666c6f6f7228665b615d2e656469746f72735b625d2e7769647468292c682b3d665b615d2e656469746f72735b625d2e77696474683b683c3132262628665b615d2e656469746f72735b675d2e77696474682b3d31322d68292c665b615d2e77696474683d31327d0a2f2f206c61796f7574206861736e2774206368616e6765640a696628746869732e6c61796f75743d3d3d4a534f4e2e737472696e676966792866292972657475726e21313b666f7228746869732e6c61796f75743d4a534f4e2e737472696e676966792866292c0a2f2f204c61796f75742074686520666f726d0a653d646f63756d656e742e637265617465456c656d656e74282264697622292c613d303b613c662e6c656e6774683b612b2b297b76617220693d746869732e7468656d652e67657447726964526f7728293b666f7228652e617070656e644368696c642869292c623d303b623c665b615d2e656469746f72732e6c656e6774683b622b2b297b766172206a3d665b615d2e656469746f72735b625d2e6b65792c6b3d746869732e656469746f72735b6a5d3b6b2e6f7074696f6e732e68696464656e3f6b2e636f6e7461696e65722e7374796c652e646973706c61793d226e6f6e65223a746869732e7468656d652e73657447726964436f6c756d6e53697a65286b2e636f6e7461696e65722c665b615d2e656469746f72735b625d2e7769647468292c692e617070656e644368696c64286b2e636f6e7461696e6572297d7d7d656c736520653d646f63756d656e742e637265617465456c656d656e74282264697622292c6428746869732e70726f70657274795f6f726465722c66756e6374696f6e28612c62297b76617220643d632e656469746f72735b625d3b69662821642e70726f70657274795f72656d6f766564297b76617220663d632e7468656d652e67657447726964526f7728293b652e617070656e644368696c642866292c642e6f7074696f6e732e68696464656e3f642e636f6e7461696e65722e7374796c652e646973706c61793d226e6f6e65223a632e7468656d652e73657447726964436f6c756d6e53697a6528642e636f6e7461696e65722c3132292c662e617070656e644368696c6428642e636f6e7461696e6572297d7d293b746869732e726f775f636f6e7461696e65722e696e6e657248544d4c3d22222c746869732e726f775f636f6e7461696e65722e617070656e644368696c642865297d7d2c67657450726f7065727479536368656d613a66756e6374696f6e2861297b0a2f2f20536368656d61206465636c61726564206469726563746c7920696e2070726f706572746965730a76617220623d746869732e736368656d612e70726f706572746965735b615d7c7c7b7d3b623d63287b7d2c62293b76617220643d2121746869732e736368656d612e70726f706572746965735b615d3b0a2f2f20416e79206d61746368696e67207061747465726e50726f706572746965732073686f756c64206265206d657267656420696e0a696628746869732e736368656d612e7061747465726e50726f7065727469657329666f7228766172206520696e20746869732e736368656d612e7061747465726e50726f7065727469657329696628746869732e736368656d612e7061747465726e50726f706572746965732e6861734f776e50726f7065727479286529297b76617220663d6e6577205265674578702865293b662e74657374286129262628622e616c6c4f663d622e616c6c4f667c7c5b5d2c622e616c6c4f662e7075736828746869732e736368656d612e7061747465726e50726f706572746965735b655d292c643d2130297d0a2f2f204861736e2774206d617463686564206f746865722072756c65732c20757365206164646974696f6e616c50726f7065727469657320736368656d610a72657475726e21642626746869732e736368656d612e6164646974696f6e616c50726f706572746965732626226f626a656374223d3d747970656f6620746869732e736368656d612e6164646974696f6e616c50726f70657274696573262628623d63287b7d2c746869732e736368656d612e6164646974696f6e616c50726f7065727469657329292c627d2c7072654275696c643a66756e6374696f6e28297b746869732e5f737570657228292c746869732e656469746f72733d7b7d2c746869732e6361636865645f656469746f72733d7b7d3b76617220613d746869733b0a2f2f20496620746865206f626a6563742073686f756c642062652072656e64657265642061732061207461626c6520726f770a696628746869732e666f726d61743d746869732e6f7074696f6e732e6c61796f75747c7c746869732e6f7074696f6e732e6f626a6563745f6c61796f75747c7c746869732e736368656d612e666f726d61747c7c746869732e6a736f6e656469746f722e6f7074696f6e732e6f626a6563745f6c61796f75747c7c226e6f726d616c222c746869732e736368656d612e70726f706572746965733d746869732e736368656d612e70726f706572746965737c7c7b7d2c746869732e6d696e77696474683d302c746869732e6d617877696474683d302c746869732e6f7074696f6e732e7461626c655f726f77296428746869732e736368656d612e70726f706572746965732c66756e6374696f6e28622c63297b76617220643d612e6a736f6e656469746f722e676574456469746f72436c6173732863293b612e656469746f72735b625d3d612e6a736f6e656469746f722e637265617465456469746f7228642c7b6a736f6e656469746f723a612e6a736f6e656469746f722c736368656d613a632c706174683a612e706174682b222e222b622c706172656e743a612c636f6d706163743a21302c72657175697265643a21307d292c612e656469746f72735b625d2e7072654275696c6428293b76617220653d612e656469746f72735b625d2e6f7074696f6e732e68696464656e3f303a612e656469746f72735b625d2e6f7074696f6e732e677269645f636f6c756d6e737c7c612e656469746f72735b625d2e6765744e756d436f6c756d6e7328293b612e6d696e77696474682b3d652c612e6d617877696474682b3d657d292c746869732e6e6f5f6c696e6b5f686f6c6465723d21303b656c73657b696628746869732e6f7074696f6e732e7461626c65290a2f2f20544f444f3a207461626c6520646973706c617920666f726d61740a7468726f77224e6f7420737570706f7274656420796574223b746869732e736368656d612e64656661756c7450726f706572746965737c7c28746869732e6a736f6e656469746f722e6f7074696f6e732e646973706c61795f72657175697265645f6f6e6c797c7c746869732e6f7074696f6e732e646973706c61795f72657175697265645f6f6e6c793f28746869732e736368656d612e64656661756c7450726f706572746965733d5b5d2c6428746869732e736368656d612e70726f706572746965732c66756e6374696f6e28622c63297b612e69735265717569726564287b6b65793a622c736368656d613a637d292626612e736368656d612e64656661756c7450726f706572746965732e707573682862297d29293a612e736368656d612e64656661756c7450726f706572746965733d4f626a6563742e6b65797328612e736368656d612e70726f7065727469657329292c0a2f2f20496e63726561736520746865206772696420776964746820746f206163636f756e7420666f722070616464696e670a612e6d617877696474682b3d312c6428746869732e736368656d612e64656661756c7450726f706572746965732c66756e6374696f6e28622c63297b612e6164644f626a65637450726f706572747928632c2130292c612e656469746f72735b635d262628612e6d696e77696474683d4d6174682e6d617828612e6d696e77696474682c612e656469746f72735b635d2e6f7074696f6e732e677269645f636f6c756d6e737c7c612e656469746f72735b635d2e6765744e756d436f6c756d6e732829292c612e6d617877696474682b3d612e656469746f72735b635d2e6f7074696f6e732e677269645f636f6c756d6e737c7c612e656469746f72735b635d2e6765744e756d436f6c756d6e732829297d297d0a2f2f20536f727420656469746f72732062792070726f70657274794f726465720a746869732e70726f70657274795f6f726465723d4f626a6563742e6b65797328746869732e656469746f7273292c746869732e70726f70657274795f6f726465723d746869732e70726f70657274795f6f726465722e736f72742866756e6374696f6e28622c63297b76617220643d612e656469746f72735b625d2e736368656d612e70726f70657274794f726465722c653d612e656469746f72735b635d2e736368656d612e70726f70657274794f726465723b72657475726e226e756d62657222213d747970656f662064262628643d316533292c226e756d62657222213d747970656f662065262628653d316533292c642d657d297d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b0a2f2f20496620746865206f626a6563742073686f756c642062652072656e64657265642061732061207461626c6520726f770a696628746869732e6f7074696f6e732e7461626c655f726f7729746869732e656469746f725f686f6c6465723d746869732e636f6e7461696e65722c6428746869732e656469746f72732c66756e6374696f6e28622c63297b76617220643d612e7468656d652e6765745461626c6543656c6c28293b612e656469746f725f686f6c6465722e617070656e644368696c642864292c632e736574436f6e7461696e65722864292c632e6275696c6428292c632e706f73744275696c6428292c612e656469746f72735b625d2e6f7074696f6e732e68696464656e262628642e7374796c652e646973706c61793d226e6f6e6522292c612e656469746f72735b625d2e6f7074696f6e732e696e7075745f7769647468262628642e7374796c652e77696474683d612e656469746f72735b625d2e6f7074696f6e732e696e7075745f7769647468297d293b656c73657b696628746869732e6f7074696f6e732e7461626c65290a2f2f20544f444f3a207461626c6520646973706c617920666f726d61740a7468726f77224e6f7420737570706f7274656420796574223b746869732e6865616465723d646f63756d656e742e637265617465456c656d656e7428227370616e22292c746869732e6865616465722e74657874436f6e74656e743d746869732e6765745469746c6528292c746869732e7469746c653d746869732e7468656d652e67657448656164657228746869732e686561646572292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7469746c65292c746869732e636f6e7461696e65722e7374796c652e706f736974696f6e3d2272656c6174697665222c0a2f2f2045646974204a534f4e206d6f64616c0a746869732e656469746a736f6e5f686f6c6465723d746869732e7468656d652e6765744d6f64616c28292c746869732e656469746a736f6e5f74657874617265613d746869732e7468656d652e6765745465787461726561496e70757428292c746869732e656469746a736f6e5f74657874617265612e7374796c652e6865696768743d223137307078222c746869732e656469746a736f6e5f74657874617265612e7374796c652e77696474683d223330307078222c746869732e656469746a736f6e5f74657874617265612e7374796c652e646973706c61793d22626c6f636b222c746869732e656469746a736f6e5f736176653d746869732e676574427574746f6e282253617665222c2273617665222c225361766522292c746869732e656469746a736f6e5f736176652e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e736176654a534f4e28297d292c746869732e656469746a736f6e5f63616e63656c3d746869732e676574427574746f6e282243616e63656c222c2263616e63656c222c2243616e63656c22292c746869732e656469746a736f6e5f63616e63656c2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e68696465456469744a534f4e28297d292c746869732e656469746a736f6e5f686f6c6465722e617070656e644368696c6428746869732e656469746a736f6e5f7465787461726561292c746869732e656469746a736f6e5f686f6c6465722e617070656e644368696c6428746869732e656469746a736f6e5f73617665292c746869732e656469746a736f6e5f686f6c6465722e617070656e644368696c6428746869732e656469746a736f6e5f63616e63656c292c0a2f2f204d616e6167652050726f70657274696573206d6f64616c0a746869732e61646470726f70657274795f686f6c6465723d746869732e7468656d652e6765744d6f64616c28292c746869732e61646470726f70657274795f6c6973743d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e61646470726f70657274795f6c6973742e7374796c652e77696474683d223239357078222c746869732e61646470726f70657274795f6c6973742e7374796c652e6d61784865696768743d223136307078222c746869732e61646470726f70657274795f6c6973742e7374796c652e70616464696e673d223570782030222c746869732e61646470726f70657274795f6c6973742e7374796c652e6f766572666c6f77593d226175746f222c746869732e61646470726f70657274795f6c6973742e7374796c652e6f766572666c6f77583d2268696464656e222c746869732e61646470726f70657274795f6c6973742e7374796c652e70616464696e674c6566743d22357078222c746869732e61646470726f70657274795f6c6973742e7365744174747269627574652822636c617373222c2270726f70657274792d73656c6563746f7222292c746869732e61646470726f70657274795f6164643d746869732e676574427574746f6e2822616464222c22616464222c2261646422292c746869732e61646470726f70657274795f696e7075743d746869732e7468656d652e676574466f726d496e7075744669656c6428227465787422292c746869732e61646470726f70657274795f696e7075742e7365744174747269627574652822706c616365686f6c646572222c2250726f7065727479206e616d652e2e2e22292c746869732e61646470726f70657274795f696e7075742e7374796c652e77696474683d223232307078222c746869732e61646470726f70657274795f696e7075742e7374796c652e6d617267696e426f74746f6d3d2230222c746869732e61646470726f70657274795f696e7075742e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c746869732e61646470726f70657274795f6164642e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b696628622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e61646470726f70657274795f696e7075742e76616c7565297b696628612e656469746f72735b612e61646470726f70657274795f696e7075742e76616c75655d2972657475726e20766f69642077696e646f772e616c6572742822746865726520697320616c726561647920612070726f706572747920776974682074686174206e616d6522293b612e6164644f626a65637450726f706572747928612e61646470726f70657274795f696e7075742e76616c7565292c612e656469746f72735b612e61646470726f70657274795f696e7075742e76616c75655d2626612e656469746f72735b612e61646470726f70657274795f696e7075742e76616c75655d2e64697361626c6528292c612e6f6e4368616e6765282130297d7d292c746869732e61646470726f70657274795f686f6c6465722e617070656e644368696c6428746869732e61646470726f70657274795f6c697374292c746869732e61646470726f70657274795f686f6c6465722e617070656e644368696c6428746869732e61646470726f70657274795f696e707574292c746869732e61646470726f70657274795f686f6c6465722e617070656e644368696c6428746869732e61646470726f70657274795f616464293b76617220623d646f63756d656e742e637265617465456c656d656e74282264697622293b622e7374796c652e636c6561723d22626f7468222c746869732e61646470726f70657274795f686f6c6465722e617070656e644368696c642862292c0a2f2f204465736372697074696f6e0a746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e6765744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6465736372697074696f6e29292c0a2f2f2056616c69646174696f6e206572726f7220706c616365686f6c64657220617265610a746869732e6572726f725f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6572726f725f686f6c646572292c0a2f2f20436f6e7461696e657220666f72206368696c6420656469746f7220617265610a746869732e656469746f725f686f6c6465723d746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e656469746f725f686f6c646572292c0a2f2f20436f6e7461696e657220666f7220726f7773206f66206368696c6420656469746f72730a746869732e726f775f636f6e7461696e65723d746869732e7468656d652e67657447726964436f6e7461696e657228292c746869732e656469746f725f686f6c6465722e617070656e644368696c6428746869732e726f775f636f6e7461696e6572292c6428746869732e656469746f72732c66756e6374696f6e28622c63297b76617220643d612e7468656d652e67657447726964436f6c756d6e28293b612e726f775f636f6e7461696e65722e617070656e644368696c642864292c632e736574436f6e7461696e65722864292c632e6275696c6428292c632e706f73744275696c6428297d292c0a2f2f20436f6e74726f6c20627574746f6e730a746869732e7469746c655f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e656469746a736f6e5f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e61646470726f70657274795f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e7469746c652e617070656e644368696c6428746869732e7469746c655f636f6e74726f6c73292c746869732e7469746c652e617070656e644368696c6428746869732e656469746a736f6e5f636f6e74726f6c73292c746869732e7469746c652e617070656e644368696c6428746869732e61646470726f70657274795f636f6e74726f6c73292c0a2f2f2053686f772f4869646520627574746f6e0a746869732e636f6c6c61707365643d21312c746869732e746f67676c655f627574746f6e3d746869732e676574427574746f6e2822222c22636f6c6c61707365222c746869732e7472616e736c6174652822627574746f6e5f636f6c6c617073652229292c746869732e7469746c655f636f6e74726f6c732e617070656e644368696c6428746869732e746f67676c655f627574746f6e292c746869732e746f67676c655f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e636f6c6c61707365643f28612e656469746f725f686f6c6465722e7374796c652e646973706c61793d22222c612e636f6c6c61707365643d21312c612e736574427574746f6e5465787428612e746f67676c655f627574746f6e2c22222c22636f6c6c61707365222c612e7472616e736c6174652822627574746f6e5f636f6c6c61707365222929293a28612e656469746f725f686f6c6465722e7374796c652e646973706c61793d226e6f6e65222c612e636f6c6c61707365643d21302c612e736574427574746f6e5465787428612e746f67676c655f627574746f6e2c22222c22657870616e64222c612e7472616e736c6174652822627574746f6e5f657870616e64222929297d292c0a2f2f2049662069742073686f756c6420737461727420636f6c6c61707365640a746869732e6f7074696f6e732e636f6c6c617073656426266528746869732e746f67676c655f627574746f6e2c22636c69636b22292c0a2f2f20436f6c6c6170736520627574746f6e2064697361626c65640a746869732e736368656d612e6f7074696f6e73262622756e646566696e656422213d747970656f6620746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c617073653f746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522293a746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522292c0a2f2f2045646974204a534f4e20427574746f6e0a746869732e656469746a736f6e5f627574746f6e3d746869732e676574427574746f6e28224a534f4e222c2265646974222c2245646974204a534f4e22292c746869732e656469746a736f6e5f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e746f67676c65456469744a534f4e28297d292c746869732e656469746a736f6e5f636f6e74726f6c732e617070656e644368696c6428746869732e656469746a736f6e5f627574746f6e292c746869732e656469746a736f6e5f636f6e74726f6c732e617070656e644368696c6428746869732e656469746a736f6e5f686f6c646572292c0a2f2f2045646974204a534f4e2042757474746f6e2064697361626c65640a746869732e736368656d612e6f7074696f6e73262622756e646566696e656422213d747970656f6620746869732e736368656d612e6f7074696f6e732e64697361626c655f656469745f6a736f6e3f746869732e736368656d612e6f7074696f6e732e64697361626c655f656469745f6a736f6e262628746869732e656469746a736f6e5f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522293a746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f656469745f6a736f6e262628746869732e656469746a736f6e5f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522292c0a2f2f204f626a6563742050726f7065727469657320427574746f6e0a746869732e61646470726f70657274795f627574746f6e3d746869732e676574427574746f6e282250726f70657274696573222c2265646974222c224f626a6563742050726f7065727469657322292c746869732e61646470726f70657274795f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e746f67676c6541646450726f706572747928297d292c746869732e61646470726f70657274795f636f6e74726f6c732e617070656e644368696c6428746869732e61646470726f70657274795f627574746f6e292c746869732e61646470726f70657274795f636f6e74726f6c732e617070656e644368696c6428746869732e61646470726f70657274795f686f6c646572292c746869732e7265667265736841646450726f7065727469657328297d0a2f2f20466978207461626c652063656c6c206f72646572696e670a746869732e6f7074696f6e732e7461626c655f726f773f28746869732e656469746f725f686f6c6465723d746869732e636f6e7461696e65722c6428746869732e70726f70657274795f6f726465722c66756e6374696f6e28622c63297b612e656469746f725f686f6c6465722e617070656e644368696c6428612e656469746f72735b635d2e636f6e7461696e6572297d29293a280a2f2f20496e697469616c206c61796f75740a746869732e6c61796f7574456469746f727328292c0a2f2f20446f20697420616761696e206e6f772074686174207765206b6e6f772074686520617070726f78696d6174652068656967687473206f6620656c656d656e74730a746869732e6c61796f7574456469746f72732829297d2c73686f77456469744a534f4e3a66756e6374696f6e28297b746869732e656469746a736f6e5f686f6c646572262628746869732e6869646541646450726f706572747928292c0a2f2f20506f736974696f6e2074686520666f726d206469726563746c792062656e656174682074686520627574746f6e0a2f2f20544f444f3a206564676520646574656374696f6e0a746869732e656469746a736f6e5f686f6c6465722e7374796c652e6c6566743d746869732e656469746a736f6e5f627574746f6e2e6f66667365744c6566742b227078222c746869732e656469746a736f6e5f686f6c6465722e7374796c652e746f703d746869732e656469746a736f6e5f627574746f6e2e6f6666736574546f702b746869732e656469746a736f6e5f627574746f6e2e6f66667365744865696768742b227078222c0a2f2f205374617274207468652074657874617265612077697468207468652063757272656e742076616c75650a746869732e656469746a736f6e5f74657874617265612e76616c75653d4a534f4e2e737472696e6769667928746869732e67657456616c756528292c6e756c6c2c32292c0a2f2f2044697361626c65207468652072657374206f662074686520666f726d207768696c652065646974696e67204a534f4e0a746869732e64697361626c6528292c746869732e656469746a736f6e5f686f6c6465722e7374796c652e646973706c61793d22222c746869732e656469746a736f6e5f627574746f6e2e64697361626c65643d21312c746869732e65646974696e675f6a736f6e3d2130297d2c68696465456469744a534f4e3a66756e6374696f6e28297b746869732e656469746a736f6e5f686f6c6465722626746869732e65646974696e675f6a736f6e262628746869732e656469746a736f6e5f686f6c6465722e7374796c652e646973706c61793d226e6f6e65222c746869732e656e61626c6528292c746869732e65646974696e675f6a736f6e3d2131297d2c736176654a534f4e3a66756e6374696f6e28297b696628746869732e656469746a736f6e5f686f6c646572297472797b76617220613d4a534f4e2e706172736528746869732e656469746a736f6e5f74657874617265612e76616c7565293b746869732e73657456616c75652861292c746869732e68696465456469744a534f4e28297d63617463682862297b7468726f772077696e646f772e616c6572742822696e76616c6964204a534f4e22292c627d7d2c746f67676c65456469744a534f4e3a66756e6374696f6e28297b746869732e65646974696e675f6a736f6e3f746869732e68696465456469744a534f4e28293a746869732e73686f77456469744a534f4e28297d2c696e7365727450726f7065727479436f6e74726f6c5573696e6750726f70657274794f726465723a66756e6374696f6e28612c622c63297b76617220643b746869732e736368656d612e70726f706572746965735b615d262628643d746869732e736368656d612e70726f706572746965735b615d2e70726f70657274794f72646572292c226e756d62657222213d747970656f662064262628643d316533292c622e70726f70657274794f726465723d643b666f722876617220653d303b653c632e6368696c644e6f6465732e6c656e6774683b652b2b297b76617220663d632e6368696c644e6f6465735b655d3b696628622e70726f70657274794f726465723c662e70726f70657274794f72646572297b746869732e61646470726f70657274795f6c6973742e696e736572744265666f726528622c66292c623d6e756c6c3b627265616b7d7d622626746869732e61646470726f70657274795f6c6973742e617070656e644368696c642862297d2c61646450726f7065727479436865636b626f783a66756e6374696f6e2861297b76617220622c632c642c652c663d746869733b0a2f2f636f6e74726f6c2e7374796c652e6f766572666c6f7759203d202768696464656e273b0a72657475726e20623d662e7468656d652e676574436865636b626f7828292c622e7374796c652e77696474683d226175746f222c643d746869732e736368656d612e70726f706572746965735b615d2626746869732e736368656d612e70726f706572746965735b615d2e7469746c653f746869732e736368656d612e70726f706572746965735b615d2e7469746c653a612c633d662e7468656d652e676574436865636b626f784c6162656c2864292c653d662e7468656d652e676574466f726d436f6e74726f6c28632c62292c652e7374796c652e70616464696e67426f74746f6d3d652e7374796c652e6d617267696e426f74746f6d3d652e7374796c652e70616464696e67546f703d652e7374796c652e6d617267696e546f703d302c652e7374796c652e6865696768743d226175746f222c746869732e696e7365727450726f7065727479436f6e74726f6c5573696e6750726f70657274794f7264657228612c652c746869732e61646470726f70657274795f6c697374292c622e636865636b65643d6120696e20746869732e656469746f72732c622e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e28297b622e636865636b65643f662e6164644f626a65637450726f70657274792861293a662e72656d6f76654f626a65637450726f70657274792861292c662e6f6e4368616e6765282130297d292c662e61646470726f70657274795f636865636b626f7865735b615d3d622c627d2c73686f7741646450726f70657274793a66756e6374696f6e28297b746869732e61646470726f70657274795f686f6c646572262628746869732e68696465456469744a534f4e28292c0a2f2f20506f736974696f6e2074686520666f726d206469726563746c792062656e656174682074686520627574746f6e0a2f2f20544f444f3a206564676520646574656374696f6e0a746869732e61646470726f70657274795f686f6c6465722e7374796c652e6c6566743d746869732e61646470726f70657274795f627574746f6e2e6f66667365744c6566742b227078222c746869732e61646470726f70657274795f686f6c6465722e7374796c652e746f703d746869732e61646470726f70657274795f627574746f6e2e6f6666736574546f702b746869732e61646470726f70657274795f627574746f6e2e6f66667365744865696768742b227078222c0a2f2f2044697361626c65207468652072657374206f662074686520666f726d207768696c652065646974696e67204a534f4e0a746869732e64697361626c6528292c746869732e616464696e675f70726f70657274793d21302c746869732e61646470726f70657274795f627574746f6e2e64697361626c65643d21312c746869732e61646470726f70657274795f686f6c6465722e7374796c652e646973706c61793d22222c746869732e7265667265736841646450726f706572746965732829297d2c6869646541646450726f70657274793a66756e6374696f6e28297b746869732e61646470726f70657274795f686f6c6465722626746869732e616464696e675f70726f7065727479262628746869732e61646470726f70657274795f686f6c6465722e7374796c652e646973706c61793d226e6f6e65222c746869732e656e61626c6528292c746869732e616464696e675f70726f70657274793d2131297d2c746f67676c6541646450726f70657274793a66756e6374696f6e28297b746869732e616464696e675f70726f70657274793f746869732e6869646541646450726f706572747928293a746869732e73686f7741646450726f706572747928297d2c72656d6f76654f626a65637450726f70657274793a66756e6374696f6e2861297b746869732e656469746f72735b615d262628746869732e656469746f72735b615d2e756e726567697374657228292c64656c65746520746869732e656469746f72735b615d2c746869732e7265667265736856616c756528292c746869732e6c61796f7574456469746f72732829297d2c6164644f626a65637450726f70657274793a66756e6374696f6e28612c62297b76617220633d746869733b0a2f2f2050726f706572747920697320616c72656164792061646465640a69662821746869732e656469746f72735b615d297b0a2f2f2050726f706572747920776173206164646564206265666f726520616e64206973206361636865640a696628746869732e6361636865645f656469746f72735b615d297b696628746869732e656469746f72735b615d3d746869732e6361636865645f656469746f72735b615d2c622972657475726e3b746869732e656469746f72735b615d2e726567697374657228297d656c73657b6966282128746869732e63616e486176654164646974696f6e616c50726f7065727469657328297c7c746869732e736368656d612e70726f706572746965732626746869732e736368656d612e70726f706572746965735b615d292972657475726e3b76617220643d632e67657450726f7065727479536368656d612861292c653d632e6a736f6e656469746f722e676574456469746f72436c6173732864293b696628632e656469746f72735b615d3d632e6a736f6e656469746f722e637265617465456469746f7228652c7b6a736f6e656469746f723a632e6a736f6e656469746f722c736368656d613a642c706174683a632e706174682b222e222b612c706172656e743a637d292c632e656469746f72735b615d2e7072654275696c6428292c2162297b76617220663d632e7468656d652e6765744368696c64456469746f72486f6c64657228293b632e656469746f725f686f6c6465722e617070656e644368696c642866292c632e656469746f72735b615d2e736574436f6e7461696e65722866292c632e656469746f72735b615d2e6275696c6428292c632e656469746f72735b615d2e706f73744275696c6428297d632e6361636865645f656469746f72735b615d3d632e656469746f72735b615d7d0a2f2f204966207765277265206f6e6c79207072656275696c64696e672074686520656469746f72732c20646f6e277420726566726573682076616c7565730a627c7c28632e7265667265736856616c756528292c632e6c61796f7574456469746f72732829297d7d2c6f6e4368696c64456469746f724368616e67653a66756e6374696f6e2861297b746869732e7265667265736856616c756528292c746869732e5f73757065722861297d2c63616e486176654164646974696f6e616c50726f706572746965733a66756e6374696f6e28297b72657475726e22626f6f6c65616e223d3d747970656f6620746869732e736368656d612e6164646974696f6e616c50726f706572746965733f746869732e736368656d612e6164646974696f6e616c50726f706572746965733a21746869732e6a736f6e656469746f722e6f7074696f6e732e6e6f5f6164646974696f6e616c5f70726f706572746965737d2c64657374726f793a66756e6374696f6e28297b6428746869732e6361636865645f656469746f72732c66756e6374696f6e28612c62297b622e64657374726f7928297d292c746869732e656469746f725f686f6c646572262628746869732e656469746f725f686f6c6465722e696e6e657248544d4c3d2222292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e6572726f725f686f6c6465722626746869732e6572726f725f686f6c6465722e706172656e744e6f64652626746869732e6572726f725f686f6c6465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e6572726f725f686f6c646572292c746869732e656469746f72733d6e756c6c2c746869732e6361636865645f656469746f72733d6e756c6c2c746869732e656469746f725f686f6c6465722626746869732e656469746f725f686f6c6465722e706172656e744e6f64652626746869732e656469746f725f686f6c6465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e656469746f725f686f6c646572292c746869732e656469746f725f686f6c6465723d6e756c6c2c746869732e5f737570657228297d2c67657456616c75653a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b696628746869732e6a736f6e656469746f722e6f7074696f6e732e72656d6f76655f656d7074795f70726f706572746965737c7c746869732e6f7074696f6e732e72656d6f76655f656d7074795f70726f7065727469657329666f7228766172206220696e206129612e6861734f776e50726f7065727479286229262628615b625d7c7c64656c65746520615b625d293b72657475726e20617d2c7265667265736856616c75653a66756e6374696f6e28297b746869732e76616c75653d7b7d3b666f7228766172206120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f7065727479286129262628746869732e76616c75655b615d3d746869732e656469746f72735b615d2e67657456616c75652829293b746869732e616464696e675f70726f70657274792626746869732e7265667265736841646450726f7065727469657328297d2c7265667265736841646450726f706572746965733a66756e6374696f6e28297b696628746869732e6f7074696f6e732e64697361626c655f70726f706572746965737c7c746869732e6f7074696f6e732e64697361626c655f70726f70657274696573213d3d21312626746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f70726f706572746965732972657475726e20766f696428746869732e61646470726f70657274795f636f6e74726f6c732e7374796c652e646973706c61793d226e6f6e6522293b76617220612c623d21312c633d21312c643d302c653d21313b0a2f2f20476574206e756d626572206f6620656469746f72730a666f72286120696e20746869732e656469746f727329746869732e656469746f72732e6861734f776e50726f70657274792861292626642b2b3b0a2f2f2044657465726d696e652069662077652063616e20616464206261636b2072656d6f7665642070726f706572746965730a623d746869732e63616e486176654164646974696f6e616c50726f7065727469657328292626212822756e646566696e656422213d747970656f6620746869732e736368656d612e6d617850726f706572746965732626643e3d746869732e736368656d612e6d617850726f70657274696573292c746869732e61646470726f70657274795f636865636b626f786573262628746869732e61646470726f70657274795f6c6973742e696e6e657248544d4c3d2222292c746869732e61646470726f70657274795f636865636b626f7865733d7b7d3b0a2f2f20436865636b20666f7220776869636820656469746f72732063616e27742062652072656d6f766564206f72206164646564206261636b0a666f72286120696e20746869732e6361636865645f656469746f727329746869732e6361636865645f656469746f72732e6861734f776e50726f7065727479286129262628746869732e61646450726f7065727479436865636b626f782861292c746869732e6973526571756972656428746869732e6361636865645f656469746f72735b615d2926266120696e20746869732e656469746f7273262628746869732e61646470726f70657274795f636865636b626f7865735b615d2e64697361626c65643d2130292c22756e646566696e656422213d747970656f6620746869732e736368656d612e6d696e50726f706572746965732626643c3d746869732e736368656d612e6d696e50726f706572746965733f28746869732e61646470726f70657274795f636865636b626f7865735b615d2e64697361626c65643d746869732e61646470726f70657274795f636865636b626f7865735b615d2e636865636b65642c746869732e61646470726f70657274795f636865636b626f7865735b615d2e636865636b65647c7c28653d213029293a6120696e20746869732e656469746f72733f28653d21302c633d2130293a627c7c746869732e736368656d612e70726f706572746965732e6861734f776e50726f70657274792861293f28746869732e61646470726f70657274795f636865636b626f7865735b615d2e64697361626c65643d21312c653d2130293a746869732e61646470726f70657274795f636865636b626f7865735b615d2e64697361626c65643d2130293b746869732e63616e486176654164646974696f6e616c50726f706572746965732829262628653d2130293b0a2f2f204164646974696f6e616c2061646470726f706572747920636865636b626f786573206e6f74207469656420746f20612063757272656e7420656469746f720a666f72286120696e20746869732e736368656d612e70726f7065727469657329746869732e736368656d612e70726f706572746965732e6861734f776e50726f7065727479286129262628746869732e6361636865645f656469746f72735b615d7c7c28653d21302c746869732e61646450726f7065727479436865636b626f7828612929293b0a2f2f204966206e6f20656469746f72732063616e206265206164646564206f722072656d6f7665642c206869646520746865206d6f64616c20627574746f6e0a653f746869732e63616e486176654164646974696f6e616c50726f7065727469657328293f623f746869732e61646470726f70657274795f6164642e64697361626c65643d21313a746869732e61646470726f70657274795f6164642e64697361626c65643d21303a28746869732e61646470726f70657274795f6164642e7374796c652e646973706c61793d226e6f6e65222c746869732e61646470726f70657274795f696e7075742e7374796c652e646973706c61793d226e6f6e6522293a28746869732e6869646541646450726f706572747928292c746869732e61646470726f70657274795f636f6e74726f6c732e7374796c652e646973706c61793d226e6f6e6522297d2c697352657175697265643a66756e6374696f6e2861297b72657475726e22626f6f6c65616e223d3d747970656f6620612e736368656d612e72657175697265643f612e736368656d612e72657175697265643a41727261792e6973417272617928746869732e736368656d612e7265717569726564293f746869732e736368656d612e72657175697265642e696e6465784f6628612e6b6579293e2d313a2121746869732e6a736f6e656469746f722e6f7074696f6e732e72657175697265645f62795f64656661756c747d2c73657456616c75653a66756e6374696f6e28612c62297b76617220633d746869733b613d617c7c7b7d2c28226f626a65637422213d747970656f6620617c7c41727261792e6973417272617928612929262628613d7b7d292c0a2f2f2046697273742c20736574207468652076616c75657320666f7220616c6c206f662074686520646566696e65642070726f706572746965730a6428746869732e6361636865645f656469746f72732c66756e6374696f6e28642c65297b0a2f2f2056616c7565206578706c696369746c79207365740a22756e646566696e656422213d747970656f6620615b645d3f28632e6164644f626a65637450726f70657274792864292c652e73657456616c756528615b645d2c6229293a627c7c632e697352657175697265642865293f652e73657456616c756528652e67657444656661756c7428292c62293a632e72656d6f76654f626a65637450726f70657274792864297d292c6428612c66756e6374696f6e28612c64297b632e6361636865645f656469746f72735b615d7c7c28632e6164644f626a65637450726f70657274792861292c632e656469746f72735b615d2626632e656469746f72735b615d2e73657456616c756528642c6229297d292c746869732e7265667265736856616c756528292c746869732e6c61796f7574456469746f727328292c746869732e6f6e4368616e676528297d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b76617220623d746869732c633d5b5d2c653d5b5d3b0a2f2f2053686f77206572726f727320666f72207468697320656469746f720a6966286428612c66756e6374696f6e28612c64297b642e706174683d3d3d622e706174683f632e707573682864293a652e707573682864297d292c746869732e6572726f725f686f6c64657229696628632e6c656e677468297b746869732e6572726f725f686f6c6465722e696e6e657248544d4c3d22222c746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d22222c6428632c66756e6374696f6e28612c63297b622e6572726f725f686f6c6465722e617070656e644368696c6428622e7468656d652e6765744572726f724d65737361676528632e6d65737361676529297d297d656c736520746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d226e6f6e65223b0a2f2f2053686f77206572726f7220666f7220746865207461626c6520726f77206966207468697320697320696e736964652061207461626c650a746869732e6f7074696f6e732e7461626c655f726f77262628632e6c656e6774683f746869732e7468656d652e6164645461626c65526f774572726f7228746869732e636f6e7461696e6572293a746869732e7468656d652e72656d6f76655461626c65526f774572726f7228746869732e636f6e7461696e657229292c0a2f2f2053686f77206572726f727320666f72206368696c6420656469746f72730a6428746869732e656469746f72732c66756e6374696f6e28612c62297b622e73686f7756616c69646174696f6e4572726f72732865297d297d7d292c662e64656661756c74732e656469746f72732e61727261793d662e4162737472616374456469746f722e657874656e64287b67657444656661756c743a66756e6374696f6e28297b72657475726e20746869732e736368656d615b2264656661756c74225d7c7c5b5d7d2c72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e726567697374657228297d2c756e72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e756e726567697374657228297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b76617220613d746869732e6765744974656d496e666f2830293b0a2f2f2054616273207265717569726520657874726120686f72697a6f6e74616c2073706163650a2f2f2054616273207265717569726520657874726120686f72697a6f6e74616c2073706163650a72657475726e20746869732e746162735f686f6c6465723f4d6174682e6d6178284d6174682e6d696e2831322c612e77696474682b32292c34293a612e77696474687d2c656e61626c653a66756e6374696f6e28297b696628746869732e6164645f726f775f627574746f6e262628746869732e6164645f726f775f627574746f6e2e64697361626c65643d2131292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e262628746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e64697361626c65643d2131292c746869732e64656c6574655f6c6173745f726f775f627574746f6e262628746869732e64656c6574655f6c6173745f726f775f627574746f6e2e64697361626c65643d2131292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e656e61626c6528292c746869732e726f77735b615d2e6d6f766575705f627574746f6e262628746869732e726f77735b615d2e6d6f766575705f627574746f6e2e64697361626c65643d2131292c746869732e726f77735b615d2e6d6f7665646f776e5f627574746f6e262628746869732e726f77735b615d2e6d6f7665646f776e5f627574746f6e2e64697361626c65643d2131292c746869732e726f77735b615d2e64656c6574655f627574746f6e262628746869732e726f77735b615d2e64656c6574655f627574746f6e2e64697361626c65643d2131293b746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b696628746869732e6164645f726f775f627574746f6e262628746869732e6164645f726f775f627574746f6e2e64697361626c65643d2130292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e262628746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e64697361626c65643d2130292c746869732e64656c6574655f6c6173745f726f775f627574746f6e262628746869732e64656c6574655f6c6173745f726f775f627574746f6e2e64697361626c65643d2130292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e64697361626c6528292c746869732e726f77735b615d2e6d6f766575705f627574746f6e262628746869732e726f77735b615d2e6d6f766575705f627574746f6e2e64697361626c65643d2130292c746869732e726f77735b615d2e6d6f7665646f776e5f627574746f6e262628746869732e726f77735b615d2e6d6f7665646f776e5f627574746f6e2e64697361626c65643d2130292c746869732e726f77735b615d2e64656c6574655f627574746f6e262628746869732e726f77735b615d2e64656c6574655f627574746f6e2e64697361626c65643d2130293b746869732e5f737570657228297d2c7072654275696c643a66756e6374696f6e28297b746869732e5f737570657228292c746869732e726f77733d5b5d2c746869732e726f775f63616368653d5b5d2c746869732e686964655f64656c6574655f627574746f6e733d746869732e6f7074696f6e732e64697361626c655f61727261795f64656c6574657c7c746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f61727261795f64656c6574652c746869732e686964655f64656c6574655f616c6c5f726f77735f627574746f6e733d746869732e686964655f64656c6574655f627574746f6e737c7c746869732e6f7074696f6e732e64697361626c655f61727261795f64656c6574655f616c6c5f726f77737c7c746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f61727261795f64656c6574655f616c6c5f726f77732c746869732e686964655f64656c6574655f6c6173745f726f775f627574746f6e733d746869732e686964655f64656c6574655f627574746f6e737c7c746869732e6f7074696f6e732e64697361626c655f61727261795f64656c6574655f6c6173745f726f777c7c746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f61727261795f64656c6574655f6c6173745f726f772c746869732e686964655f6d6f76655f627574746f6e733d746869732e6f7074696f6e732e64697361626c655f61727261795f72656f726465727c7c746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f61727261795f72656f726465722c746869732e686964655f6164645f627574746f6e3d746869732e6f7074696f6e732e64697361626c655f61727261795f6164647c7c746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f61727261795f6164647d2c6275696c643a66756e6374696f6e28297b746869732e6f7074696f6e732e636f6d706163743f28746869732e70616e656c3d746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70616e656c292c746869732e636f6e74726f6c733d746869732e7468656d652e676574427574746f6e486f6c64657228292c746869732e70616e656c2e617070656e644368696c6428746869732e636f6e74726f6c73292c746869732e726f775f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e70616e656c2e617070656e644368696c6428746869732e726f775f686f6c64657229293a28746869732e6865616465723d646f63756d656e742e637265617465456c656d656e7428227370616e22292c746869732e6865616465722e74657874436f6e74656e743d746869732e6765745469746c6528292c746869732e7469746c653d746869732e7468656d652e67657448656164657228746869732e686561646572292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7469746c65292c746869732e7469746c655f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e7469746c652e617070656e644368696c6428746869732e7469746c655f636f6e74726f6c73292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e6765744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6465736372697074696f6e29292c746869732e6572726f725f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6572726f725f686f6c646572292c2274616273223d3d3d746869732e736368656d612e666f726d61743f28746869732e636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e7469746c652e617070656e644368696c6428746869732e636f6e74726f6c73292c746869732e746162735f686f6c6465723d746869732e7468656d652e676574546162486f6c64657228292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e746162735f686f6c646572292c746869732e726f775f686f6c6465723d746869732e7468656d652e676574546162436f6e74656e74486f6c64657228746869732e746162735f686f6c646572292c746869732e6163746976655f7461623d6e756c6c293a28746869732e70616e656c3d746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70616e656c292c746869732e726f775f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e70616e656c2e617070656e644368696c6428746869732e726f775f686f6c646572292c746869732e636f6e74726f6c733d746869732e7468656d652e676574427574746f6e486f6c64657228292c746869732e70616e656c2e617070656e644368696c6428746869732e636f6e74726f6c732929292c0a2f2f2041646420636f6e74726f6c730a746869732e616464436f6e74726f6c7328297d2c6f6e4368696c64456469746f724368616e67653a66756e6374696f6e2861297b746869732e7265667265736856616c756528292c746869732e7265667265736854616273282130292c746869732e5f73757065722861297d2c6765744974656d5469746c653a66756e6374696f6e28297b69662821746869732e6974656d5f7469746c6529696628746869732e736368656d612e6974656d7326262141727261792e6973417272617928746869732e736368656d612e6974656d7329297b76617220613d746869732e6a736f6e656469746f722e657870616e645265667328746869732e736368656d612e6974656d73293b746869732e6974656d5f7469746c653d612e7469746c657c7c226974656d227d656c736520746869732e6974656d5f7469746c653d226974656d223b72657475726e20746869732e6974656d5f7469746c657d2c6765744974656d536368656d613a66756e6374696f6e2861297b72657475726e2041727261792e6973417272617928746869732e736368656d612e6974656d73293f613e3d746869732e736368656d612e6974656d732e6c656e6774683f746869732e736368656d612e6164646974696f6e616c4974656d733d3d3d21303f7b7d3a746869732e736368656d612e6164646974696f6e616c4974656d733f63287b7d2c746869732e736368656d612e6164646974696f6e616c4974656d73293a766f696420303a63287b7d2c746869732e736368656d612e6974656d735b615d293a746869732e736368656d612e6974656d733f63287b7d2c746869732e736368656d612e6974656d73293a7b7d7d2c6765744974656d496e666f3a66756e6374696f6e2861297b76617220623d746869732e6765744974656d536368656d612861293b0a2f2f20436865636b2069662069742773206361636865640a746869732e6974656d5f696e666f3d746869732e6974656d5f696e666f7c7c7b7d3b76617220633d4a534f4e2e737472696e676966792862293b0a2f2f204765742074686520736368656d6120666f722074686973206974656d0a72657475726e22756e646566696e656422213d747970656f6620746869732e6974656d5f696e666f5b635d3f746869732e6974656d5f696e666f5b635d3a28623d746869732e6a736f6e656469746f722e657870616e64526566732862292c746869732e6974656d5f696e666f5b635d3d7b7469746c653a622e7469746c657c7c226974656d222c2264656661756c74223a625b2264656661756c74225d2c77696474683a31322c6368696c645f656469746f72733a622e70726f706572746965737c7c622e6974656d737d2c746869732e6974656d5f696e666f5b635d297d2c676574456c656d656e74456469746f723a66756e6374696f6e2861297b76617220623d746869732e6765744974656d496e666f2861292c633d746869732e6765744974656d536368656d612861293b633d746869732e6a736f6e656469746f722e657870616e64526566732863292c632e7469746c653d622e7469746c652b2220222b28612b31293b76617220642c653d746869732e6a736f6e656469746f722e676574456469746f72436c6173732863293b643d746869732e746162735f686f6c6465723f746869732e7468656d652e676574546162436f6e74656e7428293a622e6368696c645f656469746f72733f746869732e7468656d652e6765744368696c64456469746f72486f6c64657228293a746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e726f775f686f6c6465722e617070656e644368696c642864293b76617220663d746869732e6a736f6e656469746f722e637265617465456469746f7228652c7b6a736f6e656469746f723a746869732e6a736f6e656469746f722c736368656d613a632c636f6e7461696e65723a642c706174683a746869732e706174682b222e222b612c706172656e743a746869732c72657175697265643a21307d293b72657475726e20662e7072654275696c6428292c662e6275696c6428292c662e706f73744275696c6428292c662e7469746c655f636f6e74726f6c737c7c28662e61727261795f636f6e74726f6c733d746869732e7468656d652e676574427574746f6e486f6c64657228292c642e617070656e644368696c6428662e61727261795f636f6e74726f6c7329292c667d2c64657374726f793a66756e6374696f6e28297b746869732e656d707479282130292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e726f775f686f6c6465722626746869732e726f775f686f6c6465722e706172656e744e6f64652626746869732e726f775f686f6c6465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e726f775f686f6c646572292c746869732e636f6e74726f6c732626746869732e636f6e74726f6c732e706172656e744e6f64652626746869732e636f6e74726f6c732e706172656e744e6f64652e72656d6f76654368696c6428746869732e636f6e74726f6c73292c746869732e70616e656c2626746869732e70616e656c2e706172656e744e6f64652626746869732e70616e656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e70616e656c292c746869732e726f77733d746869732e726f775f63616368653d746869732e7469746c653d746869732e6465736372697074696f6e3d746869732e726f775f686f6c6465723d746869732e70616e656c3d746869732e636f6e74726f6c733d6e756c6c2c746869732e5f737570657228297d2c656d7074793a66756e6374696f6e2861297b696628746869732e726f7773297b76617220623d746869733b6428746869732e726f77732c66756e6374696f6e28632c64297b61262628642e7461622626642e7461622e706172656e744e6f64652626642e7461622e706172656e744e6f64652e72656d6f76654368696c6428642e746162292c622e64657374726f79526f7728642c2130292c622e726f775f63616368655b635d3d6e756c6c292c622e726f77735b635d3d6e756c6c7d292c622e726f77733d5b5d2c61262628622e726f775f63616368653d5b5d297d7d2c64657374726f79526f773a66756e6374696f6e28612c62297b76617220633d612e636f6e7461696e65723b623f28612e64657374726f7928292c632e706172656e744e6f64652626632e706172656e744e6f64652e72656d6f76654368696c642863292c612e7461622626612e7461622e706172656e744e6f64652626612e7461622e706172656e744e6f64652e72656d6f76654368696c6428612e74616229293a28612e746162262628612e7461622e7374796c652e646973706c61793d226e6f6e6522292c632e7374796c652e646973706c61793d226e6f6e65222c612e756e72656769737465722829297d2c6765744d61783a66756e6374696f6e28297b72657475726e2041727261792e6973417272617928746869732e736368656d612e6974656d73292626746869732e736368656d612e6164646974696f6e616c4974656d733d3d3d21313f4d6174682e6d696e28746869732e736368656d612e6974656d732e6c656e6774682c746869732e736368656d612e6d61784974656d737c7c312f30293a746869732e736368656d612e6d61784974656d737c7c312f307d2c72656672657368546162733a66756e6374696f6e2861297b76617220623d746869733b6428746869732e726f77732c66756e6374696f6e28632c64297b642e746162262628613f642e7461625f746578742e74657874436f6e74656e743d642e6765744865616465725465787428293a642e7461623d3d3d622e6163746976655f7461623f28622e7468656d652e6d61726b54616241637469766528642e746162292c642e636f6e7461696e65722e7374796c652e646973706c61793d2222293a28622e7468656d652e6d61726b546162496e61637469766528642e746162292c642e636f6e7461696e65722e7374796c652e646973706c61793d226e6f6e652229297d297d2c73657456616c75653a66756e6374696f6e28612c62297b0a2f2f205570646174652074686520617272617927732076616c75652c20616464696e672f72656d6f76696e6720726f7773207768656e206e65636573736172790a613d617c7c5b5d2c41727261792e697341727261792861297c7c28613d5b615d293b76617220633d4a534f4e2e737472696e676966792861293b69662863213d3d746869732e73657269616c697a6564297b0a2f2f204d616b6520737572652076616c756520686173206265747765656e206d696e4974656d7320616e64206d61784974656d73206974656d7320696e2069740a696628746869732e736368656d612e6d696e4974656d7329666f72283b612e6c656e6774683c746869732e736368656d612e6d696e4974656d733b29612e7075736828746869732e6765744974656d496e666f28612e6c656e677468295b2264656661756c74225d293b746869732e6765744d617828292626612e6c656e6774683e746869732e6765744d61782829262628613d612e736c69636528302c746869732e6765744d6178282929293b76617220653d746869733b6428612c66756e6374696f6e28612c63297b652e726f77735b615d3f0a2f2f20544f444f3a20646f6e2774207365742074686520726f7727732076616c7565206966206974206861736e2774206368616e6765640a652e726f77735b615d2e73657456616c756528632c62293a652e726f775f63616368655b615d3f28652e726f77735b615d3d652e726f775f63616368655b615d2c652e726f77735b615d2e73657456616c756528632c62292c652e726f77735b615d2e636f6e7461696e65722e7374796c652e646973706c61793d22222c652e726f77735b615d2e746162262628652e726f77735b615d2e7461622e7374796c652e646973706c61793d2222292c652e726f77735b615d2e72656769737465722829293a652e616464526f7728632c62297d293b666f722876617220663d612e6c656e6774683b663c652e726f77732e6c656e6774683b662b2b29652e64657374726f79526f7728652e726f77735b665d292c652e726f77735b665d3d6e756c6c3b652e726f77733d652e726f77732e736c69636528302c612e6c656e677468293b0a2f2f205365742074686520616374697665207461620a76617220673d6e756c6c3b6428652e726f77732c66756e6374696f6e28612c62297b696628622e7461623d3d3d652e6163746976655f7461622972657475726e20673d622e7461622c21317d292c21672626652e726f77732e6c656e677468262628673d652e726f77735b305d2e746162292c652e6163746976655f7461623d672c652e7265667265736856616c75652862292c652e7265667265736854616273282130292c652e726566726573685461627328292c652e6f6e4368616e676528297d7d2c7265667265736856616c75653a66756e6374696f6e2861297b76617220623d746869732c633d746869732e76616c75653f746869732e76616c75652e6c656e6774683a303b696628746869732e76616c75653d5b5d2c6428746869732e726f77732c66756e6374696f6e28612c63297b0a2f2f20476574207468652076616c756520666f72207468697320656469746f720a622e76616c75655b615d3d632e67657456616c756528297d292c63213d3d746869732e76616c75652e6c656e6774687c7c61297b0a2f2f2049662077652063757272656e746c792068617665206d696e4974656d73206974656d7320696e207468652061727261790a76617220653d746869732e736368656d612e6d696e4974656d732626746869732e736368656d612e6d696e4974656d733e3d746869732e726f77732e6c656e6774683b6428746869732e726f77732c66756e6374696f6e28612c63297b0a2f2f204869646520746865206d6f766520646f776e20627574746f6e20666f7220746865206c61737420726f770a632e6d6f7665646f776e5f627574746f6e262628613d3d3d622e726f77732e6c656e6774682d313f632e6d6f7665646f776e5f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a632e6d6f7665646f776e5f627574746f6e2e7374796c652e646973706c61793d2222292c0a2f2f2048696465207468652064656c65746520627574746f6e2069662077652068617665206d696e4974656d73206974656d730a632e64656c6574655f627574746f6e262628653f632e64656c6574655f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a632e64656c6574655f627574746f6e2e7374796c652e646973706c61793d2222292c0a2f2f20476574207468652076616c756520666f72207468697320656469746f720a622e76616c75655b615d3d632e67657456616c756528297d293b76617220663d21313b746869732e76616c75652e6c656e6774683f313d3d3d746869732e76616c75652e6c656e6774683f28746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e65222c0a2f2f20496620746865726520617265206d696e4974656d73206974656d7320696e207468652061727261792c206f7220636f6e6669677572656420746f2068696465207468652064656c6574655f6c6173745f726f7720627574746f6e2c2068696465207468652064656c65746520627574746f6e2062656e656174682074686520726f77730a657c7c746869732e686964655f64656c6574655f6c6173745f726f775f627574746f6e733f746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d22222c663d213029293a28657c7c746869732e686964655f64656c6574655f6c6173745f726f775f627574746f6e733f746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d22222c663d2130292c657c7c746869732e686964655f64656c6574655f616c6c5f726f77735f627574746f6e733f746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d22222c663d213029293a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522292c0a2f2f20496620746865726520617265206d61784974656d7320696e207468652061727261792c2068696465207468652061646420627574746f6e2062656e656174682074686520726f77730a746869732e6765744d617828292626746869732e6765744d617828293c3d746869732e726f77732e6c656e6774687c7c746869732e686964655f6164645f627574746f6e3f746869732e6164645f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e6164645f726f775f627574746f6e2e7374796c652e646973706c61793d22222c663d2130292c21746869732e636f6c6c61707365642626663f746869732e636f6e74726f6c732e7374796c652e646973706c61793d22696e6c696e652d626c6f636b223a746869732e636f6e74726f6c732e7374796c652e646973706c61793d226e6f6e65227d7d2c616464526f773a66756e6374696f6e28612c62297b76617220633d746869732c653d746869732e726f77732e6c656e6774683b632e726f77735b655d3d746869732e676574456c656d656e74456469746f722865292c632e726f775f63616368655b655d3d632e726f77735b655d2c632e746162735f686f6c646572262628632e726f77735b655d2e7461625f746578743d646f63756d656e742e637265617465456c656d656e7428227370616e22292c632e726f77735b655d2e7461625f746578742e74657874436f6e74656e743d632e726f77735b655d2e6765744865616465725465787428292c632e726f77735b655d2e7461623d632e7468656d652e67657454616228632e726f77735b655d2e7461625f74657874292c632e726f77735b655d2e7461622e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b632e6163746976655f7461623d632e726f77735b655d2e7461622c632e726566726573685461627328292c612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28297d292c632e7468656d652e61646454616228632e746162735f686f6c6465722c632e726f77735b655d2e74616229293b76617220663d632e726f77735b655d2e7469746c655f636f6e74726f6c737c7c632e726f77735b655d2e61727261795f636f6e74726f6c733b0a2f2f20427574746f6e7320746f2064656c65746520726f772c206d6f766520726f772075702c20616e64206d6f766520726f7720646f776e0a632e686964655f64656c6574655f627574746f6e737c7c28632e726f77735b655d2e64656c6574655f627574746f6e3d746869732e676574427574746f6e28632e6765744974656d5469746c6528292c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f726f775f7469746c65222c5b632e6765744974656d5469746c6528295d29292c632e726f77735b655d2e64656c6574655f627574746f6e2e636c6173734e616d652b3d222064656c657465222c632e726f77735b655d2e64656c6574655f627574746f6e2e7365744174747269627574652822646174612d69222c65292c632e726f77735b655d2e64656c6574655f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220623d312a746869732e6765744174747269627574652822646174612d6922292c653d632e67657456616c756528292c663d5b5d2c673d6e756c6c3b6428652c66756e6374696f6e28612c64297b0a2f2f20496620746865206f6e652077652772652064656c6574696e672069732074686520616374697665207461620a2f2f204d616b6520746865206e6578742074616220616374697665206966207468657265206973206f6e650a2f2f204e6f74653a20746865206e6578742074616220697320676f696e6720746f206265207468652063757272656e74207461622061667465722064656c6574696f6e0a72657475726e20613d3d3d623f766f696428632e726f77735b615d2e7461623d3d3d632e6163746976655f746162262628632e726f77735b612b315d3f673d632e726f77735b615d2e7461623a61262628673d632e726f77735b612d315d2e7461622929293a766f696420662e707573682864297d292c632e73657456616c75652866292c67262628632e6163746976655f7461623d672c632e72656672657368546162732829292c632e6f6e4368616e6765282130297d292c662626662e617070656e644368696c6428632e726f77735b655d2e64656c6574655f627574746f6e29292c65262621632e686964655f6d6f76655f627574746f6e73262628632e726f77735b655d2e6d6f766575705f627574746f6e3d746869732e676574427574746f6e2822222c226d6f76657570222c746869732e7472616e736c6174652822627574746f6e5f6d6f76655f75705f7469746c652229292c632e726f77735b655d2e6d6f766575705f627574746f6e2e636c6173734e616d652b3d22206d6f76657570222c632e726f77735b655d2e6d6f766575705f627574746f6e2e7365744174747269627574652822646174612d69222c65292c632e726f77735b655d2e6d6f766575705f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220623d312a746869732e6765744174747269627574652822646174612d6922293b6966282128623c3d3029297b76617220643d632e67657456616c756528292c653d645b622d315d3b645b622d315d3d645b625d2c645b625d3d652c632e73657456616c75652864292c632e6163746976655f7461623d632e726f77735b622d315d2e7461622c632e726566726573685461627328292c632e6f6e4368616e6765282130297d7d292c662626662e617070656e644368696c6428632e726f77735b655d2e6d6f766575705f627574746f6e29292c632e686964655f6d6f76655f627574746f6e737c7c28632e726f77735b655d2e6d6f7665646f776e5f627574746f6e3d746869732e676574427574746f6e2822222c226d6f7665646f776e222c746869732e7472616e736c6174652822627574746f6e5f6d6f76655f646f776e5f7469746c652229292c632e726f77735b655d2e6d6f7665646f776e5f627574746f6e2e636c6173734e616d652b3d22206d6f7665646f776e222c632e726f77735b655d2e6d6f7665646f776e5f627574746f6e2e7365744174747269627574652822646174612d69222c65292c632e726f77735b655d2e6d6f7665646f776e5f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220623d312a746869732e6765744174747269627574652822646174612d6922292c643d632e67657456616c756528293b6966282128623e3d642e6c656e6774682d3129297b76617220653d645b622b315d3b645b622b315d3d645b625d2c645b625d3d652c632e73657456616c75652864292c632e6163746976655f7461623d632e726f77735b622b315d2e7461622c632e726566726573685461627328292c632e6f6e4368616e6765282130297d7d292c662626662e617070656e644368696c6428632e726f77735b655d2e6d6f7665646f776e5f627574746f6e29292c612626632e726f77735b655d2e73657456616c756528612c62292c632e726566726573685461627328297d2c616464436f6e74726f6c733a66756e6374696f6e28297b76617220613d746869733b746869732e636f6c6c61707365643d21312c746869732e746f67676c655f627574746f6e3d746869732e676574427574746f6e2822222c22636f6c6c61707365222c746869732e7472616e736c6174652822627574746f6e5f636f6c6c617073652229292c746869732e7469746c655f636f6e74726f6c732e617070656e644368696c6428746869732e746f67676c655f627574746f6e293b76617220623d612e726f775f686f6c6465722e7374796c652e646973706c61792c633d612e636f6e74726f6c732e7374796c652e646973706c61793b746869732e746f67676c655f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2864297b642e70726576656e7444656661756c7428292c642e73746f7050726f7061676174696f6e28292c612e636f6c6c61707365643f28612e636f6c6c61707365643d21312c612e70616e656c262628612e70616e656c2e7374796c652e646973706c61793d2222292c612e726f775f686f6c6465722e7374796c652e646973706c61793d622c612e746162735f686f6c646572262628612e746162735f686f6c6465722e7374796c652e646973706c61793d2222292c612e636f6e74726f6c732e7374796c652e646973706c61793d632c612e736574427574746f6e5465787428746869732c22222c22636f6c6c61707365222c612e7472616e736c6174652822627574746f6e5f636f6c6c61707365222929293a28612e636f6c6c61707365643d21302c612e726f775f686f6c6465722e7374796c652e646973706c61793d226e6f6e65222c612e746162735f686f6c646572262628612e746162735f686f6c6465722e7374796c652e646973706c61793d226e6f6e6522292c612e636f6e74726f6c732e7374796c652e646973706c61793d226e6f6e65222c612e70616e656c262628612e70616e656c2e7374796c652e646973706c61793d226e6f6e6522292c612e736574427574746f6e5465787428746869732c22222c22657870616e64222c612e7472616e736c6174652822627574746f6e5f657870616e64222929297d292c0a2f2f2049662069742073686f756c6420737461727420636f6c6c61707365640a746869732e6f7074696f6e732e636f6c6c617073656426266528746869732e746f67676c655f627574746f6e2c22636c69636b22292c0a2f2f20436f6c6c6170736520627574746f6e2064697361626c65640a746869732e736368656d612e6f7074696f6e73262622756e646566696e656422213d747970656f6620746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c617073653f746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522293a746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522292c0a2f2f2041646420226e657720726f772220616e64202264656c657465206c6173742220627574746f6e732062656c6f7720656469746f720a746869732e6164645f726f775f627574746f6e3d746869732e676574427574746f6e28746869732e6765744974656d5469746c6528292c22616464222c746869732e7472616e736c6174652822627574746f6e5f6164645f726f775f7469746c65222c5b746869732e6765744974656d5469746c6528295d29292c746869732e6164645f726f775f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28293b76617220633d612e726f77732e6c656e6774683b612e726f775f63616368655b635d3f28612e726f77735b635d3d612e726f775f63616368655b635d2c612e726f77735b635d2e73657456616c756528612e726f77735b635d2e67657444656661756c7428292c2130292c612e726f77735b635d2e636f6e7461696e65722e7374796c652e646973706c61793d22222c612e726f77735b635d2e746162262628612e726f77735b635d2e7461622e7374796c652e646973706c61793d2222292c612e726f77735b635d2e72656769737465722829293a612e616464526f7728292c612e6163746976655f7461623d612e726f77735b635d2e7461622c612e726566726573685461627328292c612e7265667265736856616c756528292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e6164645f726f775f627574746f6e292c746869732e64656c6574655f6c6173745f726f775f627574746f6e3d746869732e676574427574746f6e28746869732e7472616e736c6174652822627574746f6e5f64656c6574655f6c617374222c5b746869732e6765744974656d5469746c6528295d292c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f6c6173745f7469746c65222c5b746869732e6765744974656d5469746c6528295d29292c746869732e64656c6574655f6c6173745f726f775f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28293b76617220633d612e67657456616c756528292c643d6e756c6c3b612e726f77732e6c656e6774683e312626612e726f77735b612e726f77732e6c656e6774682d315d2e7461623d3d3d612e6163746976655f746162262628643d612e726f77735b612e726f77732e6c656e6774682d325d2e746162292c632e706f7028292c612e73657456616c75652863292c64262628612e6163746976655f7461623d642c612e72656672657368546162732829292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e64656c6574655f6c6173745f726f775f627574746f6e292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e3d746869732e676574427574746f6e28746869732e7472616e736c6174652822627574746f6e5f64656c6574655f616c6c22292c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f616c6c5f7469746c652229292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e73657456616c7565285b5d292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e72656d6f76655f616c6c5f726f77735f627574746f6e292c612e74616273262628746869732e6164645f726f775f627574746f6e2e7374796c652e77696474683d2231303025222c746869732e6164645f726f775f627574746f6e2e7374796c652e74657874416c69676e3d226c656674222c746869732e6164645f726f775f627574746f6e2e7374796c652e6d617267696e426f74746f6d3d22337078222c746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e77696474683d2231303025222c746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e74657874416c69676e3d226c656674222c746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e6d617267696e426f74746f6d3d22337078222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e77696474683d2231303025222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e74657874416c69676e3d226c656674222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e6d617267696e426f74746f6d3d2233707822297d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b76617220623d746869732c633d5b5d2c653d5b5d3b0a2f2f2053686f77206572726f727320666f72207468697320656469746f720a6966286428612c66756e6374696f6e28612c64297b642e706174683d3d3d622e706174683f632e707573682864293a652e707573682864297d292c746869732e6572726f725f686f6c64657229696628632e6c656e677468297b746869732e6572726f725f686f6c6465722e696e6e657248544d4c3d22222c746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d22222c6428632c66756e6374696f6e28612c63297b622e6572726f725f686f6c6465722e617070656e644368696c6428622e7468656d652e6765744572726f724d65737361676528632e6d65737361676529297d297d656c736520746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d226e6f6e65223b0a2f2f2053686f77206572726f727320666f72206368696c6420656469746f72730a6428746869732e726f77732c66756e6374696f6e28612c62297b622e73686f7756616c69646174696f6e4572726f72732865297d297d7d292c662e64656661756c74732e656469746f72732e7461626c653d662e64656661756c74732e656469746f72732e61727261792e657874656e64287b72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e726567697374657228297d2c756e72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e726f777329666f722876617220613d303b613c746869732e726f77732e6c656e6774683b612b2b29746869732e726f77735b615d2e756e726567697374657228297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e204d6174682e6d6178284d6174682e6d696e2831322c746869732e7769647468292c33297d2c7072654275696c643a66756e6374696f6e28297b76617220613d746869732e6a736f6e656469746f722e657870616e645265667328746869732e736368656d612e6974656d737c7c7b7d293b746869732e6974656d5f7469746c653d612e7469746c657c7c22726f77222c746869732e6974656d5f64656661756c743d615b2264656661756c74225d7c7c6e756c6c2c746869732e6974656d5f6861735f6368696c645f656469746f72733d612e70726f706572746965737c7c612e6974656d732c746869732e77696474683d31322c746869732e5f737570657228297d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e7461626c653d746869732e7468656d652e6765745461626c6528292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7461626c65292c746869732e74686561643d746869732e7468656d652e6765745461626c654865616428292c746869732e7461626c652e617070656e644368696c6428746869732e7468656164292c746869732e6865616465725f726f773d746869732e7468656d652e6765745461626c65526f7728292c746869732e74686561642e617070656e644368696c6428746869732e6865616465725f726f77292c746869732e726f775f686f6c6465723d746869732e7468656d652e6765745461626c65426f647928292c746869732e7461626c652e617070656e644368696c6428746869732e726f775f686f6c646572293b0a2f2f2044657465726d696e65207468652064656661756c742076616c7565206f6620617272617920656c656d656e740a76617220623d746869732e676574456c656d656e74456469746f7228302c2130293b696628746869732e6974656d5f64656661756c743d622e67657444656661756c7428292c746869732e77696474683d622e6765744e756d436f6c756d6e7328292b322c746869732e6f7074696f6e732e636f6d706163743f28746869732e70616e656c3d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70616e656c29293a28746869732e7469746c653d746869732e7468656d652e67657448656164657228746869732e6765745469746c652829292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7469746c65292c746869732e7469746c655f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e7469746c652e617070656e644368696c6428746869732e7469746c655f636f6e74726f6c73292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e6765744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6465736372697074696f6e29292c746869732e70616e656c3d746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70616e656c292c746869732e6572726f725f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e70616e656c2e617070656e644368696c6428746869732e6572726f725f686f6c64657229292c746869732e70616e656c2e617070656e644368696c6428746869732e7461626c65292c746869732e636f6e74726f6c733d746869732e7468656d652e676574427574746f6e486f6c64657228292c746869732e70616e656c2e617070656e644368696c6428746869732e636f6e74726f6c73292c746869732e6974656d5f6861735f6368696c645f656469746f727329666f722876617220633d622e6765744368696c64456469746f727328292c643d622e70726f70657274795f6f726465727c7c4f626a6563742e6b6579732863292c653d303b653c642e6c656e6774683b652b2b297b76617220663d612e7468656d652e6765745461626c6548656164657243656c6c28635b645b655d5d2e6765745469746c652829293b635b645b655d5d2e6f7074696f6e732e68696464656e262628662e7374796c652e646973706c61793d226e6f6e6522292c612e6865616465725f726f772e617070656e644368696c642866297d656c736520612e6865616465725f726f772e617070656e644368696c6428612e7468656d652e6765745461626c6548656164657243656c6c28746869732e6974656d5f7469746c6529293b622e64657374726f7928292c746869732e726f775f686f6c6465722e696e6e657248544d4c3d22222c0a2f2f20526f7720436f6e74726f6c7320636f6c756d6e0a746869732e636f6e74726f6c735f6865616465725f63656c6c3d612e7468656d652e6765745461626c6548656164657243656c6c28222022292c612e6865616465725f726f772e617070656e644368696c6428746869732e636f6e74726f6c735f6865616465725f63656c6c292c0a2f2f2041646420636f6e74726f6c730a746869732e616464436f6e74726f6c7328297d2c6f6e4368696c64456469746f724368616e67653a66756e6374696f6e2861297b746869732e7265667265736856616c756528292c746869732e5f737570657228297d2c6765744974656d44656661756c743a66756e6374696f6e28297b72657475726e2063287b7d2c7b2264656661756c74223a746869732e6974656d5f64656661756c747d295b2264656661756c74225d7d2c6765744974656d5469746c653a66756e6374696f6e28297b72657475726e20746869732e6974656d5f7469746c657d2c676574456c656d656e74456469746f723a66756e6374696f6e28612c62297b76617220643d63287b7d2c746869732e736368656d612e6974656d73292c653d746869732e6a736f6e656469746f722e676574456469746f72436c61737328642c746869732e6a736f6e656469746f72292c663d746869732e726f775f686f6c6465722e617070656e644368696c6428746869732e7468656d652e6765745461626c65526f772829292c673d663b746869732e6974656d5f6861735f6368696c645f656469746f72737c7c28673d746869732e7468656d652e6765745461626c6543656c6c28292c662e617070656e644368696c64286729293b76617220683d746869732e6a736f6e656469746f722e637265617465456469746f7228652c7b6a736f6e656469746f723a746869732e6a736f6e656469746f722c736368656d613a642c636f6e7461696e65723a672c706174683a746869732e706174682b222e222b612c706172656e743a746869732c636f6d706163743a21302c7461626c655f726f773a21307d293b72657475726e20682e7072654275696c6428292c627c7c28682e6275696c6428292c682e706f73744275696c6428292c682e636f6e74726f6c735f63656c6c3d662e617070656e644368696c6428746869732e7468656d652e6765745461626c6543656c6c2829292c682e726f773d662c682e7461626c655f636f6e74726f6c733d746869732e7468656d652e676574427574746f6e486f6c64657228292c682e636f6e74726f6c735f63656c6c2e617070656e644368696c6428682e7461626c655f636f6e74726f6c73292c682e7461626c655f636f6e74726f6c732e7374796c652e6d617267696e3d302c682e7461626c655f636f6e74726f6c732e7374796c652e70616464696e673d30292c687d2c64657374726f793a66756e6374696f6e28297b746869732e696e6e657248544d4c3d22222c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e726f775f686f6c6465722626746869732e726f775f686f6c6465722e706172656e744e6f64652626746869732e726f775f686f6c6465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e726f775f686f6c646572292c746869732e7461626c652626746869732e7461626c652e706172656e744e6f64652626746869732e7461626c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7461626c65292c746869732e70616e656c2626746869732e70616e656c2e706172656e744e6f64652626746869732e70616e656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e70616e656c292c746869732e726f77733d746869732e7469746c653d746869732e6465736372697074696f6e3d746869732e726f775f686f6c6465723d746869732e7461626c653d746869732e70616e656c3d6e756c6c2c746869732e5f737570657228297d2c73657456616c75653a66756e6374696f6e28612c62297b0a2f2f204d616b6520737572652076616c756520686173206265747765656e206d696e4974656d7320616e64206d61784974656d73206974656d7320696e2069740a6966280a2f2f205570646174652074686520617272617927732076616c75652c20616464696e672f72656d6f76696e6720726f7773207768656e206e65636573736172790a613d617c7c5b5d2c746869732e736368656d612e6d696e4974656d7329666f72283b612e6c656e6774683c746869732e736368656d612e6d696e4974656d733b29612e7075736828746869732e6765744974656d44656661756c742829293b746869732e736368656d612e6d61784974656d732626612e6c656e6774683e746869732e736368656d612e6d61784974656d73262628613d612e736c69636528302c746869732e736368656d612e6d61784974656d7329293b76617220633d4a534f4e2e737472696e676966792861293b69662863213d3d746869732e73657269616c697a6564297b76617220653d21312c663d746869733b6428612c66756e6374696f6e28612c62297b662e726f77735b615d3f0a2f2f20544f444f3a20646f6e2774207365742074686520726f7727732076616c7565206966206974206861736e2774206368616e6765640a662e726f77735b615d2e73657456616c75652862293a28662e616464526f772862292c653d2130297d293b666f722876617220673d612e6c656e6774683b673c662e726f77732e6c656e6774683b672b2b297b76617220683d662e726f77735b675d2e636f6e7461696e65723b662e6974656d5f6861735f6368696c645f656469746f72737c7c662e726f77735b675d2e726f772e706172656e744e6f64652e72656d6f76654368696c6428662e726f77735b675d2e726f77292c662e726f77735b675d2e64657374726f7928292c682e706172656e744e6f64652626682e706172656e744e6f64652e72656d6f76654368696c642868292c662e726f77735b675d3d6e756c6c2c653d21307d662e726f77733d662e726f77732e736c69636528302c612e6c656e677468292c662e7265667265736856616c756528292c28657c7c62292626662e72656672657368526f77427574746f6e7328292c662e6f6e4368616e676528297d7d2c72656672657368526f77427574746f6e733a66756e6374696f6e28297b76617220613d746869732c623d746869732e736368656d612e6d696e4974656d732626746869732e736368656d612e6d696e4974656d733e3d746869732e726f77732e6c656e6774682c633d21313b6428746869732e726f77732c66756e6374696f6e28642c65297b0a2f2f204869646520746865206d6f766520646f776e20627574746f6e20666f7220746865206c61737420726f770a652e6d6f7665646f776e5f627574746f6e262628643d3d3d612e726f77732e6c656e6774682d313f652e6d6f7665646f776e5f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28633d21302c652e6d6f7665646f776e5f627574746f6e2e7374796c652e646973706c61793d222229292c0a2f2f2048696465207468652064656c65746520627574746f6e2069662077652068617665206d696e4974656d73206974656d730a652e64656c6574655f627574746f6e262628623f652e64656c6574655f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28633d21302c652e64656c6574655f627574746f6e2e7374796c652e646973706c61793d222229292c652e6d6f766575705f627574746f6e262628633d2130297d292c0a2f2f2053686f772f6869646520636f6e74726f6c7320636f6c756d6e20696e207461626c650a6428746869732e726f77732c66756e6374696f6e28612c62297b633f622e636f6e74726f6c735f63656c6c2e7374796c652e646973706c61793d22223a622e636f6e74726f6c735f63656c6c2e7374796c652e646973706c61793d226e6f6e65227d292c633f746869732e636f6e74726f6c735f6865616465725f63656c6c2e7374796c652e646973706c61793d22223a746869732e636f6e74726f6c735f6865616465725f63656c6c2e7374796c652e646973706c61793d226e6f6e65223b76617220653d21313b746869732e76616c75652e6c656e6774683f313d3d3d746869732e76616c75652e6c656e6774683f28746869732e7461626c652e7374796c652e646973706c61793d22222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e65222c0a2f2f20496620746865726520617265206d696e4974656d73206974656d7320696e207468652061727261792c206f7220636f6e6669677572656420746f2068696465207468652064656c6574655f6c6173745f726f7720627574746f6e2c2068696465207468652064656c65746520627574746f6e2062656e656174682074686520726f77730a627c7c746869732e686964655f64656c6574655f6c6173745f726f775f627574746f6e733f746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d22222c653d213029293a28746869732e7461626c652e7374796c652e646973706c61793d22222c627c7c746869732e686964655f64656c6574655f6c6173745f726f775f627574746f6e733f746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d22222c653d2130292c627c7c746869732e686964655f64656c6574655f616c6c5f726f77735f627574746f6e733f746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d22222c653d213029293a28746869732e64656c6574655f6c6173745f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65222c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e7374796c652e646973706c61793d226e6f6e65222c746869732e7461626c652e7374796c652e646973706c61793d226e6f6e6522292c0a2f2f20496620746865726520617265206d61784974656d7320696e207468652061727261792c2068696465207468652061646420627574746f6e2062656e656174682074686520726f77730a746869732e736368656d612e6d61784974656d732626746869732e736368656d612e6d61784974656d733c3d746869732e726f77732e6c656e6774687c7c746869732e686964655f6164645f627574746f6e3f746869732e6164645f726f775f627574746f6e2e7374796c652e646973706c61793d226e6f6e65223a28746869732e6164645f726f775f627574746f6e2e7374796c652e646973706c61793d22222c653d2130292c653f746869732e636f6e74726f6c732e7374796c652e646973706c61793d22223a746869732e636f6e74726f6c732e7374796c652e646973706c61793d226e6f6e65227d2c7265667265736856616c75653a66756e6374696f6e28297b76617220613d746869733b746869732e76616c75653d5b5d2c6428746869732e726f77732c66756e6374696f6e28622c63297b0a2f2f20476574207468652076616c756520666f72207468697320656469746f720a612e76616c75655b625d3d632e67657456616c756528297d292c746869732e73657269616c697a65643d4a534f4e2e737472696e6769667928746869732e76616c7565297d2c616464526f773a66756e6374696f6e2861297b76617220623d746869732c633d746869732e726f77732e6c656e6774683b622e726f77735b635d3d746869732e676574456c656d656e74456469746f722863293b76617220653d622e726f77735b635d2e7461626c655f636f6e74726f6c733b0a2f2f20427574746f6e7320746f2064656c65746520726f772c206d6f766520726f772075702c20616e64206d6f766520726f7720646f776e0a746869732e686964655f64656c6574655f627574746f6e737c7c28622e726f77735b635d2e64656c6574655f627574746f6e3d746869732e676574427574746f6e2822222c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f726f775f7469746c655f73686f72742229292c622e726f77735b635d2e64656c6574655f627574746f6e2e636c6173734e616d652b3d222064656c657465222c622e726f77735b635d2e64656c6574655f627574746f6e2e7365744174747269627574652822646174612d69222c63292c622e726f77735b635d2e64656c6574655f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220633d312a746869732e6765744174747269627574652822646174612d6922292c653d622e67657456616c756528292c663d5b5d3b6428652c66756e6374696f6e28612c62297b61213d3d6326262f2f204966207468697320697320746865206f6e652077652772652064656c6574696e670a662e707573682862297d292c622e73657456616c75652866292c622e6f6e4368616e6765282130297d292c652e617070656e644368696c6428622e726f77735b635d2e64656c6574655f627574746f6e29292c63262621746869732e686964655f6d6f76655f627574746f6e73262628622e726f77735b635d2e6d6f766575705f627574746f6e3d746869732e676574427574746f6e2822222c226d6f76657570222c746869732e7472616e736c6174652822627574746f6e5f6d6f76655f75705f7469746c652229292c622e726f77735b635d2e6d6f766575705f627574746f6e2e636c6173734e616d652b3d22206d6f76657570222c622e726f77735b635d2e6d6f766575705f627574746f6e2e7365744174747269627574652822646174612d69222c63292c622e726f77735b635d2e6d6f766575705f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220633d312a746869732e6765744174747269627574652822646174612d6922293b6966282128633c3d3029297b76617220643d622e67657456616c756528292c653d645b632d315d3b645b632d315d3d645b635d2c645b635d3d652c622e73657456616c75652864292c622e6f6e4368616e6765282130297d7d292c652e617070656e644368696c6428622e726f77735b635d2e6d6f766575705f627574746f6e29292c746869732e686964655f6d6f76655f627574746f6e737c7c28622e726f77735b635d2e6d6f7665646f776e5f627574746f6e3d746869732e676574427574746f6e2822222c226d6f7665646f776e222c746869732e7472616e736c6174652822627574746f6e5f6d6f76655f646f776e5f7469746c652229292c622e726f77735b635d2e6d6f7665646f776e5f627574746f6e2e636c6173734e616d652b3d22206d6f7665646f776e222c622e726f77735b635d2e6d6f7665646f776e5f627574746f6e2e7365744174747269627574652822646174612d69222c63292c622e726f77735b635d2e6d6f7665646f776e5f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2861297b612e70726576656e7444656661756c7428292c612e73746f7050726f7061676174696f6e28293b76617220633d312a746869732e6765744174747269627574652822646174612d6922292c643d622e67657456616c756528293b6966282128633e3d642e6c656e6774682d3129297b76617220653d645b632b315d3b645b632b315d3d645b635d2c645b635d3d652c622e73657456616c75652864292c622e6f6e4368616e6765282130297d7d292c652e617070656e644368696c6428622e726f77735b635d2e6d6f7665646f776e5f627574746f6e29292c612626622e726f77735b635d2e73657456616c75652861297d2c616464436f6e74726f6c733a66756e6374696f6e28297b76617220613d746869733b746869732e636f6c6c61707365643d21312c746869732e746f67676c655f627574746f6e3d746869732e676574427574746f6e2822222c22636f6c6c61707365222c746869732e7472616e736c6174652822627574746f6e5f636f6c6c617073652229292c746869732e7469746c655f636f6e74726f6c73262628746869732e7469746c655f636f6e74726f6c732e617070656e644368696c6428746869732e746f67676c655f627574746f6e292c746869732e746f67676c655f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e636f6c6c61707365643f28612e636f6c6c61707365643d21312c612e70616e656c2e7374796c652e646973706c61793d22222c612e736574427574746f6e5465787428746869732c22222c22636f6c6c61707365222c612e7472616e736c6174652822627574746f6e5f636f6c6c61707365222929293a28612e636f6c6c61707365643d21302c612e70616e656c2e7374796c652e646973706c61793d226e6f6e65222c612e736574427574746f6e5465787428746869732c22222c22657870616e64222c612e7472616e736c6174652822627574746f6e5f657870616e64222929297d292c0a2f2f2049662069742073686f756c6420737461727420636f6c6c61707365640a746869732e6f7074696f6e732e636f6c6c617073656426266528746869732e746f67676c655f627574746f6e2c22636c69636b22292c0a2f2f20436f6c6c6170736520627574746f6e2064697361626c65640a746869732e736368656d612e6f7074696f6e73262622756e646566696e656422213d747970656f6620746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c617073653f746869732e736368656d612e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e6522293a746869732e6a736f6e656469746f722e6f7074696f6e732e64697361626c655f636f6c6c61707365262628746869732e746f67676c655f627574746f6e2e7374796c652e646973706c61793d226e6f6e652229292c0a2f2f2041646420226e657720726f772220616e64202264656c657465206c6173742220627574746f6e732062656c6f7720656469746f720a746869732e6164645f726f775f627574746f6e3d746869732e676574427574746f6e28746869732e6765744974656d5469746c6528292c22616464222c746869732e7472616e736c6174652822627574746f6e5f6164645f726f775f7469746c65222c5b746869732e6765744974656d5469746c6528295d29292c746869732e6164645f726f775f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e616464526f7728292c612e7265667265736856616c756528292c612e72656672657368526f77427574746f6e7328292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e6164645f726f775f627574746f6e292c746869732e64656c6574655f6c6173745f726f775f627574746f6e3d746869732e676574427574746f6e28746869732e7472616e736c6174652822627574746f6e5f64656c6574655f6c617374222c5b746869732e6765744974656d5469746c6528295d292c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f6c6173745f7469746c65222c5b746869732e6765744974656d5469746c6528295d29292c746869732e64656c6574655f6c6173745f726f775f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28293b76617220633d612e67657456616c756528293b632e706f7028292c612e73657456616c75652863292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e64656c6574655f6c6173745f726f775f627574746f6e292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e3d746869732e676574427574746f6e28746869732e7472616e736c6174652822627574746f6e5f64656c6574655f616c6c22292c2264656c657465222c746869732e7472616e736c6174652822627574746f6e5f64656c6574655f616c6c5f7469746c652229292c746869732e72656d6f76655f616c6c5f726f77735f627574746f6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e73657456616c7565285b5d292c612e6f6e4368616e6765282130297d292c612e636f6e74726f6c732e617070656e644368696c6428746869732e72656d6f76655f616c6c5f726f77735f627574746f6e297d7d292c0a2f2f204d756c7469706c6520456469746f722028666f72207768656e2060747970656020697320616e206172726179290a662e64656661756c74732e656469746f72732e6d756c7469706c653d662e4162737472616374456469746f722e657874656e64287b72656769737465723a66756e6374696f6e28297b696628746869732e656469746f7273297b666f722876617220613d303b613c746869732e656469746f72732e6c656e6774683b612b2b29746869732e656469746f72735b615d2626746869732e656469746f72735b615d2e756e726567697374657228293b746869732e656469746f72735b746869732e747970655d2626746869732e656469746f72735b746869732e747970655d2e726567697374657228297d746869732e5f737570657228297d2c756e72656769737465723a66756e6374696f6e28297b696628746869732e5f737570657228292c746869732e656469746f727329666f722876617220613d303b613c746869732e656469746f72732e6c656e6774683b612b2b29746869732e656469746f72735b615d2626746869732e656469746f72735b615d2e756e726567697374657228297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20746869732e656469746f72735b746869732e747970655d3f4d6174682e6d617828746869732e656469746f72735b746869732e747970655d2e6765744e756d436f6c756d6e7328292c34293a347d2c656e61626c653a66756e6374696f6e28297b696628746869732e656469746f727329666f722876617220613d303b613c746869732e656469746f72732e6c656e6774683b612b2b29746869732e656469746f72735b615d2626746869732e656469746f72735b615d2e656e61626c6528293b746869732e73776974636865722e64697361626c65643d21312c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b696628746869732e656469746f727329666f722876617220613d303b613c746869732e656469746f72732e6c656e6774683b612b2b29746869732e656469746f72735b615d2626746869732e656469746f72735b615d2e64697361626c6528293b746869732e73776974636865722e64697361626c65643d21302c746869732e5f737570657228297d2c737769746368456469746f723a66756e6374696f6e2861297b76617220623d746869733b746869732e656469746f72735b615d7c7c746869732e6275696c644368696c64456469746f722861293b76617220633d622e67657456616c756528293b622e747970653d612c622e726567697374657228292c6428622e656469746f72732c66756e6374696f6e28612c64297b64262628622e747970653d3d3d613f28622e6b6565705f76616c7565732626642e73657456616c756528632c2130292c642e636f6e7461696e65722e7374796c652e646973706c61793d2222293a642e636f6e7461696e65722e7374796c652e646973706c61793d226e6f6e6522297d292c622e7265667265736856616c756528292c622e726566726573684865616465725465787428297d2c6275696c644368696c64456469746f723a66756e6374696f6e2861297b76617220623d746869732c643d746869732e74797065735b615d2c653d622e7468656d652e6765744368696c64456469746f72486f6c64657228293b622e656469746f725f686f6c6465722e617070656e644368696c642865293b76617220663b22737472696e67223d3d747970656f6620643f28663d63287b7d2c622e736368656d61292c662e747970653d64293a28663d63287b7d2c622e736368656d612c64292c663d622e6a736f6e656469746f722e657870616e64526566732866292c0a2f2f204966207765206e65656420746f206d657267652060726571756972656460206172726179730a642e7265717569726564262641727261792e6973417272617928642e7265717569726564292626622e736368656d612e7265717569726564262641727261792e6973417272617928622e736368656d612e726571756972656429262628662e72657175697265643d622e736368656d612e72657175697265642e636f6e63617428642e72657175697265642929293b76617220673d622e6a736f6e656469746f722e676574456469746f72436c6173732866293b622e656469746f72735b615d3d622e6a736f6e656469746f722e637265617465456469746f7228672c7b6a736f6e656469746f723a622e6a736f6e656469746f722c736368656d613a662c636f6e7461696e65723a652c706174683a622e706174682c706172656e743a622c72657175697265643a21307d292c622e656469746f72735b615d2e7072654275696c6428292c622e656469746f72735b615d2e6275696c6428292c622e656469746f72735b615d2e706f73744275696c6428292c622e656469746f72735b615d2e686561646572262628622e656469746f72735b615d2e6865616465722e7374796c652e646973706c61793d226e6f6e6522292c622e656469746f72735b615d2e6f7074696f6e3d622e73776974636865725f6f7074696f6e735b615d2c652e6164644576656e744c697374656e657228226368616e67655f6865616465725f74657874222c66756e6374696f6e28297b622e726566726573684865616465725465787428297d292c61213d3d622e74797065262628652e7374796c652e646973706c61793d226e6f6e6522297d2c7072654275696c643a66756e6374696f6e28297b696628746869732e74797065733d5b5d2c746869732e747970653d302c746869732e656469746f72733d5b5d2c746869732e76616c696461746f72733d5b5d2c746869732e6b6565705f76616c7565733d21302c22756e646566696e656422213d747970656f6620746869732e6a736f6e656469746f722e6f7074696f6e732e6b6565705f6f6e656f665f76616c756573262628746869732e6b6565705f76616c7565733d746869732e6a736f6e656469746f722e6f7074696f6e732e6b6565705f6f6e656f665f76616c756573292c22756e646566696e656422213d747970656f6620746869732e6f7074696f6e732e6b6565705f6f6e656f665f76616c756573262628746869732e6b6565705f76616c7565733d746869732e6f7074696f6e732e6b6565705f6f6e656f665f76616c756573292c746869732e736368656d612e6f6e654f6629746869732e6f6e654f663d21302c746869732e74797065733d746869732e736368656d612e6f6e654f662c64656c65746520746869732e736368656d612e6f6e654f663b656c736520696628746869732e736368656d612e616e794f6629746869732e616e794f663d21302c746869732e74797065733d746869732e736368656d612e616e794f662c64656c65746520746869732e736368656d612e616e794f663b656c73657b696628746869732e736368656d612e74797065262622616e7922213d3d746869732e736368656d612e747970652941727261792e6973417272617928746869732e736368656d612e74797065293f746869732e74797065733d746869732e736368656d612e747970653a746869732e74797065733d5b746869732e736368656d612e747970655d3b656c73650a2f2f20496620616e79206f66207468657365207072696d69746976652074797065732061726520646973616c6c6f7765640a696628746869732e74797065733d5b22737472696e67222c226e756d626572222c22696e7465676572222c22626f6f6c65616e222c226f626a656374222c226172726179222c226e756c6c225d2c746869732e736368656d612e646973616c6c6f77297b76617220613d746869732e736368656d612e646973616c6c6f773b226f626a656374223d3d747970656f662061262641727261792e697341727261792861297c7c28613d5b615d293b76617220623d5b5d3b6428746869732e74797065732c66756e6374696f6e28632c64297b612e696e6465784f662864293d3d3d2d312626622e707573682864297d292c746869732e74797065733d627d64656c65746520746869732e736368656d612e747970657d746869732e646973706c61795f746578743d746869732e676574446973706c61795465787428746869732e7479706573297d2c6275696c643a66756e6374696f6e28297b76617220613d746869732c623d746869732e636f6e7461696e65723b746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c652829292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e686561646572292c746869732e73776974636865723d746869732e7468656d652e676574537769746368657228746869732e646973706c61795f74657874292c622e617070656e644368696c6428746869732e7377697463686572292c746869732e73776974636865722e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e737769746368456469746f7228612e646973706c61795f746578742e696e6465784f6628746869732e76616c756529292c612e6f6e4368616e6765282130297d292c746869732e656469746f725f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c622e617070656e644368696c6428746869732e656469746f725f686f6c646572293b76617220653d7b7d3b612e6a736f6e656469746f722e6f7074696f6e732e637573746f6d5f76616c696461746f7273262628652e637573746f6d5f76616c696461746f72733d612e6a736f6e656469746f722e6f7074696f6e732e637573746f6d5f76616c696461746f7273292c746869732e73776974636865725f6f7074696f6e733d746869732e7468656d652e67657453776974636865724f7074696f6e7328746869732e7377697463686572292c6428746869732e74797065732c66756e6374696f6e28622c64297b612e656469746f72735b625d3d21313b76617220673b22737472696e67223d3d747970656f6620643f28673d63287b7d2c612e736368656d61292c672e747970653d64293a28673d63287b7d2c612e736368656d612c64292c0a2f2f204966207765206e65656420746f206d657267652060726571756972656460206172726179730a642e7265717569726564262641727261792e6973417272617928642e7265717569726564292626612e736368656d612e7265717569726564262641727261792e6973417272617928612e736368656d612e726571756972656429262628672e72657175697265643d612e736368656d612e72657175697265642e636f6e63617428642e72657175697265642929292c612e76616c696461746f72735b625d3d6e657720662e56616c696461746f7228612e6a736f6e656469746f722c672c65297d292c746869732e737769746368456469746f722830297d2c6f6e4368696c64456469746f724368616e67653a66756e6374696f6e2861297b746869732e656469746f72735b746869732e747970655d262628746869732e7265667265736856616c756528292c746869732e72656672657368486561646572546578742829292c746869732e5f737570657228297d2c72656672657368486561646572546578743a66756e6374696f6e28297b76617220613d746869732e676574446973706c61795465787428746869732e7479706573293b6428746869732e73776974636865725f6f7074696f6e732c66756e6374696f6e28622c63297b632e74657874436f6e74656e743d615b625d7d297d2c7265667265736856616c75653a66756e6374696f6e28297b746869732e76616c75653d746869732e656469746f72735b746869732e747970655d2e67657456616c756528297d2c73657456616c75653a66756e6374696f6e28612c62297b0a2f2f2044657465726d696e6520747970652062792067657474696e6720746865206669727374206f6e6520746861742076616c6964617465730a76617220633d746869733b6428746869732e76616c696461746f72732c66756e6374696f6e28622c64297b69662821642e76616c69646174652861292e6c656e6774682972657475726e20632e747970653d622c632e73776974636865722e76616c75653d632e646973706c61795f746578745b625d2c21317d292c746869732e737769746368456469746f7228746869732e74797065292c746869732e656469746f72735b746869732e747970655d2e73657456616c756528612c62292c746869732e7265667265736856616c756528292c632e6f6e4368616e676528297d2c64657374726f793a66756e6374696f6e28297b6428746869732e656469746f72732c66756e6374696f6e28612c62297b622626622e64657374726f7928297d292c746869732e656469746f725f686f6c6465722626746869732e656469746f725f686f6c6465722e706172656e744e6f64652626746869732e656469746f725f686f6c6465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e656469746f725f686f6c646572292c746869732e73776974636865722626746869732e73776974636865722e706172656e744e6f64652626746869732e73776974636865722e706172656e744e6f64652e72656d6f76654368696c6428746869732e7377697463686572292c746869732e5f737570657228297d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b76617220623d746869733b0a2f2f206f6e654f6620616e6420616e794f66206572726f72207061746873206e65656420746f2072656d6f766520746865206f6e654f665b695d2070617274206265666f72652070617373696e6720746f206368696c6420656469746f72730a696628746869732e6f6e654f667c7c746869732e616e794f66297b76617220653d746869732e6f6e654f663f226f6e654f66223a22616e794f66223b6428746869732e656469746f72732c66756e6374696f6e28662c67297b69662867297b76617220683d622e706174682b222e222b652b225b222b662b225d222c693d5b5d3b6428612c66756e6374696f6e28612c64297b696628642e706174682e73756273747228302c682e6c656e677468293d3d3d68297b76617220653d63287b7d2c64293b652e706174683d622e706174682b652e706174682e73756273747228682e6c656e677468292c692e707573682865297d7d292c672e73686f7756616c69646174696f6e4572726f72732869297d7d297d656c7365206428746869732e656469746f72732c66756e6374696f6e28622c63297b632626632e73686f7756616c69646174696f6e4572726f72732861297d297d7d292c0a2f2f20456e756d20456469746f7220287573656420666f72206f626a6563747320616e6420617272617973207769746820656e756d6572617465642076616c756573290a662e64656661756c74732e656469746f72735b22656e756d225d3d662e4162737472616374456469746f722e657874656e64287b6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20347d2c6275696c643a66756e6374696f6e28297b746869732e636f6e7461696e65723b746869732e7469746c653d746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c652829292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7469746c65292c746869732e6f7074696f6e732e656e756d5f7469746c65733d746869732e6f7074696f6e732e656e756d5f7469746c65737c7c5b5d2c746869735b22656e756d225d3d746869732e736368656d615b22656e756d225d2c746869732e73656c65637465643d302c746869732e73656c6563745f6f7074696f6e733d5b5d2c746869732e68746d6c5f76616c7565733d5b5d3b666f722876617220613d746869732c623d303b623c746869735b22656e756d225d2e6c656e6774683b622b2b29746869732e73656c6563745f6f7074696f6e735b625d3d746869732e6f7074696f6e732e656e756d5f7469746c65735b625d7c7c2256616c756520222b28622b31292c746869732e68746d6c5f76616c7565735b625d3d746869732e67657448544d4c28746869735b22656e756d225d5b625d293b0a2f2f2053776974636865720a746869732e73776974636865723d746869732e7468656d652e676574537769746368657228746869732e73656c6563745f6f7074696f6e73292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e7377697463686572292c0a2f2f20446973706c617920617265610a746869732e646973706c61795f617265613d746869732e7468656d652e676574496e64656e74656450616e656c28292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e646973706c61795f61726561292c746869732e6f7074696f6e732e686964655f646973706c6179262628746869732e646973706c61795f617265612e7374796c652e646973706c61793d226e6f6e6522292c746869732e73776974636865722e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e28297b612e73656c65637465643d612e73656c6563745f6f7074696f6e732e696e6465784f6628746869732e76616c7565292c612e76616c75653d615b22656e756d225d5b612e73656c65637465645d2c612e7265667265736856616c756528292c612e6f6e4368616e6765282130297d292c746869732e76616c75653d746869735b22656e756d225d5b305d2c746869732e7265667265736856616c756528292c313d3d3d746869735b22656e756d225d2e6c656e677468262628746869732e73776974636865722e7374796c652e646973706c61793d226e6f6e6522297d2c7265667265736856616c75653a66756e6374696f6e28297b76617220613d746869733b612e73656c65637465643d2d313b76617220623d4a534f4e2e737472696e6769667928746869732e76616c7565293b72657475726e206428746869735b22656e756d225d2c66756e6374696f6e28632c64297b696628623d3d3d4a534f4e2e737472696e676966792864292972657475726e20612e73656c65637465643d632c21317d292c612e73656c65637465643c303f766f696420612e73657456616c756528615b22656e756d225d5b305d293a28746869732e73776974636865722e76616c75653d746869732e73656c6563745f6f7074696f6e735b746869732e73656c65637465645d2c766f696428746869732e646973706c61795f617265612e696e6e657248544d4c3d746869732e68746d6c5f76616c7565735b746869732e73656c65637465645d29297d2c656e61626c653a66756e6374696f6e28297b746869732e616c776179735f64697361626c65647c7c28746869732e73776974636865722e64697361626c65643d2131292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e73776974636865722e64697361626c65643d21302c746869732e5f737570657228297d2c67657448544d4c3a66756e6374696f6e2861297b76617220623d746869733b6966286e756c6c3d3d3d612972657475726e223c656d3e6e756c6c3c2f656d3e223b696628226f626a656374223d3d747970656f662061297b0a2f2f20544f444f3a20757365207468656d650a76617220633d22223b72657475726e206428612c66756e6374696f6e28642c65297b76617220663d622e67657448544d4c2865293b0a2f2f2041646420746865206b65797320746f206f626a656374206368696c6472656e0a41727261792e697341727261792861297c7c280a2f2f20544f444f3a20757365207468656d650a663d223c6469763e3c656d3e222b642b223c2f656d3e3a20222b662b223c2f6469763e22292c0a2f2f20544f444f3a20757365207468656d650a632b3d223c6c693e222b662b223c2f6c693e227d292c633d41727261792e697341727261792861293f223c6f6c3e222b632b223c2f6f6c3e223a223c756c207374796c653d276d617267696e2d746f703a303b6d617267696e2d626f74746f6d3a303b70616464696e672d746f703a303b70616464696e672d626f74746f6d3a303b273e222b632b223c2f756c3e227d72657475726e22626f6f6c65616e223d3d747970656f6620613f613f2274727565223a2266616c7365223a22737472696e67223d3d747970656f6620613f612e7265706c616365282f262f672c2226616d703b22292e7265706c616365282f3c2f672c22266c743b22292e7265706c616365282f3e2f672c222667743b22293a617d2c73657456616c75653a66756e6374696f6e2861297b746869732e76616c7565213d3d61262628746869732e76616c75653d612c746869732e7265667265736856616c756528292c746869732e6f6e4368616e67652829297d2c64657374726f793a66756e6374696f6e28297b746869732e646973706c61795f617265612626746869732e646973706c61795f617265612e706172656e744e6f64652626746869732e646973706c61795f617265612e706172656e744e6f64652e72656d6f76654368696c6428746869732e646973706c61795f61726561292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e73776974636865722626746869732e73776974636865722e706172656e744e6f64652626746869732e73776974636865722e706172656e744e6f64652e72656d6f76654368696c6428746869732e7377697463686572292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e73656c6563743d662e4162737472616374456469746f722e657874656e64287b73657456616c75653a66756e6374696f6e28612c62297b613d746869732e747970656361737428617c7c2222293b0a2f2f2053616e6974697a652076616c7565206265666f72652073657474696e672069740a76617220633d613b746869732e656e756d5f76616c7565732e696e6465784f662863293c30262628633d746869732e656e756d5f76616c7565735b305d292c746869732e76616c7565213d3d63262628746869732e696e7075742e76616c75653d746869732e656e756d5f6f7074696f6e735b746869732e656e756d5f76616c7565732e696e6465784f662863295d2c746869732e73656c656374322626746869732e73656c656374322e73656c65637432282276616c222c746869732e696e7075742e76616c7565292c746869732e76616c75653d632c746869732e6f6e4368616e67652829297d2c72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e73657441747472696275746528226e616d65222c746869732e666f726d6e616d65297d2c756e72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e72656d6f766541747472696275746528226e616d6522297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b69662821746869732e656e756d5f6f7074696f6e732972657475726e20333b666f722876617220613d746869732e6765745469746c6528292e6c656e6774682c623d303b623c746869732e656e756d5f6f7074696f6e732e6c656e6774683b622b2b29613d4d6174682e6d617828612c746869732e656e756d5f6f7074696f6e735b625d2e6c656e6774682b34293b72657475726e204d6174682e6d696e2831322c4d6174682e6d617828612f372c3229297d2c74797065636173743a66756e6374696f6e2861297b72657475726e22626f6f6c65616e223d3d3d746869732e736368656d612e747970653f2121613a226e756d626572223d3d3d746869732e736368656d612e747970653f312a613a22696e7465676572223d3d3d746869732e736368656d612e747970653f4d6174682e666c6f6f7228312a61293a22222b617d2c67657456616c75653a66756e6374696f6e28297b72657475726e20746869732e76616c75657d2c7072654275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e696e7075745f747970653d2273656c656374222c746869732e656e756d5f6f7074696f6e733d5b5d2c746869732e656e756d5f76616c7565733d5b5d2c746869732e656e756d5f646973706c61793d5b5d3b76617220623b0a2f2f20456e756d206f7074696f6e7320656e756d6572617465640a696628746869732e736368656d615b22656e756d225d297b76617220653d746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e656e756d5f7469746c65737c7c5b5d3b6428746869732e736368656d615b22656e756d225d2c66756e6374696f6e28622c63297b612e656e756d5f6f7074696f6e735b625d3d22222b632c612e656e756d5f646973706c61795b625d3d22222b28655b625d7c7c63292c612e656e756d5f76616c7565735b625d3d612e74797065636173742863297d292c746869732e6973526571756972656428297c7c28612e656e756d5f646973706c61792e756e736869667428222022292c612e656e756d5f6f7074696f6e732e756e73686966742822756e646566696e656422292c612e656e756d5f76616c7565732e756e736869667428766f6964203029297d656c73652069662822626f6f6c65616e223d3d3d746869732e736368656d612e7479706529612e656e756d5f646973706c61793d746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e656e756d5f7469746c65737c7c5b2274727565222c2266616c7365225d2c612e656e756d5f6f7074696f6e733d5b2231222c22225d2c612e656e756d5f76616c7565733d5b21302c21315d2c746869732e6973526571756972656428297c7c28612e656e756d5f646973706c61792e756e736869667428222022292c612e656e756d5f6f7074696f6e732e756e73686966742822756e646566696e656422292c612e656e756d5f76616c7565732e756e736869667428766f6964203029293b656c73657b69662821746869732e736368656d612e656e756d536f75726365297468726f77222773656c6563742720656469746f722072657175697265732074686520656e756d2070726f706572747920746f206265207365742e223b0a2f2f2053686f7274637574206465636c61726174696f6e20666f72207573696e6720612073696e676c652061727261790a696628746869732e656e756d536f757263653d5b5d2c746869732e656e756d5f646973706c61793d5b5d2c746869732e656e756d5f6f7074696f6e733d5b5d2c746869732e656e756d5f76616c7565733d5b5d2c41727261792e6973417272617928746869732e736368656d612e656e756d536f757263652929666f7228623d303b623c746869732e736368656d612e656e756d536f757263652e6c656e6774683b622b2b290a2f2f2053686f727468616e6420666f722077617463686564207661726961626c650a22737472696e67223d3d747970656f6620746869732e736368656d612e656e756d536f757263655b625d3f746869732e656e756d536f757263655b625d3d7b736f757263653a746869732e736368656d612e656e756d536f757263655b625d7d3a41727261792e6973417272617928746869732e736368656d612e656e756d536f757263655b625d293f746869732e656e756d536f757263655b625d3d746869732e736368656d612e656e756d536f757263655b625d3a746869732e656e756d536f757263655b625d3d63287b7d2c746869732e736368656d612e656e756d536f757263655b625d293b656c736520746869732e736368656d612e656e756d56616c75653f746869732e656e756d536f757263653d5b7b736f757263653a746869732e736368656d612e656e756d536f757263652c76616c75653a746869732e736368656d612e656e756d56616c75657d5d3a746869732e656e756d536f757263653d5b7b736f757263653a746869732e736368656d612e656e756d536f757263657d5d3b0a2f2f204e6f772c20656e756d536f7572636520697320616e206172726179206f6620736f75726365730a2f2f2057616c6b207468726f756768207468697320617272617920616e6420666978207570207468652076616c7565730a666f7228623d303b623c746869732e656e756d536f757263652e6c656e6774683b622b2b29746869732e656e756d536f757263655b625d2e76616c7565262628746869732e656e756d536f757263655b625d2e76616c75653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e76616c75652c746869732e74656d706c6174655f656e67696e6529292c746869732e656e756d536f757263655b625d2e7469746c65262628746869732e656e756d536f757263655b625d2e7469746c653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e7469746c652c746869732e74656d706c6174655f656e67696e6529292c746869732e656e756d536f757263655b625d2e66696c746572262628746869732e656e756d536f757263655b625d2e66696c7465723d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e66696c7465722c746869732e74656d706c6174655f656e67696e6529297d7d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e6f7074696f6e732e636f6d706163747c7c28746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c65282929292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c746869732e6f7074696f6e732e636f6d70616374262628746869732e636f6e7461696e65722e636c6173734e616d652b3d2220636f6d7061637422292c746869732e696e7075743d746869732e7468656d652e67657453656c656374496e70757428746869732e656e756d5f6f7074696f6e73292c746869732e7468656d652e73657453656c6563744f7074696f6e7328746869732e696e7075742c746869732e656e756d5f6f7074696f6e732c746869732e656e756d5f646973706c6179292c28746869732e736368656d612e726561644f6e6c797c7c746869732e736368656d612e726561646f6e6c7929262628746869732e616c776179735f64697361626c65643d21302c746869732e696e7075742e64697361626c65643d2130292c746869732e696e7075742e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e6f6e496e7075744368616e676528297d292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e696e7075742c746869732e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c292c746869732e76616c75653d746869732e656e756d5f76616c7565735b305d7d2c6f6e496e7075744368616e67653a66756e6374696f6e28297b76617220612c623d746869732e696e7075742e76616c75653b0a2f2f20496e76616c6964206f7074696f6e2c20757365206669727374206f7074696f6e20696e73746561640a613d746869732e656e756d5f6f7074696f6e732e696e6465784f662862293d3d3d2d313f746869732e656e756d5f76616c7565735b305d3a746869732e656e756d5f76616c7565735b746869732e656e756d5f6f7074696f6e732e696e6465784f662862295d2c0a2f2f2049662076616c6964206861736e2774206368616e6765640a61213d3d746869732e76616c75652626280a2f2f2053746f7265206e65772076616c756520616e642070726f706f67617465206368616e6765206576656e740a746869732e76616c75653d612c746869732e6f6e4368616e676528213029297d2c736574757053656c656374323a66756e6374696f6e28297b0a2f2f204966207468652053656c65637432206c696272617279206973206c6f6164656420757365206974207768656e2077652068617665206c6f7473206f66206974656d730a69662877696e646f772e6a5175657279262677696e646f772e6a51756572792e666e262677696e646f772e6a51756572792e666e2e73656c65637432262628746869732e656e756d5f6f7074696f6e732e6c656e6774683e327c7c746869732e656e756d5f6f7074696f6e732e6c656e6774682626746869732e656e756d536f7572636529297b76617220613d63287b7d2c662e706c7567696e732e73656c65637432293b746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e73656c656374325f6f7074696f6e73262628613d6328612c746869732e736368656d612e6f7074696f6e732e73656c656374325f6f7074696f6e7329292c746869732e73656c656374323d77696e646f772e6a517565727928746869732e696e707574292e73656c656374322861293b76617220623d746869733b746869732e73656c656374322e6f6e282273656c656374322d626c7572222c66756e6374696f6e28297b622e696e7075742e76616c75653d622e73656c656374322e73656c65637432282276616c22292c622e6f6e496e7075744368616e676528297d292c746869732e73656c656374322e6f6e28226368616e6765222c66756e6374696f6e28297b622e696e7075742e76616c75653d622e73656c656374322e73656c65637432282276616c22292c622e6f6e496e7075744368616e676528297d297d656c736520746869732e73656c656374323d6e756c6c7d2c706f73744275696c643a66756e6374696f6e28297b746869732e5f737570657228292c746869732e7468656d652e6166746572496e707574526561647928746869732e696e707574292c746869732e736574757053656c6563743228297d2c6f6e576174636865644669656c644368616e67653a66756e6374696f6e28297b76617220612c623b0a2f2f204966207468697320656469746f72207573657320612064796e616d69632073656c65637420626f780a696628746869732e656e756d536f75726365297b613d746869732e676574576174636865644669656c6456616c75657328293b666f722876617220633d5b5d2c643d5b5d2c653d303b653c746869732e656e756d536f757263652e6c656e6774683b652b2b290a2f2f20436f6e7374616e742076616c7565730a69662841727261792e6973417272617928746869732e656e756d536f757263655b655d2929633d632e636f6e63617428746869732e656e756d536f757263655b655d292c643d642e636f6e63617428746869732e656e756d536f757263655b655d293b656c73657b76617220663d5b5d3b6966280a2f2f20537461746963206c697374206f66206974656d730a663d41727261792e6973417272617928746869732e656e756d536f757263655b655d2e736f75726365293f746869732e656e756d536f757263655b655d2e736f757263653a615b746869732e656e756d536f757263655b655d2e736f757263655d297b0a2f2f2046696c74657220746865206974656d730a6966280a2f2f204f6e6c7920757365206120707265646566696e65642070617274206f66207468652061727261790a746869732e656e756d536f757263655b655d2e736c696365262628663d41727261792e70726f746f747970652e736c6963652e6170706c7928662c746869732e656e756d536f757263655b655d2e736c69636529292c746869732e656e756d536f757263655b655d2e66696c746572297b76617220673d5b5d3b666f7228623d303b623c662e6c656e6774683b622b2b29746869732e656e756d536f757263655b655d2e66696c746572287b693a622c6974656d3a665b625d2c776174636865643a617d292626672e7075736828665b625d293b663d677d76617220683d5b5d2c693d5b5d3b666f7228623d303b623c662e6c656e6774683b622b2b297b766172206a3d665b625d3b0a2f2f2052656e64657265642076616c75650a746869732e656e756d536f757263655b655d2e76616c75653f695b625d3d746869732e656e756d536f757263655b655d2e76616c7565287b693a622c6974656d3a6a7d293a695b625d3d665b625d2c0a2f2f2052656e6465726564207469746c650a746869732e656e756d536f757263655b655d2e7469746c653f685b625d3d746869732e656e756d536f757263655b655d2e7469746c65287b693a622c6974656d3a6a7d293a685b625d3d695b625d7d0a2f2f20544f444f3a20736f72740a633d632e636f6e6361742869292c643d642e636f6e6361742868297d7d766172206b3d746869732e76616c75653b746869732e7468656d652e73657453656c6563744f7074696f6e7328746869732e696e7075742c632c64292c746869732e656e756d5f6f7074696f6e733d632c746869732e656e756d5f646973706c61793d642c746869732e656e756d5f76616c7565733d632c746869732e73656c656374322626746869732e73656c656374322e73656c65637432282264657374726f7922292c0a2f2f204966207468652070726576696f75732076616c7565206973207374696c6c20696e20746865206e65772073656c656374206f7074696f6e732c20737469636b20776974682069740a632e696e6465784f66286b29213d3d2d313f28746869732e696e7075742e76616c75653d6b2c746869732e76616c75653d6b293a28746869732e696e7075742e76616c75653d635b305d2c746869732e76616c75653d635b305d7c7c22222c746869732e706172656e743f746869732e706172656e742e6f6e4368696c64456469746f724368616e67652874686973293a746869732e6a736f6e656469746f722e6f6e4368616e676528292c746869732e6a736f6e656469746f722e6e6f74696679576174636865727328746869732e7061746829292c746869732e736574757053656c6563743228297d746869732e5f737570657228297d2c656e61626c653a66756e6374696f6e28297b746869732e616c776179735f64697361626c65647c7c28746869732e696e7075742e64697361626c65643d21312c746869732e73656c656374322626746869732e73656c656374322e73656c656374322822656e61626c65222c213029292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e696e7075742e64697361626c65643d21302c746869732e73656c656374322626746869732e73656c656374322e73656c656374322822656e61626c65222c2131292c746869732e5f737570657228297d2c64657374726f793a66756e6374696f6e28297b746869732e6c6162656c2626746869732e6c6162656c2e706172656e744e6f64652626746869732e6c6162656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6c6162656c292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e73656c65637432262628746869732e73656c656374322e73656c65637432282264657374726f7922292c746869732e73656c656374323d6e756c6c292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e73656c656374697a653d662e4162737472616374456469746f722e657874656e64287b73657456616c75653a66756e6374696f6e28612c62297b613d746869732e747970656361737428617c7c2222293b0a2f2f2053616e6974697a652076616c7565206265666f72652073657474696e672069740a76617220633d613b746869732e656e756d5f76616c7565732e696e6465784f662863293c30262628633d746869732e656e756d5f76616c7565735b305d292c746869732e76616c7565213d3d63262628746869732e696e7075742e76616c75653d746869732e656e756d5f6f7074696f6e735b746869732e656e756d5f76616c7565732e696e6465784f662863295d2c746869732e73656c656374697a652626746869732e73656c656374697a655b305d2e73656c656374697a652e6164644974656d2863292c746869732e76616c75653d632c746869732e6f6e4368616e67652829297d2c72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e73657441747472696275746528226e616d65222c746869732e666f726d6e616d65297d2c756e72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e72656d6f766541747472696275746528226e616d6522297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b69662821746869732e656e756d5f6f7074696f6e732972657475726e20333b666f722876617220613d746869732e6765745469746c6528292e6c656e6774682c623d303b623c746869732e656e756d5f6f7074696f6e732e6c656e6774683b622b2b29613d4d6174682e6d617828612c746869732e656e756d5f6f7074696f6e735b625d2e6c656e6774682b34293b72657475726e204d6174682e6d696e2831322c4d6174682e6d617828612f372c3229297d2c74797065636173743a66756e6374696f6e2861297b72657475726e22626f6f6c65616e223d3d3d746869732e736368656d612e747970653f2121613a226e756d626572223d3d3d746869732e736368656d612e747970653f312a613a22696e7465676572223d3d3d746869732e736368656d612e747970653f4d6174682e666c6f6f7228312a61293a22222b617d2c67657456616c75653a66756e6374696f6e28297b72657475726e20746869732e76616c75657d2c7072654275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e696e7075745f747970653d2273656c656374222c746869732e656e756d5f6f7074696f6e733d5b5d2c746869732e656e756d5f76616c7565733d5b5d2c746869732e656e756d5f646973706c61793d5b5d3b76617220623b0a2f2f20456e756d206f7074696f6e7320656e756d6572617465640a696628746869732e736368656d615b22656e756d225d297b76617220653d746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e656e756d5f7469746c65737c7c5b5d3b6428746869732e736368656d615b22656e756d225d2c66756e6374696f6e28622c63297b612e656e756d5f6f7074696f6e735b625d3d22222b632c612e656e756d5f646973706c61795b625d3d22222b28655b625d7c7c63292c612e656e756d5f76616c7565735b625d3d612e74797065636173742863297d297d656c73652069662822626f6f6c65616e223d3d3d746869732e736368656d612e7479706529612e656e756d5f646973706c61793d746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e656e756d5f7469746c65737c7c5b2274727565222c2266616c7365225d2c612e656e756d5f6f7074696f6e733d5b2231222c2230225d2c612e656e756d5f76616c7565733d5b21302c21315d3b656c73657b69662821746869732e736368656d612e656e756d536f75726365297468726f77222773656c6563742720656469746f722072657175697265732074686520656e756d2070726f706572747920746f206265207365742e223b0a2f2f2053686f7274637574206465636c61726174696f6e20666f72207573696e6720612073696e676c652061727261790a696628746869732e656e756d536f757263653d5b5d2c746869732e656e756d5f646973706c61793d5b5d2c746869732e656e756d5f6f7074696f6e733d5b5d2c746869732e656e756d5f76616c7565733d5b5d2c41727261792e6973417272617928746869732e736368656d612e656e756d536f757263652929666f7228623d303b623c746869732e736368656d612e656e756d536f757263652e6c656e6774683b622b2b290a2f2f2053686f727468616e6420666f722077617463686564207661726961626c650a22737472696e67223d3d747970656f6620746869732e736368656d612e656e756d536f757263655b625d3f746869732e656e756d536f757263655b625d3d7b736f757263653a746869732e736368656d612e656e756d536f757263655b625d7d3a41727261792e6973417272617928746869732e736368656d612e656e756d536f757263655b625d293f746869732e656e756d536f757263655b625d3d746869732e736368656d612e656e756d536f757263655b625d3a746869732e656e756d536f757263655b625d3d63287b7d2c746869732e736368656d612e656e756d536f757263655b625d293b656c736520746869732e736368656d612e656e756d56616c75653f746869732e656e756d536f757263653d5b7b736f757263653a746869732e736368656d612e656e756d536f757263652c76616c75653a746869732e736368656d612e656e756d56616c75657d5d3a746869732e656e756d536f757263653d5b7b736f757263653a746869732e736368656d612e656e756d536f757263657d5d3b0a2f2f204e6f772c20656e756d536f7572636520697320616e206172726179206f6620736f75726365730a2f2f2057616c6b207468726f756768207468697320617272617920616e6420666978207570207468652076616c7565730a666f7228623d303b623c746869732e656e756d536f757263652e6c656e6774683b622b2b29746869732e656e756d536f757263655b625d2e76616c7565262628746869732e656e756d536f757263655b625d2e76616c75653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e76616c75652c746869732e74656d706c6174655f656e67696e6529292c746869732e656e756d536f757263655b625d2e7469746c65262628746869732e656e756d536f757263655b625d2e7469746c653d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e7469746c652c746869732e74656d706c6174655f656e67696e6529292c746869732e656e756d536f757263655b625d2e66696c746572262628746869732e656e756d536f757263655b625d2e66696c7465723d746869732e6a736f6e656469746f722e636f6d70696c6554656d706c61746528746869732e656e756d536f757263655b625d2e66696c7465722c746869732e74656d706c6174655f656e67696e6529297d7d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e6f7074696f6e732e636f6d706163747c7c28746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c65282929292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c746869732e6f7074696f6e732e636f6d70616374262628746869732e636f6e7461696e65722e636c6173734e616d652b3d2220636f6d7061637422292c746869732e696e7075743d746869732e7468656d652e67657453656c656374496e70757428746869732e656e756d5f6f7074696f6e73292c746869732e7468656d652e73657453656c6563744f7074696f6e7328746869732e696e7075742c746869732e656e756d5f6f7074696f6e732c746869732e656e756d5f646973706c6179292c28746869732e736368656d612e726561644f6e6c797c7c746869732e736368656d612e726561646f6e6c7929262628746869732e616c776179735f64697361626c65643d21302c746869732e696e7075742e64697361626c65643d2130292c746869732e696e7075742e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e6f6e496e7075744368616e676528297d292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e696e7075742c746869732e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c292c746869732e76616c75653d746869732e656e756d5f76616c7565735b305d7d2c6f6e496e7075744368616e67653a66756e6374696f6e28297b76617220613d746869732e696e7075742e76616c75652c623d613b746869732e656e756d5f6f7074696f6e732e696e6465784f662861293d3d3d2d31262628623d746869732e656e756d5f6f7074696f6e735b305d292c746869732e76616c75653d746869732e656e756d5f76616c7565735b746869732e656e756d5f6f7074696f6e732e696e6465784f662861295d2c746869732e6f6e4368616e6765282130297d2c736574757053656c656374697a653a66756e6374696f6e28297b0a2f2f204966207468652053656c656374697a65206c696272617279206973206c6f6164656420757365206974207768656e2077652068617665206c6f7473206f66206974656d730a76617220613d746869733b69662877696e646f772e6a5175657279262677696e646f772e6a51756572792e666e262677696e646f772e6a51756572792e666e2e73656c656374697a65262628746869732e656e756d5f6f7074696f6e732e6c656e6774683e3d327c7c746869732e656e756d5f6f7074696f6e732e6c656e6774682626746869732e656e756d536f7572636529297b76617220623d63287b7d2c662e706c7567696e732e73656c656374697a65293b746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e73656c656374697a655f6f7074696f6e73262628623d6328622c746869732e736368656d612e6f7074696f6e732e73656c656374697a655f6f7074696f6e7329292c746869732e73656c656374697a653d77696e646f772e6a517565727928746869732e696e707574292e73656c656374697a65286328622c7b6372656174653a21302c6f6e4368616e67653a66756e6374696f6e28297b612e6f6e496e7075744368616e676528297d7d29297d656c736520746869732e73656c656374697a653d6e756c6c7d2c706f73744275696c643a66756e6374696f6e28297b746869732e5f737570657228292c746869732e7468656d652e6166746572496e707574526561647928746869732e696e707574292c746869732e736574757053656c656374697a6528297d2c6f6e576174636865644669656c644368616e67653a66756e6374696f6e28297b76617220612c623b0a2f2f204966207468697320656469746f72207573657320612064796e616d69632073656c65637420626f780a696628746869732e656e756d536f75726365297b613d746869732e676574576174636865644669656c6456616c75657328293b666f722876617220633d5b5d2c643d5b5d2c653d303b653c746869732e656e756d536f757263652e6c656e6774683b652b2b290a2f2f20436f6e7374616e742076616c7565730a69662841727261792e6973417272617928746869732e656e756d536f757263655b655d2929633d632e636f6e63617428746869732e656e756d536f757263655b655d292c643d642e636f6e63617428746869732e656e756d536f757263655b655d293b656c736520696628615b746869732e656e756d536f757263655b655d2e736f757263655d297b76617220663d615b746869732e656e756d536f757263655b655d2e736f757263655d3b0a2f2f2046696c74657220746865206974656d730a6966280a2f2f204f6e6c7920757365206120707265646566696e65642070617274206f66207468652061727261790a746869732e656e756d536f757263655b655d2e736c696365262628663d41727261792e70726f746f747970652e736c6963652e6170706c7928662c746869732e656e756d536f757263655b655d2e736c69636529292c746869732e656e756d536f757263655b655d2e66696c746572297b76617220673d5b5d3b666f7228623d303b623c662e6c656e6774683b622b2b29746869732e656e756d536f757263655b655d2e66696c746572287b693a622c6974656d3a665b625d7d292626672e7075736828665b625d293b663d677d76617220683d5b5d2c693d5b5d3b666f7228623d303b623c662e6c656e6774683b622b2b297b766172206a3d665b625d3b0a2f2f2052656e64657265642076616c75650a746869732e656e756d536f757263655b655d2e76616c75653f695b625d3d746869732e656e756d536f757263655b655d2e76616c7565287b693a622c6974656d3a6a7d293a695b625d3d665b625d2c0a2f2f2052656e6465726564207469746c650a746869732e656e756d536f757263655b655d2e7469746c653f685b625d3d746869732e656e756d536f757263655b655d2e7469746c65287b693a622c6974656d3a6a7d293a685b625d3d695b625d7d0a2f2f20544f444f3a20736f72740a633d632e636f6e6361742869292c643d642e636f6e6361742868297d766172206b3d746869732e76616c75653b746869732e7468656d652e73657453656c6563744f7074696f6e7328746869732e696e7075742c632c64292c746869732e656e756d5f6f7074696f6e733d632c746869732e656e756d5f646973706c61793d642c746869732e656e756d5f76616c7565733d632c0a2f2f204966207468652070726576696f75732076616c7565206973207374696c6c20696e20746865206e65772073656c656374206f7074696f6e732c20737469636b20776974682069740a632e696e6465784f66286b29213d3d2d313f28746869732e696e7075742e76616c75653d6b2c746869732e76616c75653d6b293a28746869732e696e7075742e76616c75653d635b305d2c746869732e76616c75653d635b305d7c7c22222c746869732e706172656e743f746869732e706172656e742e6f6e4368696c64456469746f724368616e67652874686973293a746869732e6a736f6e656469746f722e6f6e4368616e676528292c746869732e6a736f6e656469746f722e6e6f74696679576174636865727328746869732e7061746829292c746869732e73656c656374697a653f0a2f2f20557064617465207468652053656c656374697a65206f7074696f6e730a746869732e75706461746553656c656374697a654f7074696f6e732863293a746869732e736574757053656c656374697a6528292c746869732e5f737570657228297d7d2c75706461746553656c656374697a654f7074696f6e733a66756e6374696f6e2861297b76617220623d746869732e73656c656374697a655b305d2e73656c656374697a652c633d746869733b622e6f666628292c622e636c6561724f7074696f6e7328293b666f7228766172206420696e206129622e6164644f7074696f6e287b76616c75653a615b645d2c746578743a615b645d7d293b622e6164644974656d28746869732e76616c7565292c622e6f6e28226368616e6765222c66756e6374696f6e28297b632e6f6e496e7075744368616e676528297d297d2c656e61626c653a66756e6374696f6e28297b746869732e616c776179735f64697361626c65647c7c28746869732e696e7075742e64697361626c65643d21312c746869732e73656c656374697a652626746869732e73656c656374697a655b305d2e73656c656374697a652e756e6c6f636b2829292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e696e7075742e64697361626c65643d21302c746869732e73656c656374697a652626746869732e73656c656374697a655b305d2e73656c656374697a652e6c6f636b28292c746869732e5f737570657228297d2c64657374726f793a66756e6374696f6e28297b746869732e6c6162656c2626746869732e6c6162656c2e706172656e744e6f64652626746869732e6c6162656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6c6162656c292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e73656c656374697a65262628746869732e73656c656374697a655b305d2e73656c656374697a652e64657374726f7928292c746869732e73656c656374697a653d6e756c6c292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e6d756c746973656c6563743d662e4162737472616374456469746f722e657874656e64287b7072654275696c643a66756e6374696f6e28297b746869732e5f737570657228293b76617220613b746869732e73656c6563745f6f7074696f6e733d7b7d2c746869732e73656c6563745f76616c7565733d7b7d3b76617220623d746869732e6a736f6e656469746f722e657870616e645265667328746869732e736368656d612e6974656d737c7c7b7d292c633d625b22656e756d225d7c7c5b5d2c643d622e6f7074696f6e733f622e6f7074696f6e732e656e756d5f7469746c65737c7c5b5d3a5b5d3b666f7228746869732e6f7074696f6e5f6b6579733d5b5d2c746869732e6f7074696f6e5f7469746c65733d5b5d2c613d303b613c632e6c656e6774683b612b2b290a2f2f204966207468652073616e6974697a65642076616c756520697320646966666572656e742066726f6d2074686520656e756d2076616c75652c20646f6e277420696e636c7564652069740a746869732e73616e6974697a6528635b615d293d3d3d635b615d262628746869732e6f7074696f6e5f6b6579732e7075736828635b615d2b2222292c746869732e6f7074696f6e5f7469746c65732e707573682828645b615d7c7c635b615d292b2222292c746869732e73656c6563745f76616c7565735b635b615d2b22225d3d635b615d297d2c6275696c643a66756e6374696f6e28297b76617220612c623d746869733b696628746869732e6f7074696f6e732e636f6d706163747c7c28746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c65282929292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c21746869732e736368656d612e666f726d61742626746869732e6f7074696f6e5f6b6579732e6c656e6774683c387c7c22636865636b626f78223d3d3d746869732e736368656d612e666f726d6174297b666f7228746869732e696e7075745f747970653d22636865636b626f786573222c746869732e696e707574733d7b7d2c746869732e636f6e74726f6c733d7b7d2c613d303b613c746869732e6f7074696f6e5f6b6579732e6c656e6774683b612b2b297b746869732e696e707574735b746869732e6f7074696f6e5f6b6579735b615d5d3d746869732e7468656d652e676574436865636b626f7828292c746869732e73656c6563745f6f7074696f6e735b746869732e6f7074696f6e5f6b6579735b615d5d3d746869732e696e707574735b746869732e6f7074696f6e5f6b6579735b615d5d3b76617220633d746869732e7468656d652e676574436865636b626f784c6162656c28746869732e6f7074696f6e5f7469746c65735b615d293b746869732e636f6e74726f6c735b746869732e6f7074696f6e5f6b6579735b615d5d3d746869732e7468656d652e676574466f726d436f6e74726f6c28632c746869732e696e707574735b746869732e6f7074696f6e5f6b6579735b615d5d297d746869732e636f6e74726f6c3d746869732e7468656d652e6765744d756c7469436865636b626f78486f6c64657228746869732e636f6e74726f6c732c746869732e6c6162656c2c746869732e6465736372697074696f6e297d656c73657b666f7228746869732e696e7075745f747970653d2273656c656374222c746869732e696e7075743d746869732e7468656d652e67657453656c656374496e70757428746869732e6f7074696f6e5f6b657973292c746869732e7468656d652e73657453656c6563744f7074696f6e7328746869732e696e7075742c746869732e6f7074696f6e5f6b6579732c746869732e6f7074696f6e5f7469746c6573292c746869732e696e7075742e6d756c7469706c653d21302c746869732e696e7075742e73697a653d4d6174682e6d696e2831302c746869732e6f7074696f6e5f6b6579732e6c656e677468292c613d303b613c746869732e6f7074696f6e5f6b6579732e6c656e6774683b612b2b29746869732e73656c6563745f6f7074696f6e735b746869732e6f7074696f6e5f6b6579735b615d5d3d746869732e696e7075742e6368696c6472656e5b615d3b28746869732e736368656d612e726561644f6e6c797c7c746869732e736368656d612e726561646f6e6c7929262628746869732e616c776179735f64697361626c65643d21302c746869732e696e7075742e64697361626c65643d2130292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e696e7075742c746869732e6465736372697074696f6e297d746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c292c746869732e636f6e74726f6c2e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2863297b632e70726576656e7444656661756c7428292c632e73746f7050726f7061676174696f6e28293b76617220643d5b5d3b666f7228613d303b613c622e6f7074696f6e5f6b6579732e6c656e6774683b612b2b2928622e73656c6563745f6f7074696f6e735b622e6f7074696f6e5f6b6579735b615d5d2e73656c65637465647c7c622e73656c6563745f6f7074696f6e735b622e6f7074696f6e5f6b6579735b615d5d2e636865636b6564292626642e7075736828622e73656c6563745f76616c7565735b622e6f7074696f6e5f6b6579735b615d5d293b622e75706461746556616c75652864292c622e6f6e4368616e6765282130297d297d2c73657456616c75653a66756e6374696f6e28612c62297b76617220633b0a2f2f204d616b65207375726520776520617265206465616c696e67207769746820616e206172726179206f6620737472696e677320736f2077652063616e20636865636b20666f722073747269637420657175616c6974790a666f7228613d617c7c5b5d2c226f626a65637422213d747970656f6620613f613d5b615d3a41727261792e697341727261792861297c7c28613d5b5d292c633d303b633c612e6c656e6774683b632b2b2922737472696e6722213d747970656f6620615b635d262628615b635d2b3d2222293b0a2f2f205570646174652073656c656374656420737461747573206f66206f7074696f6e730a666f72286320696e20746869732e73656c6563745f6f7074696f6e7329746869732e73656c6563745f6f7074696f6e732e6861734f776e50726f7065727479286329262628746869732e73656c6563745f6f7074696f6e735b635d5b2273656c656374223d3d3d746869732e696e7075745f747970653f2273656c6563746564223a22636865636b6564225d3d612e696e6465784f66286329213d3d2d31293b746869732e75706461746556616c75652861292c746869732e6f6e4368616e676528297d2c736574757053656c656374323a66756e6374696f6e28297b69662877696e646f772e6a5175657279262677696e646f772e6a51756572792e666e262677696e646f772e6a51756572792e666e2e73656c65637432297b76617220613d77696e646f772e6a51756572792e657874656e64287b7d2c662e706c7567696e732e73656c65637432293b746869732e736368656d612e6f7074696f6e732626746869732e736368656d612e6f7074696f6e732e73656c656374325f6f7074696f6e73262628613d6328612c746869732e736368656d612e6f7074696f6e732e73656c656374325f6f7074696f6e7329292c746869732e73656c656374323d77696e646f772e6a517565727928746869732e696e707574292e73656c656374322861293b76617220623d746869733b746869732e73656c656374322e6f6e282273656c656374322d626c7572222c66756e6374696f6e28297b76617220613d622e73656c656374322e73656c65637432282276616c22293b622e76616c75653d612c622e6f6e4368616e6765282130297d297d656c736520746869732e73656c656374323d6e756c6c7d2c6f6e496e7075744368616e67653a66756e6374696f6e28297b746869732e76616c75653d746869732e696e7075742e76616c75652c746869732e6f6e4368616e6765282130297d2c706f73744275696c643a66756e6374696f6e28297b746869732e5f737570657228292c746869732e736574757053656c6563743228297d2c72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e73657441747472696275746528226e616d65222c746869732e666f726d6e616d65297d2c756e72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e72656d6f766541747472696275746528226e616d6522297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b76617220613d746869732e6765745469746c6528292e6c656e6774683b666f7228766172206220696e20746869732e73656c6563745f76616c75657329746869732e73656c6563745f76616c7565732e6861734f776e50726f7065727479286229262628613d4d6174682e6d617828612c28746869732e73656c6563745f76616c7565735b625d2b2222292e6c656e6774682b3429293b72657475726e204d6174682e6d696e2831322c4d6174682e6d617828612f372c3229297d2c75706461746556616c75653a66756e6374696f6e2861297b666f722876617220623d21312c633d5b5d2c643d303b643c612e6c656e6774683b642b2b29696628746869732e73656c6563745f6f7074696f6e735b615b645d2b22225d297b76617220653d746869732e73616e6974697a6528746869732e73656c6563745f76616c7565735b615b645d5d293b632e707573682865292c65213d3d615b645d262628623d2130297d656c736520623d21303b72657475726e20746869732e76616c75653d632c746869732e73656c656374322626746869732e73656c656374322e73656c65637432282276616c222c746869732e76616c7565292c627d2c73616e6974697a653a66756e6374696f6e2861297b72657475726e226e756d626572223d3d3d746869732e736368656d612e6974656d732e747970653f312a613a22696e7465676572223d3d3d746869732e736368656d612e6974656d732e747970653f4d6174682e666c6f6f7228312a61293a22222b617d2c656e61626c653a66756e6374696f6e28297b69662821746869732e616c776179735f64697361626c6564297b696628746869732e696e70757429746869732e696e7075742e64697361626c65643d21313b656c736520696628746869732e696e7075747329666f7228766172206120696e20746869732e696e7075747329746869732e696e707574732e6861734f776e50726f7065727479286129262628746869732e696e707574735b615d2e64697361626c65643d2131293b746869732e73656c656374322626746869732e73656c656374322e73656c656374322822656e61626c65222c2130297d746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b696628746869732e696e70757429746869732e696e7075742e64697361626c65643d21303b656c736520696628746869732e696e7075747329666f7228766172206120696e20746869732e696e7075747329746869732e696e707574732e6861734f776e50726f7065727479286129262628746869732e696e707574735b615d2e64697361626c65643d2130293b746869732e73656c656374322626746869732e73656c656374322e73656c656374322822656e61626c65222c2131292c746869732e5f737570657228297d2c64657374726f793a66756e6374696f6e28297b746869732e73656c65637432262628746869732e73656c656374322e73656c65637432282264657374726f7922292c746869732e73656c656374323d6e756c6c292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e6261736536343d662e4162737472616374456469746f722e657874656e64287b6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20347d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b0a2f2f20446f6e27742073686f772075706c6f61646572206966207468697320697320726561646f6e6c790a696628746869732e7469746c653d746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c652829292c0a2f2f20496e707574207468617420686f6c6473207468652062617365363420737472696e670a746869732e696e7075743d746869732e7468656d652e676574466f726d496e7075744669656c64282268696464656e22292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e696e707574292c21746869732e736368656d612e726561644f6e6c79262621746869732e736368656d612e726561646f6e6c79297b6966282177696e646f772e46696c65526561646572297468726f772246696c6552656164657220726571756972656420666f722062617365363420656469746f72223b0a2f2f2046696c652075706c6f616465720a746869732e75706c6f616465723d746869732e7468656d652e676574466f726d496e7075744669656c64282266696c6522292c746869732e75706c6f616465722e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b696628622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c746869732e66696c65732626746869732e66696c65732e6c656e677468297b76617220633d6e65772046696c655265616465723b632e6f6e6c6f61643d66756e6374696f6e2862297b612e76616c75653d622e7461726765742e726573756c742c612e726566726573685072657669657728292c612e6f6e4368616e6765282130292c633d6e756c6c7d2c632e7265616441734461746155524c28746869732e66696c65735b305d297d7d297d746869732e707265766965773d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70726576696577292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e75706c6f616465727c7c746869732e696e7075742c746869732e70726576696577292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c297d2c72656672657368507265766965773a66756e6374696f6e28297b696628746869732e6c6173745f70726576696577213d3d746869732e76616c7565262628746869732e6c6173745f707265766965773d746869732e76616c75652c746869732e707265766965772e696e6e657248544d4c3d22222c746869732e76616c756529297b76617220613d746869732e76616c75652e6d61746368282f5e646174613a285b5e3b2c5d2b295b3b2c5d2f293b69662861262628613d615b315d292c61297b696628746869732e707265766965772e696e6e657248544d4c3d223c7374726f6e673e547970653a3c2f7374726f6e673e20222b612b222c203c7374726f6e673e53697a653a3c2f7374726f6e673e20222b4d6174682e666c6f6f722828746869732e76616c75652e6c656e6774682d746869732e76616c75652e73706c697428222c22295b305d2e6c656e6774682d31292f312e3333333333292b22206279746573222c22696d616765223d3d3d612e73756273747228302c3529297b746869732e707265766965772e696e6e657248544d4c2b3d223c62723e223b76617220623d646f63756d656e742e637265617465456c656d656e742822696d6722293b622e7374796c652e6d617857696474683d2231303025222c622e7374796c652e6d61784865696768743d223130307078222c622e7372633d746869732e76616c75652c746869732e707265766965772e617070656e644368696c642862297d7d656c736520746869732e707265766965772e696e6e657248544d4c3d223c656d3e496e76616c69642064617461205552493c2f656d3e227d7d2c656e61626c653a66756e6374696f6e28297b746869732e75706c6f61646572262628746869732e75706c6f616465722e64697361626c65643d2131292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e75706c6f61646572262628746869732e75706c6f616465722e64697361626c65643d2130292c746869732e5f737570657228297d2c73657456616c75653a66756e6374696f6e2861297b746869732e76616c7565213d3d61262628746869732e76616c75653d612c746869732e696e7075742e76616c75653d746869732e76616c75652c746869732e726566726573685072657669657728292c746869732e6f6e4368616e67652829297d2c64657374726f793a66756e6374696f6e28297b746869732e707265766965772626746869732e707265766965772e706172656e744e6f64652626746869732e707265766965772e706172656e744e6f64652e72656d6f76654368696c6428746869732e70726576696577292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e75706c6f616465722626746869732e75706c6f616465722e706172656e744e6f64652626746869732e75706c6f616465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e75706c6f61646572292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e75706c6f61643d662e4162737472616374456469746f722e657874656e64287b6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e20347d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b0a2f2f20446f6e27742073686f772075706c6f61646572206966207468697320697320726561646f6e6c790a696628746869732e7469746c653d746869732e6865616465723d746869732e6c6162656c3d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c652829292c0a2f2f20496e707574207468617420686f6c6473207468652062617365363420737472696e670a746869732e696e7075743d746869732e7468656d652e676574466f726d496e7075744669656c64282268696464656e22292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e696e707574292c21746869732e736368656d612e726561644f6e6c79262621746869732e736368656d612e726561646f6e6c79297b69662821746869732e6a736f6e656469746f722e6f7074696f6e732e75706c6f6164297468726f772255706c6f61642068616e646c657220726571756972656420666f722075706c6f616420656469746f72223b0a2f2f2046696c652075706c6f616465720a746869732e75706c6f616465723d746869732e7468656d652e676574466f726d496e7075744669656c64282266696c6522292c746869732e75706c6f616465722e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b696628622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c746869732e66696c65732626746869732e66696c65732e6c656e677468297b76617220633d6e65772046696c655265616465723b632e6f6e6c6f61643d66756e6374696f6e2862297b612e707265766965775f76616c75653d622e7461726765742e726573756c742c612e726566726573685072657669657728292c612e6f6e4368616e6765282130292c633d6e756c6c7d2c632e7265616441734461746155524c28746869732e66696c65735b305d297d7d297d76617220623d746869732e736368656d612e6465736372697074696f6e3b627c7c28623d2222292c746869732e707265766965773d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e2862292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e70726576696577292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e75706c6f616465727c7c746869732e696e7075742c746869732e70726576696577292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c297d2c72656672657368507265766965773a66756e6374696f6e28297b696628746869732e6c6173745f70726576696577213d3d746869732e707265766965775f76616c7565262628746869732e6c6173745f707265766965773d746869732e707265766965775f76616c75652c746869732e707265766965772e696e6e657248544d4c3d22222c746869732e707265766965775f76616c756529297b76617220613d746869732c623d746869732e707265766965775f76616c75652e6d61746368282f5e646174613a285b5e3b2c5d2b295b3b2c5d2f293b62262628623d625b315d292c627c7c28623d22756e6b6e6f776e22293b76617220633d746869732e75706c6f616465722e66696c65735b305d3b696628746869732e707265766965772e696e6e657248544d4c3d223c7374726f6e673e547970653a3c2f7374726f6e673e20222b622b222c203c7374726f6e673e53697a653a3c2f7374726f6e673e20222b632e73697a652b22206279746573222c22696d616765223d3d3d622e73756273747228302c3529297b746869732e707265766965772e696e6e657248544d4c2b3d223c62723e223b76617220643d646f63756d656e742e637265617465456c656d656e742822696d6722293b642e7374796c652e6d617857696474683d2231303025222c642e7374796c652e6d61784865696768743d223130307078222c642e7372633d746869732e707265766965775f76616c75652c746869732e707265766965772e617070656e644368696c642864297d746869732e707265766965772e696e6e657248544d4c2b3d223c62723e223b76617220653d746869732e676574427574746f6e282255706c6f6164222c2275706c6f6164222c2255706c6f616422293b746869732e707265766965772e617070656e644368696c642865292c652e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c652e736574417474726962757465282264697361626c6564222c2264697361626c656422292c612e7468656d652e72656d6f7665496e7075744572726f7228612e75706c6f61646572292c612e7468656d652e67657450726f6772657373426172262628612e70726f67726573734261723d612e7468656d652e67657450726f677265737342617228292c612e707265766965772e617070656e644368696c6428612e70726f677265737342617229292c612e6a736f6e656469746f722e6f7074696f6e732e75706c6f616428612e706174682c632c7b737563636573733a66756e6374696f6e2862297b612e73657456616c75652862292c612e706172656e743f612e706172656e742e6f6e4368696c64456469746f724368616e67652861293a612e6a736f6e656469746f722e6f6e4368616e676528292c612e70726f67726573734261722626612e707265766965772e72656d6f76654368696c6428612e70726f6772657373426172292c652e72656d6f7665417474726962757465282264697361626c656422297d2c6661696c7572653a66756e6374696f6e2862297b612e7468656d652e616464496e7075744572726f7228612e75706c6f616465722c62292c612e70726f67726573734261722626612e707265766965772e72656d6f76654368696c6428612e70726f6772657373426172292c652e72656d6f7665417474726962757465282264697361626c656422297d2c75706461746550726f67726573733a66756e6374696f6e2862297b612e70726f6772657373426172262628623f612e7468656d652e75706461746550726f677265737342617228612e70726f67726573734261722c62293a612e7468656d652e75706461746550726f6772657373426172556e6b6e6f776e28612e70726f677265737342617229297d7d297d297d7d2c656e61626c653a66756e6374696f6e28297b746869732e75706c6f61646572262628746869732e75706c6f616465722e64697361626c65643d2131292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e75706c6f61646572262628746869732e75706c6f616465722e64697361626c65643d2130292c746869732e5f737570657228297d2c73657456616c75653a66756e6374696f6e2861297b746869732e76616c7565213d3d61262628746869732e76616c75653d612c746869732e696e7075742e76616c75653d746869732e76616c75652c746869732e6f6e4368616e67652829297d2c64657374726f793a66756e6374696f6e28297b746869732e707265766965772626746869732e707265766965772e706172656e744e6f64652626746869732e707265766965772e706172656e744e6f64652e72656d6f76654368696c6428746869732e70726576696577292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e75706c6f616465722626746869732e75706c6f616465722e706172656e744e6f64652626746869732e75706c6f616465722e706172656e744e6f64652e72656d6f76654368696c6428746869732e75706c6f61646572292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e636865636b626f783d662e4162737472616374456469746f722e657874656e64287b73657456616c75653a66756e6374696f6e28612c62297b746869732e76616c75653d2121612c746869732e696e7075742e636865636b65643d746869732e76616c75652c746869732e6f6e4368616e676528297d2c72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e73657441747472696275746528226e616d65222c746869732e666f726d6e616d65297d2c756e72656769737465723a66756e6374696f6e28297b746869732e5f737570657228292c746869732e696e7075742626746869732e696e7075742e72656d6f766541747472696275746528226e616d6522297d2c6765744e756d436f6c756d6e733a66756e6374696f6e28297b72657475726e204d6174682e6d696e2831322c4d6174682e6d617828746869732e6765745469746c6528292e6c656e6774682f372c3229297d2c6275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e6f7074696f6e732e636f6d706163747c7c28746869732e6c6162656c3d746869732e6865616465723d746869732e7468656d652e676574436865636b626f784c6162656c28746869732e6765745469746c65282929292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e676574466f726d496e7075744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c746869732e6f7074696f6e732e636f6d70616374262628746869732e636f6e7461696e65722e636c6173734e616d652b3d2220636f6d7061637422292c746869732e696e7075743d746869732e7468656d652e676574436865636b626f7828292c746869732e636f6e74726f6c3d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e6c6162656c2c746869732e696e7075742c746869732e6465736372697074696f6e292c28746869732e736368656d612e726561644f6e6c797c7c746869732e736368656d612e726561646f6e6c7929262628746869732e616c776179735f64697361626c65643d21302c746869732e696e7075742e64697361626c65643d2130292c746869732e696e7075742e6164644576656e744c697374656e657228226368616e6765222c66756e6374696f6e2862297b622e70726576656e7444656661756c7428292c622e73746f7050726f7061676174696f6e28292c612e76616c75653d746869732e636865636b65642c612e6f6e4368616e6765282130297d292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e636f6e74726f6c297d2c656e61626c653a66756e6374696f6e28297b746869732e616c776179735f64697361626c65647c7c28746869732e696e7075742e64697361626c65643d2131292c746869732e5f737570657228297d2c64697361626c653a66756e6374696f6e28297b746869732e696e7075742e64697361626c65643d21302c746869732e5f737570657228297d2c64657374726f793a66756e6374696f6e28297b746869732e6c6162656c2626746869732e6c6162656c2e706172656e744e6f64652626746869732e6c6162656c2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6c6162656c292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e5f737570657228297d7d292c662e64656661756c74732e656469746f72732e617272617953656c656374697a653d662e4162737472616374456469746f722e657874656e64287b6275696c643a66756e6374696f6e28297b746869732e7469746c653d746869732e7468656d652e676574466f726d496e7075744c6162656c28746869732e6765745469746c652829292c746869732e7469746c655f636f6e74726f6c733d746869732e7468656d652e676574486561646572427574746f6e486f6c64657228292c746869732e7469746c652e617070656e644368696c6428746869732e7469746c655f636f6e74726f6c73292c746869732e6572726f725f686f6c6465723d646f63756d656e742e637265617465456c656d656e74282264697622292c746869732e736368656d612e6465736372697074696f6e262628746869732e6465736372697074696f6e3d746869732e7468656d652e6765744465736372697074696f6e28746869732e736368656d612e6465736372697074696f6e29292c746869732e696e7075743d646f63756d656e742e637265617465456c656d656e74282273656c65637422292c746869732e696e7075742e73657441747472696275746528226d756c7469706c65222c226d756c7469706c6522293b76617220613d746869732e7468656d652e676574466f726d436f6e74726f6c28746869732e7469746c652c746869732e696e7075742c746869732e6465736372697074696f6e293b746869732e636f6e7461696e65722e617070656e644368696c642861292c746869732e636f6e7461696e65722e617070656e644368696c6428746869732e6572726f725f686f6c646572292c77696e646f772e6a517565727928746869732e696e707574292e73656c656374697a65287b64656c696d697465723a21312c6372656174654f6e426c75723a21302c6372656174653a21307d297d2c706f73744275696c643a66756e6374696f6e28297b76617220613d746869733b746869732e696e7075742e73656c656374697a652e6f6e28226368616e6765222c66756e6374696f6e2862297b612e7265667265736856616c756528292c612e6f6e4368616e6765282130297d297d2c64657374726f793a66756e6374696f6e28297b746869732e656d707479282130292c746869732e7469746c652626746869732e7469746c652e706172656e744e6f64652626746869732e7469746c652e706172656e744e6f64652e72656d6f76654368696c6428746869732e7469746c65292c746869732e6465736372697074696f6e2626746869732e6465736372697074696f6e2e706172656e744e6f64652626746869732e6465736372697074696f6e2e706172656e744e6f64652e72656d6f76654368696c6428746869732e6465736372697074696f6e292c746869732e696e7075742626746869732e696e7075742e706172656e744e6f64652626746869732e696e7075742e706172656e744e6f64652e72656d6f76654368696c6428746869732e696e707574292c746869732e5f737570657228297d2c656d7074793a66756e6374696f6e2861297b7d2c73657456616c75653a66756e6374696f6e28612c62297b76617220633d746869733b0a2f2f205570646174652074686520617272617927732076616c75652c20616464696e672f72656d6f76696e6720726f7773207768656e206e65636573736172790a613d617c7c5b5d2c41727261792e697341727261792861297c7c28613d5b615d292c746869732e696e7075742e73656c656374697a652e636c6561724f7074696f6e7328292c746869732e696e7075742e73656c656374697a652e636c656172282130292c612e666f72456163682866756e6374696f6e2861297b632e696e7075742e73656c656374697a652e6164644f7074696f6e287b746578743a612c76616c75653a617d297d292c746869732e696e7075742e73656c656374697a652e73657456616c75652861292c746869732e7265667265736856616c75652862297d2c7265667265736856616c75653a66756e6374696f6e2861297b746869732e76616c75653d746869732e696e7075742e73656c656374697a652e67657456616c756528297d2c73686f7756616c69646174696f6e4572726f72733a66756e6374696f6e2861297b76617220623d746869732c633d5b5d2c653d5b5d3b0a2f2f2053686f77206572726f727320666f72207468697320656469746f720a6966286428612c66756e6374696f6e28612c64297b642e706174683d3d3d622e706174683f632e707573682864293a652e707573682864297d292c746869732e6572726f725f686f6c64657229696628632e6c656e677468297b746869732e6572726f725f686f6c6465722e696e6e657248544d4c3d22222c746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d22222c6428632c66756e6374696f6e28612c63297b622e6572726f725f686f6c6465722e617070656e644368696c6428622e7468656d652e6765744572726f724d65737361676528632e6d65737361676529297d297d656c736520746869732e6572726f725f686f6c6465722e7374796c652e646973706c61793d226e6f6e65227d7d293b76617220673d66756e6374696f6e28297b76617220613d646f63756d656e742e646f63756d656e74456c656d656e743b72657475726e20612e6d6174636865733f226d617463686573223a612e7765626b69744d61746368657353656c6563746f723f227765626b69744d61746368657353656c6563746f72223a612e6d6f7a4d61746368657353656c6563746f723f226d6f7a4d61746368657353656c6563746f72223a612e6d734d61746368657353656c6563746f723f226d734d61746368657353656c6563746f72223a612e6f4d61746368657353656c6563746f723f226f4d61746368657353656c6563746f72223a766f696420307d28293b662e41627374726163745468656d653d612e657874656e64287b676574436f6e7461696e65723a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e74282264697622297d2c676574466c6f617452696768744c696e6b486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e7374796c653d612e7374796c657c7c7b7d2c612e7374796c652e637373466c6f61743d227269676874222c612e7374796c652e6d617267696e4c6566743d2231307078222c617d2c6765744d6f64616c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e7374796c652e6261636b67726f756e64436f6c6f723d227768697465222c612e7374796c652e626f726465723d2231707820736f6c696420626c61636b222c612e7374796c652e626f78536861646f773d223370782033707820626c61636b222c612e7374796c652e706f736974696f6e3d226162736f6c757465222c612e7374796c652e7a496e6465783d223130222c612e7374796c652e646973706c61793d226e6f6e65222c617d2c67657447726964436f6e7461696e65723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20617d2c67657447726964526f773a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22726f77222c617d2c67657447726964436f6c756d6e3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20617d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b7d2c6765744c696e6b3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20622e736574417474726962757465282268726566222c222322292c622e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286129292c627d2c64697361626c654865616465723a66756e6374696f6e2861297b612e7374796c652e636f6c6f723d2223636363227d2c64697361626c654c6162656c3a66756e6374696f6e2861297b612e7374796c652e636f6c6f723d2223636363227d2c656e61626c654865616465723a66756e6374696f6e2861297b612e7374796c652e636f6c6f723d22227d2c656e61626c654c6162656c3a66756e6374696f6e2861297b612e7374796c652e636f6c6f723d22227d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428226c6162656c22293b72657475726e20622e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286129292c627d2c676574436865636b626f784c6162656c3a66756e6374696f6e2861297b76617220623d746869732e676574466f726d496e7075744c6162656c2861293b72657475726e20622e7374796c652e666f6e745765696768743d226e6f726d616c222c627d2c6765744865616465723a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e742822683322293b72657475726e22737472696e67223d3d747970656f6620613f622e74657874436f6e74656e743d613a622e617070656e644368696c642861292c627d2c676574436865636b626f783a66756e6374696f6e28297b76617220613d746869732e676574466f726d496e7075744669656c642822636865636b626f7822293b72657475726e20612e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c612e7374796c652e77696474683d226175746f222c617d2c6765744d756c7469436865636b626f78486f6c6465723a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e74282264697622293b62262628622e7374796c652e646973706c61793d22626c6f636b222c642e617070656e644368696c64286229293b666f7228766172206520696e206129612e6861734f776e50726f7065727479286529262628615b655d2e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c615b655d2e7374796c652e6d617267696e52696768743d2232307078222c642e617070656e644368696c6428615b655d29293b72657475726e20632626642e617070656e644368696c642863292c647d2c67657453656c656374496e7075743a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e74282273656c65637422293b72657475726e20612626746869732e73657453656c6563744f7074696f6e7328622c61292c627d2c67657453776974636865723a66756e6374696f6e2861297b76617220623d746869732e67657453656c656374496e7075742861293b72657475726e20622e7374796c652e6261636b67726f756e64436f6c6f723d227472616e73706172656e74222c622e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c622e7374796c652e666f6e745374796c653d226974616c6963222c622e7374796c652e666f6e745765696768743d226e6f726d616c222c622e7374796c652e6865696768743d226175746f222c622e7374796c652e6d617267696e426f74746f6d3d302c622e7374796c652e6d617267696e4c6566743d22357078222c622e7374796c652e70616464696e673d22302030203020337078222c622e7374796c652e77696474683d226175746f222c627d2c67657453776974636865724f7074696f6e733a66756e6374696f6e2861297b72657475726e20612e676574456c656d656e747342795461674e616d6528226f7074696f6e22297d2c73657453776974636865724f7074696f6e733a66756e6374696f6e28612c622c63297b746869732e73657453656c6563744f7074696f6e7328612c622c63297d2c73657453656c6563744f7074696f6e733a66756e6374696f6e28612c622c63297b633d637c7c5b5d2c612e696e6e657248544d4c3d22223b666f722876617220643d303b643c622e6c656e6774683b642b2b297b76617220653d646f63756d656e742e637265617465456c656d656e7428226f7074696f6e22293b652e736574417474726962757465282276616c7565222c625b645d292c652e74657874436f6e74656e743d635b645d7c7c625b645d2c612e617070656e644368696c642865297d7d2c6765745465787461726561496e7075743a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e742822746578746172656122293b72657475726e20612e7374796c653d612e7374796c657c7c7b7d2c612e7374796c652e77696474683d2231303025222c612e7374796c652e6865696768743d223330307078222c612e7374796c652e626f7853697a696e673d22626f726465722d626f78222c617d2c67657452616e6765496e7075743a66756e6374696f6e28612c622c63297b76617220643d746869732e676574466f726d496e7075744669656c64282272616e676522293b72657475726e20642e73657441747472696275746528226d696e222c61292c642e73657441747472696275746528226d6178222c62292c642e736574417474726962757465282273746570222c63292c647d2c676574466f726d496e7075744669656c643a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e742822696e70757422293b72657475726e20622e736574417474726962757465282274797065222c61292c627d2c6166746572496e70757452656164793a66756e6374696f6e2861297b7d2c676574466f726d436f6e74726f6c3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20642e636c6173734e616d653d22666f726d2d636f6e74726f6c222c612626642e617070656e644368696c642861292c22636865636b626f78223d3d3d622e747970653f612e696e736572744265666f726528622c612e66697273744368696c64293a642e617070656e644368696c642862292c632626642e617070656e644368696c642863292c647d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e7374796c653d612e7374796c657c7c7b7d2c612e7374796c652e70616464696e674c6566743d2231307078222c612e7374796c652e6d617267696e4c6566743d2231307078222c612e7374796c652e626f726465724c6566743d2231707820736f6c69642023636363222c617d2c6765744368696c64456469746f72486f6c6465723a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e74282264697622297d2c6765744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227022293b72657475726e20622e696e6e657248544d4c3d612c627d2c676574436865636b626f784465736372697074696f6e3a66756e6374696f6e2861297b72657475726e20746869732e6765744465736372697074696f6e2861297d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b72657475726e20746869732e6765744465736372697074696f6e2861297d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b72657475726e20746869732e676574427574746f6e486f6c64657228297d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e74282264697622297d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e742822627574746f6e22293b72657475726e20642e747970653d22627574746f6e222c746869732e736574427574746f6e5465787428642c612c622c63292c647d2c736574427574746f6e546578743a66756e6374696f6e28612c622c632c64297b612e696e6e657248544d4c3d22222c63262628612e617070656e644368696c642863292c612e696e6e657248544d4c2b3d222022292c612e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286229292c642626612e73657441747472696275746528227469746c65222c64297d2c6765745461626c653a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e7428227461626c6522297d2c6765745461626c65526f773a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e742822747222297d2c6765745461626c65486561643a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e742822746865616422297d2c6765745461626c65426f64793a66756e6374696f6e28297b72657475726e20646f63756d656e742e637265617465456c656d656e74282274626f647922297d2c6765745461626c6548656164657243656c6c3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e742822746822293b72657475726e20622e74657874436f6e74656e743d612c627d2c6765745461626c6543656c6c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e742822746422293b72657475726e20617d2c6765744572726f724d6573736167653a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227022293b72657475726e20622e7374796c653d622e7374796c657c7c7b7d2c622e7374796c652e636f6c6f723d22726564222c622e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286129292c627d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b7d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b7d2c6164645461626c65526f774572726f723a66756e6374696f6e2861297b7d2c72656d6f76655461626c65526f774572726f723a66756e6374696f6e2861297b7d2c676574546162486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e696e6e657248544d4c3d223c646976207374796c653d27666c6f61743a206c6566743b2077696474683a2031333070783b2720636c6173733d2774616273273e3c2f6469763e3c64697620636c6173733d27636f6e74656e7427207374796c653d276d617267696e2d6c6566743a2031333070783b273e3c2f6469763e3c646976207374796c653d27636c6561723a626f74683b273e3c2f6469763e222c617d2c6170706c795374796c65733a66756e6374696f6e28612c62297b612e7374796c653d612e7374796c657c7c7b7d3b666f7228766172206320696e206229622e6861734f776e50726f7065727479286329262628612e7374796c655b635d3d625b635d297d2c636c6f736573743a66756e6374696f6e28612c62297b666f72283b61262661213d3d646f63756d656e743b297b69662821615b675d2972657475726e21313b696628615b675d2862292972657475726e20613b613d612e706172656e744e6f64657d72657475726e21317d2c6765745461623a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20622e617070656e644368696c642861292c622e7374796c653d622e7374796c657c7c7b7d2c746869732e6170706c795374796c657328622c7b626f726465723a2231707820736f6c69642023636363222c626f7264657257696474683a2231707820302031707820317078222c74657874416c69676e3a2263656e746572222c6c696e654865696768743a2233307078222c626f726465725261646975733a22357078222c626f72646572426f74746f6d52696768745261646975733a302c626f72646572546f7052696768745261646975733a302c666f6e745765696768743a22626f6c64222c637572736f723a22706f696e746572227d292c627d2c676574546162436f6e74656e74486f6c6465723a66756e6374696f6e2861297b72657475726e20612e6368696c6472656e5b315d7d2c676574546162436f6e74656e743a66756e6374696f6e28297b72657475726e20746869732e676574496e64656e74656450616e656c28297d2c6d61726b5461624163746976653a66756e6374696f6e2861297b746869732e6170706c795374796c657328612c7b6f7061636974793a312c6261636b67726f756e643a227768697465227d297d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b746869732e6170706c795374796c657328612c7b6f7061636974793a2e352c6261636b67726f756e643a22227d297d2c6164645461623a66756e6374696f6e28612c62297b612e6368696c6472656e5b305d2e617070656e644368696c642862297d2c676574426c6f636b4c696e6b3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20612e7374796c652e646973706c61793d22626c6f636b222c617d2c676574426c6f636b4c696e6b486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20617d2c6765744c696e6b73486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20617d2c6372656174654d656469614c696e6b3a66756e6374696f6e28612c622c63297b612e617070656e644368696c642862292c632e7374796c652e77696474683d2231303025222c612e617070656e644368696c642863297d2c637265617465496d6167654c696e6b3a66756e6374696f6e28612c622c63297b612e617070656e644368696c642862292c622e617070656e644368696c642863297d7d292c662e64656661756c74732e7468656d65732e626f6f747374726170323d662e41627374726163745468656d652e657874656e64287b67657452616e6765496e7075743a66756e6374696f6e28612c622c63297b0a2f2f20544f444f3a2075736520626f6f74737472617020736c696465720a72657475726e20746869732e5f737570657228612c622c63297d2c67657447726964436f6e7461696e65723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22636f6e7461696e65722d666c756964222c617d2c67657447726964526f773a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22726f772d666c756964222c617d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c622e7374796c652e666f6e745765696768743d22626f6c64222c627d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b612e636c6173734e616d653d227370616e222b627d2c67657453656c656374496e7075743a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e77696474683d226175746f222c622e7374796c652e6d617857696474683d22393825222c627d2c676574466f726d496e7075744669656c643a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e77696474683d22393825222c627d2c6166746572496e70757452656164793a66756e6374696f6e2861297b612e636f6e74726f6c67726f75707c7c28612e636f6e74726f6c67726f75703d746869732e636c6f7365737428612c222e636f6e74726f6c2d67726f757022292c612e636f6e74726f6c733d746869732e636c6f7365737428612c222e636f6e74726f6c7322292c746869732e636c6f7365737428612c222e636f6d706163742229262628612e636f6e74726f6c67726f75702e636c6173734e616d653d612e636f6e74726f6c67726f75702e636c6173734e616d652e7265706c616365282f636f6e74726f6c2d67726f75702f672c2222292e7265706c616365282f5b205d7b322c7d2f672c222022292c612e636f6e74726f6c732e636c6173734e616d653d612e636f6e74726f6c67726f75702e636c6173734e616d652e7265706c616365282f636f6e74726f6c732f672c2222292e7265706c616365282f5b205d7b322c7d2f672c222022292c612e7374796c652e6d617267696e426f74746f6d3d3029297d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2277656c6c2077656c6c2d736d616c6c222c612e7374796c652e70616464696e67426f74746f6d3d302c617d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227022293b72657475726e20622e636c6173734e616d653d2268656c702d696e6c696e65222c622e74657874436f6e74656e743d612c627d2c676574466f726d436f6e74726f6c3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e74282264697622293b642e636c6173734e616d653d22636f6e74726f6c2d67726f7570223b76617220653d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20652e636c6173734e616d653d22636f6e74726f6c73222c61262622636865636b626f78223d3d3d622e67657441747472696275746528227479706522293f28642e617070656e644368696c642865292c612e636c6173734e616d652b3d2220636865636b626f78222c612e617070656e644368696c642862292c652e617070656e644368696c642861292c652e7374796c652e6865696768743d223330707822293a2861262628612e636c6173734e616d652b3d2220636f6e74726f6c2d6c6162656c222c642e617070656e644368696c64286129292c652e617070656e644368696c642862292c642e617070656e644368696c64286529292c632626652e617070656e644368696c642863292c647d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20612e7374796c652e6d617267696e4c6566743d2231307078222c617d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2262746e2d67726f7570222c617d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d746869732e5f737570657228612c622c63293b72657475726e20642e636c6173734e616d652b3d222062746e2062746e2d64656661756c74222c647d2c6765745461626c653a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e7428227461626c6522293b72657475726e20612e636c6173734e616d653d227461626c65207461626c652d626f726465726564222c612e7374796c652e77696474683d226175746f222c612e7374796c652e6d617857696474683d226e6f6e65222c617d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b612e636f6e74726f6c67726f75702626612e636f6e74726f6c73262628612e636f6e74726f6c67726f75702e636c6173734e616d652b3d22206572726f72222c612e6572726d73673f612e6572726d73672e7374796c652e646973706c61793d22223a28612e6572726d73673d646f63756d656e742e637265617465456c656d656e7428227022292c612e6572726d73672e636c6173734e616d653d2268656c702d626c6f636b206572726f726d7367222c612e636f6e74726f6c732e617070656e644368696c6428612e6572726d736729292c612e6572726d73672e74657874436f6e74656e743d62297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e6572726d7367262628612e6572726d73672e7374796c652e646973706c61793d226e6f6e65222c612e636f6e74726f6c67726f75702e636c6173734e616d653d612e636f6e74726f6c67726f75702e636c6173734e616d652e7265706c616365282f5c733f6572726f722f672c222229297d2c676574546162486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d227461626261626c6520746162732d6c656674222c612e696e6e657248544d4c3d223c756c20636c6173733d276e6176206e61762d74616273207370616e3227207374796c653d276d617267696e2d72696768743a20303b273e3c2f756c3e3c64697620636c6173733d277461622d636f6e74656e74207370616e313027207374796c653d276f766572666c6f773a76697369626c653b273e3c2f6469763e222c617d2c6765745461623a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428226c6922292c633d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20632e736574417474726962757465282268726566222c222322292c632e617070656e644368696c642861292c622e617070656e644368696c642863292c627d2c676574546162436f6e74656e74486f6c6465723a66756e6374696f6e2861297b72657475726e20612e6368696c6472656e5b315d7d2c676574546162436f6e74656e743a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d227461622d70616e6520616374697665222c617d2c6d61726b5461624163746976653a66756e6374696f6e2861297b612e636c6173734e616d652b3d2220616374697665227d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c733f6163746976652f672c2222297d2c6164645461623a66756e6374696f6e28612c62297b612e6368696c6472656e5b305d2e617070656e644368696c642862297d2c67657450726f67726573734261723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b612e636c6173734e616d653d2270726f6772657373223b76617220623d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20622e636c6173734e616d653d22626172222c622e7374796c652e77696474683d223025222c612e617070656e644368696c642862292c617d2c75706461746550726f67726573734261723a66756e6374696f6e28612c62297b61262628612e66697273744368696c642e7374796c652e77696474683d622b222522297d2c75706461746550726f6772657373426172556e6b6e6f776e3a66756e6374696f6e2861297b61262628612e636c6173734e616d653d2270726f67726573732070726f67726573732d7374726970656420616374697665222c612e66697273744368696c642e7374796c652e77696474683d223130302522297d7d292c662e64656661756c74732e7468656d65732e626f6f747374726170333d662e41627374726163745468656d652e657874656e64287b67657453656c656374496e7075743a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b0a2f2f656c2e7374796c652e7769647468203d20276175746f273b0a72657475726e20622e636c6173734e616d652b3d22666f726d2d636f6e74726f6c222c627d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b612e636c6173734e616d653d22636f6c2d6d642d222b627d2c6166746572496e70757452656164793a66756e6374696f6e2861297b612e636f6e74726f6c67726f75707c7c28612e636f6e74726f6c67726f75703d746869732e636c6f7365737428612c222e666f726d2d67726f757022292c746869732e636c6f7365737428612c222e636f6d706163742229262628612e636f6e74726f6c67726f75702e7374796c652e6d617267696e426f74746f6d3d3029297d2c6765745465787461726561496e7075743a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e742822746578746172656122293b72657475726e20612e636c6173734e616d653d22666f726d2d636f6e74726f6c222c617d2c67657452616e6765496e7075743a66756e6374696f6e28612c622c63297b0a2f2f20544f444f3a207573652062657474657220736c696465720a72657475726e20746869732e5f737570657228612c622c63297d2c676574466f726d496e7075744669656c643a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e22636865636b626f7822213d3d61262628622e636c6173734e616d652b3d22666f726d2d636f6e74726f6c22292c627d2c676574466f726d436f6e74726f6c3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e2061262622636865636b626f78223d3d3d622e747970653f28642e636c6173734e616d652b3d2220636865636b626f78222c612e617070656e644368696c642862292c612e7374796c652e666f6e7453697a653d2231347078222c642e7374796c652e6d617267696e546f703d2230222c642e617070656e644368696c642861292c622e7374796c652e706f736974696f6e3d2272656c6174697665222c622e7374796c652e637373466c6f61743d226c65667422293a28642e636c6173734e616d652b3d2220666f726d2d67726f7570222c61262628612e636c6173734e616d652b3d2220636f6e74726f6c2d6c6162656c222c642e617070656e644368696c64286129292c642e617070656e644368696c64286229292c632626642e617070656e644368696c642863292c647d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2277656c6c2077656c6c2d736d222c612e7374796c652e70616464696e67426f74746f6d3d302c617d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227022293b72657475726e20622e636c6173734e616d653d2268656c702d626c6f636b222c622e696e6e657248544d4c3d612c627d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20612e7374796c652e6d617267696e4c6566743d2231307078222c617d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2262746e2d67726f7570222c617d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d746869732e5f737570657228612c622c63293b72657475726e20642e636c6173734e616d652b3d2262746e2062746e2d64656661756c74222c647d2c6765745461626c653a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e7428227461626c6522293b72657475726e20612e636c6173734e616d653d227461626c65207461626c652d626f726465726564222c612e7374796c652e77696474683d226175746f222c612e7374796c652e6d617857696474683d226e6f6e65222c617d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b612e636f6e74726f6c67726f7570262628612e636f6e74726f6c67726f75702e636c6173734e616d652b3d22206861732d6572726f72222c612e6572726d73673f612e6572726d73672e7374796c652e646973706c61793d22223a28612e6572726d73673d646f63756d656e742e637265617465456c656d656e7428227022292c612e6572726d73672e636c6173734e616d653d2268656c702d626c6f636b206572726f726d7367222c612e636f6e74726f6c67726f75702e617070656e644368696c6428612e6572726d736729292c612e6572726d73672e74657874436f6e74656e743d62297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e6572726d7367262628612e6572726d73672e7374796c652e646973706c61793d226e6f6e65222c612e636f6e74726f6c67726f75702e636c6173734e616d653d612e636f6e74726f6c67726f75702e636c6173734e616d652e7265706c616365282f5c733f6861732d6572726f722f672c222229297d2c676574546162486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e696e6e657248544d4c3d223c64697620636c6173733d2774616273206c6973742d67726f757020636f6c2d6d642d32273e3c2f6469763e3c64697620636c6173733d27636f6c2d6d642d3130273e3c2f6469763e222c612e636c6173734e616d653d22726f7773222c617d2c6765745461623a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20622e636c6173734e616d653d226c6973742d67726f75702d6974656d222c622e736574417474726962757465282268726566222c222322292c622e617070656e644368696c642861292c627d2c6d61726b5461624163746976653a66756e6374696f6e2861297b612e636c6173734e616d652b3d2220616374697665227d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c733f6163746976652f672c2222297d2c67657450726f67726573734261723a66756e6374696f6e28297b76617220613d302c623d3130302c633d302c643d646f63756d656e742e637265617465456c656d656e74282264697622293b642e636c6173734e616d653d2270726f6772657373223b76617220653d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20652e636c6173734e616d653d2270726f67726573732d626172222c652e7365744174747269627574652822726f6c65222c2270726f677265737362617222292c652e7365744174747269627574652822617269612d76616c75656e6f77222c63292c652e7365744174747269627574652822617269612d76616c75656d696e222c61292c652e7365744174747269627574652822617269612d76616c75656e6178222c62292c652e696e6e657248544d4c3d632b2225222c642e617070656e644368696c642865292c647d2c75706461746550726f67726573734261723a66756e6374696f6e28612c62297b69662861297b76617220633d612e66697273744368696c642c643d622b2225223b632e7365744174747269627574652822617269612d76616c75656e6f77222c62292c632e7374796c652e77696474683d642c632e696e6e657248544d4c3d647d7d2c75706461746550726f6772657373426172556e6b6e6f776e3a66756e6374696f6e2861297b69662861297b76617220623d612e66697273744368696c643b612e636c6173734e616d653d2270726f67726573732070726f67726573732d7374726970656420616374697665222c622e72656d6f76654174747269627574652822617269612d76616c75656e6f7722292c622e7374796c652e77696474683d2231303025222c622e696e6e657248544d4c3d22227d7d7d292c0a2f2f204261736520466f756e646174696f6e207468656d650a662e64656661756c74732e7468656d65732e666f756e646174696f6e3d662e41627374726163745468656d652e657874656e64287b6765744368696c64456469746f72486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e7374796c652e6d617267696e426f74746f6d3d2231357078222c617d2c67657453656c656374496e7075743a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e6d696e57696474683d226e6f6e65222c622e7374796c652e70616464696e673d22357078222c622e7374796c652e6d617267696e546f703d22337078222c627d2c67657453776974636865723a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e70616464696e6752696768743d22387078222c627d2c6166746572496e70757452656164793a66756e6374696f6e2861297b746869732e636c6f7365737428612c222e636f6d706163742229262628612e7374796c652e6d617267696e426f74746f6d3d30292c612e67726f75703d746869732e636c6f7365737428612c222e666f726d2d636f6e74726f6c22297d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c627d2c676574466f726d496e7075744669656c643a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e77696474683d2231303025222c622e7374796c652e6d617267696e426f74746f6d3d22636865636b626f78223d3d3d613f2230223a2231327078222c627d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227022293b72657475726e20622e74657874436f6e74656e743d612c622e7374796c652e6d617267696e546f703d222d31307078222c622e7374796c652e666f6e745374796c653d226974616c6963222c627d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2270616e656c222c612e7374796c652e70616464696e67426f74746f6d3d302c617d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20612e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c612e7374796c652e6d617267696e4c6566743d2231307078222c612e7374796c652e766572746963616c416c69676e3d226d6964646c65222c617d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22627574746f6e2d67726f7570222c617d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d746869732e5f737570657228612c622c63293b72657475726e20642e636c6173734e616d652b3d2220736d616c6c20627574746f6e222c647d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b612e67726f7570262628612e67726f75702e636c6173734e616d652b3d22206572726f72222c612e6572726d73673f612e6572726d73672e7374796c652e646973706c61793d22223a28612e696e7365727441646a6163656e7448544d4c28226166746572656e64222c273c736d616c6c20636c6173733d226572726f72223e3c2f736d616c6c3e27292c612e6572726d73673d612e706172656e744e6f64652e676574456c656d656e74734279436c6173734e616d6528226572726f7222295b305d292c612e6572726d73672e74657874436f6e74656e743d62297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e6572726d7367262628612e67726f75702e636c6173734e616d653d612e67726f75702e636c6173734e616d652e7265706c616365282f206572726f722f672c2222292c612e6572726d73672e7374796c652e646973706c61793d226e6f6e6522297d2c67657450726f67726573734261723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b612e636c6173734e616d653d2270726f6772657373223b76617220623d646f63756d656e742e637265617465456c656d656e7428227370616e22293b72657475726e20622e636c6173734e616d653d226d65746572222c622e7374796c652e77696474683d223025222c612e617070656e644368696c642862292c617d2c75706461746550726f67726573734261723a66756e6374696f6e28612c62297b61262628612e66697273744368696c642e7374796c652e77696474683d622b222522297d2c75706461746550726f6772657373426172556e6b6e6f776e3a66756e6374696f6e2861297b61262628612e66697273744368696c642e7374796c652e77696474683d223130302522297d7d292c0a2f2f20466f756e646174696f6e2033205370656369666963205468656d650a662e64656661756c74732e7468656d65732e666f756e646174696f6e333d662e64656661756c74732e7468656d65732e666f756e646174696f6e2e657874656e64287b676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e7374796c652e666f6e7453697a653d222e36656d222c617d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e666f6e745765696768743d22626f6c64222c627d2c676574546162486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22726f77222c612e696e6e657248544d4c3d223c646c20636c6173733d277461627320766572746963616c2074776f20636f6c756d6e73273e3c2f646c3e3c64697620636c6173733d27746162732d636f6e74656e742074656e20636f6c756d6e73273e3c2f6469763e222c617d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b76617220633d5b227a65726f222c226f6e65222c2274776f222c227468726565222c22666f7572222c2266697665222c22736978222c22736576656e222c226569676874222c226e696e65222c2274656e222c22656c6576656e222c227477656c7665225d3b612e636c6173734e616d653d22636f6c756d6e7320222b635b625d7d2c6765745461623a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e742822646422292c633d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20632e736574417474726962757465282268726566222c222322292c632e617070656e644368696c642861292c622e617070656e644368696c642863292c627d2c676574546162436f6e74656e74486f6c6465723a66756e6374696f6e2861297b72657475726e20612e6368696c6472656e5b315d7d2c676574546162436f6e74656e743a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22636f6e74656e7420616374697665222c612e7374796c652e70616464696e674c6566743d22357078222c617d2c6d61726b5461624163746976653a66756e6374696f6e2861297b612e636c6173734e616d652b3d2220616374697665227d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c732a6163746976652f672c2222297d2c6164645461623a66756e6374696f6e28612c62297b612e6368696c6472656e5b305d2e617070656e644368696c642862297d7d292c0a2f2f20466f756e646174696f6e2034205370656369666963205468656d650a662e64656661756c74732e7468656d65732e666f756e646174696f6e343d662e64656661756c74732e7468656d65732e666f756e646174696f6e2e657874656e64287b676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e7374796c652e666f6e7453697a653d222e36656d222c617d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b612e636c6173734e616d653d22636f6c756d6e73206c617267652d222b627d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e666f6e7453697a653d222e3872656d222c627d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e666f6e745765696768743d22626f6c64222c627d7d292c0a2f2f20466f756e646174696f6e2035205370656369666963205468656d650a662e64656661756c74732e7468656d65732e666f756e646174696f6e353d662e64656661756c74732e7468656d65732e666f756e646174696f6e2e657874656e64287b676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e666f6e7453697a653d222e3872656d222c627d2c73657447726964436f6c756d6e53697a653a66756e6374696f6e28612c62297b612e636c6173734e616d653d22636f6c756d6e73206d656469756d2d222b627d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d746869732e5f737570657228612c622c63293b72657475726e20642e636c6173734e616d653d642e636c6173734e616d652e7265706c616365282f5c732a736d616c6c2f672c2222292b222074696e79222c647d2c676574546162486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e696e6e657248544d4c3d223c646c20636c6173733d277461627320766572746963616c273e3c2f646c3e3c64697620636c6173733d27746162732d636f6e74656e7420766572746963616c273e3c2f6469763e222c617d2c6765745461623a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e742822646422292c633d646f63756d656e742e637265617465456c656d656e7428226122293b72657475726e20632e736574417474726962757465282268726566222c222322292c632e617070656e644368696c642861292c622e617070656e644368696c642863292c627d2c676574546162436f6e74656e74486f6c6465723a66756e6374696f6e2861297b72657475726e20612e6368696c6472656e5b315d7d2c676574546162436f6e74656e743a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22636f6e74656e7420616374697665222c612e7374796c652e70616464696e674c6566743d22357078222c617d2c6d61726b5461624163746976653a66756e6374696f6e2861297b612e636c6173734e616d652b3d2220616374697665227d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c732a6163746976652f672c2222297d2c6164645461623a66756e6374696f6e28612c62297b612e6368696c6472656e5b305d2e617070656e644368696c642862297d7d292c662e64656661756c74732e7468656d65732e666f756e646174696f6e363d662e64656661756c74732e7468656d65732e666f756e646174696f6e352e657874656e64287b676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2263616c6c6f7574207365636f6e64617279222c617d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d22627574746f6e2d67726f75702074696e79222c612e7374796c652e6d617267696e426f74746f6d3d302c617d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e646973706c61793d22626c6f636b222c627d2c676574466f726d436f6e74726f6c3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20642e636c6173734e616d653d22666f726d2d636f6e74726f6c222c612626642e617070656e644368696c642861292c22636865636b626f78223d3d3d622e747970653f612e696e736572744265666f726528622c612e66697273744368696c64293a613f612e617070656e644368696c642862293a642e617070656e644368696c642862292c632626612e617070656e644368696c642863292c647d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b696628612e67726f7570297b696628612e67726f75702e636c6173734e616d652b3d22206572726f72222c612e6572726d736729612e6572726d73672e7374796c652e646973706c61793d22222c612e636c6173734e616d653d22223b656c73657b76617220633d646f63756d656e742e637265617465456c656d656e7428227370616e22293b632e636c6173734e616d653d22666f726d2d6572726f722069732d76697369626c65222c612e67726f75702e676574456c656d656e747342795461674e616d6528226c6162656c22295b305d2e617070656e644368696c642863292c612e636c6173734e616d653d612e636c6173734e616d652b222069732d696e76616c69642d696e707574222c612e6572726d73673d637d612e6572726d73672e74657874436f6e74656e743d627d7d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e6572726d7367262628612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f2069732d696e76616c69642d696e7075742f672c2222292c612e6572726d73672e706172656e744e6f64652626612e6572726d73672e706172656e744e6f64652e72656d6f76654368696c6428612e6572726d736729297d7d292c662e64656661756c74732e7468656d65732e68746d6c3d662e41627374726163745468656d652e657874656e64287b676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e646973706c61793d22626c6f636b222c622e7374796c652e6d617267696e426f74746f6d3d22337078222c622e7374796c652e666f6e745765696768743d22626f6c64222c627d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e7374796c652e666f6e7453697a653d222e38656d222c622e7374796c652e6d617267696e3d302c622e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c622e7374796c652e666f6e745374796c653d226974616c6963222c627d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e7374796c652e626f726465723d2231707820736f6c69642023646464222c612e7374796c652e70616464696e673d22357078222c612e7374796c652e6d617267696e3d22357078222c612e7374796c652e626f726465725261646975733d22337078222c617d2c6765744368696c64456469746f72486f6c6465723a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e7374796c652e6d617267696e426f74746f6d3d22387078222c617d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20612e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c612e7374796c652e6d617267696e4c6566743d2231307078222c612e7374796c652e666f6e7453697a653d222e38656d222c612e7374796c652e766572746963616c416c69676e3d226d6964646c65222c617d2c6765745461626c653a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e7374796c652e626f72646572426f74746f6d3d2231707820736f6c69642023636363222c612e7374796c652e6d617267696e426f74746f6d3d22357078222c617d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b696628612e7374796c652e626f72646572436f6c6f723d22726564222c612e6572726d736729612e6572726d73672e7374796c652e646973706c61793d22626c6f636b223b656c73657b76617220633d746869732e636c6f7365737428612c222e666f726d2d636f6e74726f6c22293b612e6572726d73673d646f63756d656e742e637265617465456c656d656e74282264697622292c612e6572726d73672e7365744174747269627574652822636c617373222c226572726d736722292c612e6572726d73672e7374796c653d612e6572726d73672e7374796c657c7c7b7d2c612e6572726d73672e7374796c652e636f6c6f723d22726564222c632e617070656e644368696c6428612e6572726d7367297d612e6572726d73672e696e6e657248544d4c3d22222c612e6572726d73672e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286229297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e7374796c652e626f72646572436f6c6f723d22222c612e6572726d7367262628612e6572726d73672e7374796c652e646973706c61793d226e6f6e6522297d2c67657450726f67726573734261723a66756e6374696f6e28297b76617220613d3130302c623d302c633d646f63756d656e742e637265617465456c656d656e74282270726f677265737322293b72657475726e20632e73657441747472696275746528226d6178222c61292c632e736574417474726962757465282276616c7565222c62292c637d2c75706461746550726f67726573734261723a66756e6374696f6e28612c62297b612626612e736574417474726962757465282276616c7565222c62297d2c75706461746550726f6772657373426172556e6b6e6f776e3a66756e6374696f6e2861297b612626612e72656d6f7665417474726962757465282276616c756522297d7d292c662e64656661756c74732e7468656d65732e6a717565727975693d662e41627374726163745468656d652e657874656e64287b6765745461626c653a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e736574417474726962757465282263656c6c70616464696e67222c35292c612e736574417474726962757465282263656c6c73706163696e67222c30292c617d2c6765745461626c6548656164657243656c6c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20622e636c6173734e616d653d2275692d73746174652d616374697665222c622e7374796c652e666f6e745765696768743d22626f6c64222c627d2c6765745461626c6543656c6c3a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20612e636c6173734e616d653d2275692d7769646765742d636f6e74656e74222c617d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20612e7374796c652e6d617267696e4c6566743d2231307078222c612e7374796c652e666f6e7453697a653d222e36656d222c612e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c617d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d746869732e6765744465736372697074696f6e2861293b72657475726e20622e7374796c652e6d617267696e4c6566743d2231307078222c622e7374796c652e646973706c61793d22696e6c696e652d626c6f636b222c627d2c676574466f726d436f6e74726f6c3a66756e6374696f6e28612c622c63297b76617220643d746869732e5f737570657228612c622c63293b72657475726e22636865636b626f78223d3d3d622e747970653f28642e7374796c652e6c696e654865696768743d2232357078222c642e7374796c652e70616464696e673d22337078203022293a642e7374796c652e70616464696e673d223470782030203870782030222c647d2c6765744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428227370616e22293b72657475726e20622e7374796c652e666f6e7453697a653d222e38656d222c622e7374796c652e666f6e745374796c653d226974616c6963222c622e74657874436f6e74656e743d612c627d2c676574427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2275692d627574746f6e736574222c612e7374796c652e666f6e7453697a653d222e37656d222c617d2c676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d646f63756d656e742e637265617465456c656d656e7428226c6162656c22293b72657475726e20622e7374796c652e666f6e745765696768743d22626f6c64222c622e7374796c652e646973706c61793d22626c6f636b222c622e74657874436f6e74656e743d612c627d2c676574427574746f6e3a66756e6374696f6e28612c622c63297b76617220643d646f63756d656e742e637265617465456c656d656e742822627574746f6e22293b642e636c6173734e616d653d2275692d627574746f6e2075692d7769646765742075692d73746174652d64656661756c742075692d636f726e65722d616c6c222c0a2f2f2049636f6e206f6e6c790a62262621613f28642e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d6f6e6c79222c622e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d7072696d6172792075692d69636f6e2d7072696d617279222c642e617070656e644368696c64286229293a623f28642e636c6173734e616d652b3d222075692d627574746f6e2d746578742d69636f6e2d7072696d617279222c622e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d7072696d6172792075692d69636f6e2d7072696d617279222c642e617070656e644368696c64286229293a642e636c6173734e616d652b3d222075692d627574746f6e2d746578742d6f6e6c79223b76617220653d646f63756d656e742e637265617465456c656d656e7428227370616e22293b72657475726e20652e636c6173734e616d653d2275692d627574746f6e2d74657874222c652e74657874436f6e74656e743d617c7c637c7c222e222c642e617070656e644368696c642865292c642e73657441747472696275746528227469746c65222c63292c647d2c736574427574746f6e546578743a66756e6374696f6e28612c622c632c64297b612e696e6e657248544d4c3d22222c612e636c6173734e616d653d2275692d627574746f6e2075692d7769646765742075692d73746174652d64656661756c742075692d636f726e65722d616c6c222c0a2f2f2049636f6e206f6e6c790a63262621623f28612e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d6f6e6c79222c632e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d7072696d6172792075692d69636f6e2d7072696d617279222c612e617070656e644368696c64286329293a633f28612e636c6173734e616d652b3d222075692d627574746f6e2d746578742d69636f6e2d7072696d617279222c632e636c6173734e616d652b3d222075692d627574746f6e2d69636f6e2d7072696d6172792075692d69636f6e2d7072696d617279222c612e617070656e644368696c64286329293a612e636c6173734e616d652b3d222075692d627574746f6e2d746578742d6f6e6c79223b76617220653d646f63756d656e742e637265617465456c656d656e7428227370616e22293b652e636c6173734e616d653d2275692d627574746f6e2d74657874222c652e74657874436f6e74656e743d627c7c647c7c222e222c612e617070656e644368696c642865292c612e73657441747472696275746528227469746c65222c64297d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d646f63756d656e742e637265617465456c656d656e74282264697622293b72657475726e20612e636c6173734e616d653d2275692d7769646765742d636f6e74656e742075692d636f726e65722d616c6c222c612e7374796c652e70616464696e673d2231656d20312e34656d222c612e7374796c652e6d617267696e426f74746f6d3d2232307078222c617d2c6166746572496e70757452656164793a66756e6374696f6e2861297b612e636f6e74726f6c737c7c28612e636f6e74726f6c733d746869732e636c6f7365737428612c222e666f726d2d636f6e74726f6c2229297d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b612e636f6e74726f6c73262628612e6572726d73673f612e6572726d73672e7374796c652e646973706c61793d22223a28612e6572726d73673d646f63756d656e742e637265617465456c656d656e74282264697622292c612e6572726d73672e636c6173734e616d653d2275692d73746174652d6572726f72222c612e636f6e74726f6c732e617070656e644368696c6428612e6572726d736729292c612e6572726d73672e74657874436f6e74656e743d62297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e6572726d7367262628612e6572726d73672e7374796c652e646973706c61793d226e6f6e6522297d2c6d61726b5461624163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c732a75692d7769646765742d6865616465722f672c2222292b222075692d73746174652d616374697665227d2c6d61726b546162496e6163746976653a66756e6374696f6e2861297b612e636c6173734e616d653d612e636c6173734e616d652e7265706c616365282f5c732a75692d73746174652d6163746976652f672c2222292b222075692d7769646765742d686561646572227d7d292c662e64656661756c74732e7468656d65732e62617265626f6e65733d662e41627374726163745468656d652e657874656e64287b676574466f726d496e7075744c6162656c3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20627d2c676574466f726d496e7075744465736372697074696f6e3a66756e6374696f6e2861297b76617220623d746869732e5f73757065722861293b72657475726e20627d2c676574496e64656e74656450616e656c3a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20617d2c6765744368696c64456469746f72486f6c6465723a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20617d2c676574486561646572427574746f6e486f6c6465723a66756e6374696f6e28297b76617220613d746869732e676574427574746f6e486f6c64657228293b72657475726e20617d2c6765745461626c653a66756e6374696f6e28297b76617220613d746869732e5f737570657228293b72657475726e20617d2c616464496e7075744572726f723a66756e6374696f6e28612c62297b696628612e6572726d736729612e6572726d73672e7374796c652e646973706c61793d22626c6f636b223b656c73657b76617220633d746869732e636c6f7365737428612c222e666f726d2d636f6e74726f6c22293b612e6572726d73673d646f63756d656e742e637265617465456c656d656e74282264697622292c612e6572726d73672e7365744174747269627574652822636c617373222c226572726d736722292c632e617070656e644368696c6428612e6572726d7367297d612e6572726d73672e696e6e657248544d4c3d22222c612e6572726d73672e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465286229297d2c72656d6f7665496e7075744572726f723a66756e6374696f6e2861297b612e7374796c652e626f72646572436f6c6f723d22222c612e6572726d7367262628612e6572726d73672e7374796c652e646973706c61793d226e6f6e6522297d2c67657450726f67726573734261723a66756e6374696f6e28297b76617220613d3130302c623d302c633d646f63756d656e742e637265617465456c656d656e74282270726f677265737322293b72657475726e20632e73657441747472696275746528226d6178222c61292c632e736574417474726962757465282276616c7565222c62292c637d2c75706461746550726f67726573734261723a66756e6374696f6e28612c62297b612626612e736574417474726962757465282276616c7565222c62297d2c75706461746550726f6772657373426172556e6b6e6f776e3a66756e6374696f6e2861297b612626612e72656d6f7665417474726962757465282276616c756522297d7d292c662e416273747261637449636f6e4c69623d612e657874656e64287b6d617070696e673a7b636f6c6c617073653a22222c657870616e643a22222c2264656c657465223a22222c656469743a22222c6164643a22222c63616e63656c3a22222c736176653a22222c6d6f766575703a22222c6d6f7665646f776e3a22227d2c69636f6e5f7072656669783a22222c67657449636f6e436c6173733a66756e6374696f6e2861297b72657475726e20746869732e6d617070696e675b615d3f746869732e69636f6e5f7072656669782b746869732e6d617070696e675b615d3a6e756c6c7d2c67657449636f6e3a66756e6374696f6e2861297b76617220623d746869732e67657449636f6e436c6173732861293b69662821622972657475726e206e756c6c3b76617220633d646f63756d656e742e637265617465456c656d656e7428226922293b72657475726e20632e636c6173734e616d653d622c637d7d292c662e64656661756c74732e69636f6e6c6962732e626f6f747374726170323d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a2263686576726f6e2d646f776e222c657870616e643a2263686576726f6e2d7570222c2264656c657465223a227472617368222c656469743a2270656e63696c222c6164643a22706c7573222c63616e63656c3a2262616e2d636972636c65222c736176653a226f6b222c6d6f766575703a226172726f772d7570222c6d6f7665646f776e3a226172726f772d646f776e227d2c69636f6e5f7072656669783a2269636f6e2d227d292c662e64656661756c74732e69636f6e6c6962732e626f6f747374726170333d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a2263686576726f6e2d646f776e222c657870616e643a2263686576726f6e2d7269676874222c2264656c657465223a2272656d6f7665222c656469743a2270656e63696c222c6164643a22706c7573222c63616e63656c3a22666c6f7070792d72656d6f7665222c736176653a22666c6f7070792d7361766564222c6d6f766575703a226172726f772d7570222c6d6f7665646f776e3a226172726f772d646f776e227d2c69636f6e5f7072656669783a22676c79706869636f6e20676c79706869636f6e2d227d292c662e64656661756c74732e69636f6e6c6962732e666f6e74617765736f6d65333d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a2263686576726f6e2d646f776e222c657870616e643a2263686576726f6e2d7269676874222c2264656c657465223a2272656d6f7665222c656469743a2270656e63696c222c6164643a22706c7573222c63616e63656c3a2262616e2d636972636c65222c736176653a2273617665222c6d6f766575703a226172726f772d7570222c6d6f7665646f776e3a226172726f772d646f776e227d2c69636f6e5f7072656669783a2269636f6e2d227d292c662e64656661756c74732e69636f6e6c6962732e666f6e74617765736f6d65343d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a2263617265742d7371756172652d6f2d646f776e222c657870616e643a2263617265742d7371756172652d6f2d7269676874222c2264656c657465223a2274696d6573222c656469743a2270656e63696c222c6164643a22706c7573222c63616e63656c3a2262616e222c736176653a2273617665222c6d6f766575703a226172726f772d7570222c6d6f7665646f776e3a226172726f772d646f776e227d2c69636f6e5f7072656669783a2266612066612d227d292c662e64656661756c74732e69636f6e6c6962732e666f756e646174696f6e323d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a226d696e7573222c657870616e643a22706c7573222c2264656c657465223a2272656d6f7665222c656469743a2265646974222c6164643a226164642d646f63222c63616e63656c3a226572726f72222c736176653a22636865636b6d61726b222c6d6f766575703a2275702d6172726f77222c6d6f7665646f776e3a22646f776e2d6172726f77227d2c69636f6e5f7072656669783a22666f756e6469636f6e2d227d292c662e64656661756c74732e69636f6e6c6962732e666f756e646174696f6e333d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a226d696e7573222c657870616e643a22706c7573222c2264656c657465223a2278222c656469743a2270656e63696c222c6164643a22706167652d616464222c63616e63656c3a22782d636972636c65222c736176653a2273617665222c6d6f766575703a226172726f772d7570222c6d6f7665646f776e3a226172726f772d646f776e227d2c69636f6e5f7072656669783a2266692d227d292c662e64656661756c74732e69636f6e6c6962732e6a717565727975693d662e416273747261637449636f6e4c69622e657874656e64287b6d617070696e673a7b636f6c6c617073653a22747269616e676c652d312d73222c657870616e643a22747269616e676c652d312d65222c2264656c657465223a227472617368222c656469743a2270656e63696c222c6164643a22706c7573746869636b222c63616e63656c3a22636c6f7365746869636b222c736176653a226469736b222c6d6f766575703a226172726f77746869636b2d312d6e222c6d6f7665646f776e3a226172726f77746869636b2d312d73227d2c69636f6e5f7072656669783a2275692d69636f6e2075692d69636f6e2d227d292c662e64656661756c74732e74656d706c617465735b2264656661756c74225d3d66756e6374696f6e28297b72657475726e7b636f6d70696c653a66756e6374696f6e2861297b76617220623d612e6d61746368282f7b7b5c732a285b612d7a412d5a302d395c2d5f205c2e5d2b295c732a7d7d2f67292c633d622626622e6c656e6774683b0a2f2f2053686f7274637574206966207468652074656d706c61746520636f6e7461696e73206e6f207661726961626c65730a69662821632972657475726e2066756e6374696f6e28297b72657475726e20617d3b666f722876617220643d5b5d2c653d66756e6374696f6e2861297b76617220632c653d625b615d2e7265706c616365282f5b7b7d5d2b2f672c2222292e7472696d28292e73706c697428222e22292c663d652e6c656e6774683b696628663e31297b76617220673b633d66756e6374696f6e2862297b666f7228673d622c613d303b613c66262628673d675b655b615d5d2c67293b612b2b293b72657475726e20677d7d656c736520653d655b305d2c633d66756e6374696f6e2861297b72657475726e20615b655d7d3b642e70757368287b733a625b615d2c723a637d297d2c663d303b663c633b662b2b29652866293b0a2f2f2054686520636f6d70696c65642066756e6374696f6e0a72657475726e2066756e6374696f6e2862297b76617220652c673d612b22223b666f7228663d303b663c633b662b2b29653d645b665d2c673d672e7265706c61636528652e732c652e72286229293b72657475726e20677d7d7d7d2c662e64656661756c74732e74656d706c617465732e656a733d66756e6374696f6e28297b72657475726e212177696e646f772e454a5326267b636f6d70696c653a66756e6374696f6e2861297b76617220623d6e65772077696e646f772e454a53287b746578743a617d293b72657475726e2066756e6374696f6e2861297b72657475726e20622e72656e6465722861297d7d7d7d2c662e64656661756c74732e74656d706c617465732e68616e646c65626172733d66756e6374696f6e28297b72657475726e2077696e646f772e48616e646c65626172737d2c662e64656661756c74732e74656d706c617465732e686f67616e3d66756e6374696f6e28297b72657475726e212177696e646f772e486f67616e26267b636f6d70696c653a66756e6374696f6e2861297b76617220623d77696e646f772e486f67616e2e636f6d70696c652861293b72657475726e2066756e6374696f6e2861297b72657475726e20622e72656e6465722861297d7d7d7d2c662e64656661756c74732e74656d706c617465732e6d61726b75703d66756e6374696f6e28297b72657475726e21282177696e646f772e4d61726b7c7c2177696e646f772e4d61726b2e75702926267b636f6d70696c653a66756e6374696f6e2861297b72657475726e2066756e6374696f6e2862297b72657475726e2077696e646f772e4d61726b2e757028612c62297d7d7d7d2c662e64656661756c74732e74656d706c617465732e6d757374616368653d66756e6374696f6e28297b72657475726e212177696e646f772e4d7573746163686526267b636f6d70696c653a66756e6374696f6e2861297b72657475726e2066756e6374696f6e2862297b72657475726e2077696e646f772e4d757374616368652e72656e64657228612c62297d7d7d7d2c662e64656661756c74732e74656d706c617465732e737769673d66756e6374696f6e28297b72657475726e2077696e646f772e737769677d2c662e64656661756c74732e74656d706c617465732e756e64657273636f72653d66756e6374696f6e28297b72657475726e212177696e646f772e5f26267b636f6d70696c653a66756e6374696f6e2861297b72657475726e2066756e6374696f6e2862297b72657475726e2077696e646f772e5f2e74656d706c61746528612c62297d7d7d7d2c0a2f2f20536574207468652064656661756c74207468656d650a662e64656661756c74732e7468656d653d2268746d6c222c0a2f2f20536574207468652064656661756c742074656d706c61746520656e67696e650a662e64656661756c74732e74656d706c6174653d2264656661756c74222c0a2f2f2044656661756c74206f7074696f6e73207768656e20696e697469616c697a696e67204a534f4e20456469746f720a662e64656661756c74732e6f7074696f6e733d7b7d2c0a2f2f20537472696e67207472616e736c6174652066756e6374696f6e0a662e64656661756c74732e7472616e736c6174653d66756e6374696f6e28612c62297b76617220633d662e64656661756c74732e6c616e6775616765735b662e64656661756c74732e6c616e67756167655d3b6966282163297468726f7722556e6b6e6f776e206c616e677561676520222b662e64656661756c74732e6c616e67756167653b76617220643d635b615d7c7c662e64656661756c74732e6c616e6775616765735b662e64656661756c74732e64656661756c745f6c616e67756167655d5b615d3b69662822756e646566696e6564223d3d747970656f662064297468726f7722556e6b6e6f776e207472616e736c61746520737472696e6720222b613b6966286229666f722876617220653d303b653c622e6c656e6774683b652b2b29643d642e7265706c616365286e65772052656745787028225c5c7b5c5c7b222b652b227d7d222c226722292c625b655d293b72657475726e20647d2c0a2f2f205472616e736c6174696f6e20737472696e677320616e642064656661756c74206c616e6775616765730a662e64656661756c74732e64656661756c745f6c616e67756167653d22656e222c662e64656661756c74732e6c616e67756167653d662e64656661756c74732e64656661756c745f6c616e67756167652c662e64656661756c74732e6c616e6775616765732e656e3d7b2f2a2a0a2020202a205768656e20612070726f7065727479206973206e6f74207365740a2020202a2f0a6572726f725f6e6f747365743a2250726f7065727479206d75737420626520736574222c2f2a2a0a2020202a205768656e206120737472696e67206d757374206e6f7420626520656d7074790a2020202a2f0a6572726f725f6e6f74656d7074793a2256616c7565207265717569726564222c2f2a2a0a2020202a205768656e20612076616c7565206973206e6f74206f6e65206f662074686520656e756d6572617465642076616c7565730a2020202a2f0a6572726f725f656e756d3a2256616c7565206d757374206265206f6e65206f662074686520656e756d6572617465642076616c756573222c2f2a2a0a2020202a205768656e20612076616c756520646f65736e27742076616c696461746520616e7920736368656d61206f6620612027616e794f662720636f6d62696e6174696f6e0a2020202a2f0a6572726f725f616e794f663a2256616c7565206d7573742076616c696461746520616761696e7374206174206c65617374206f6e65206f66207468652070726f766964656420736368656d6173222c2f2a2a0a2020202a205768656e20612076616c756520646f65736e27742076616c69646174650a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206e756d626572206f6620736368656d6173207468652076616c756520646f6573206e6f742076616c69646174650a2020202a2f0a6572726f725f6f6e654f663a2256616c7565206d7573742076616c696461746520616761696e73742065786163746c79206f6e65206f66207468652070726f766964656420736368656d61732e2049742063757272656e746c792076616c69646174657320616761696e7374207b7b307d7d206f662074686520736368656d61732e222c2f2a2a0a2020202a205768656e20612076616c756520646f6573206e6f742076616c6964617465206120276e6f742720736368656d610a2020202a2f0a6572726f725f6e6f743a2256616c7565206d757374206e6f742076616c696461746520616761696e7374207468652070726f766964656420736368656d61222c2f2a2a0a2020202a205768656e20612076616c756520646f6573206e6f74206d6174636820616e79206f66207468652070726f76696465642074797065730a2020202a2f0a6572726f725f747970655f756e696f6e3a2256616c7565206d757374206265206f6e65206f66207468652070726f7669646564207479706573222c2f2a2a0a2020202a205768656e20612076616c756520646f6573206e6f74206d617463682074686520676976656e20747970650a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a205468652074797065207468652076616c75652073686f756c64206265206f660a2020202a2f0a6572726f725f747970653a2256616c7565206d757374206265206f662074797065207b7b307d7d222c2f2a2a0a2020202a20205768656e207468652076616c75652076616c696461746573206f6e65206f662074686520646973616c6c6f7765642074797065730a2020202a2f0a6572726f725f646973616c6c6f775f756e696f6e3a2256616c7565206d757374206e6f74206265206f6e65206f66207468652070726f766964656420646973616c6c6f776564207479706573222c2f2a2a0a2020202a20205768656e207468652076616c75652076616c696461746573206120646973616c6c6f77656420747970650a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a205468652074797065207468652076616c75652073686f756c64206e6f74206265206f660a2020202a2f0a6572726f725f646973616c6c6f773a2256616c7565206d757374206e6f74206265206f662074797065207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c7565206973206e6f742061206d756c7469706c65206f66206f7220646976697369626c65206279206120676976656e206e756d6265720a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206e756d626572206d656e74696f6e65642061626f76650a2020202a2f0a6572726f725f6d756c7469706c654f663a2256616c7565206d7573742062652061206d756c7469706c65206f66207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c75652069732067726561746572207468616e206974277320737570706f73656420746f20626520286578636c7573697665290a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d6178696d756d0a2020202a2f0a6572726f725f6d6178696d756d5f6578636c3a2256616c7565206d757374206265206c657373207468616e207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c75652069732067726561746572207468616e206974277320737570706f73656420746f2062652028696e636c75736976650a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d6178696d756d0a2020202a2f0a6572726f725f6d6178696d756d5f696e636c3a2256616c7565206d757374206265206174206d6f7374207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c7565206973206c6573736572207468616e206974277320737570706f73656420746f20626520286578636c7573697665290a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d696e696d756d0a2020202a2f0a6572726f725f6d696e696d756d5f6578636c3a2256616c7565206d7573742062652067726561746572207468616e207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c7565206973206c6573736572207468616e206974277320737570706f73656420746f2062652028696e636c7573697665290a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d696e696d756d0a2020202a2f0a6572726f725f6d696e696d756d5f696e636c3a2256616c7565206d757374206265206174206c65617374207b7b307d7d222c2f2a2a0a2020202a205768656e20612076616c7565206861766520746f6f206d616e7920636861726163746572730a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d6178696d756d2063686172616374657220636f756e740a2020202a2f0a6572726f725f6d61784c656e6774683a2256616c7565206d757374206265206174206d6f7374207b7b307d7d2063686172616374657273206c6f6e67222c2f2a2a0a2020202a205768656e20612076616c756520646f6573206e6f74206861766520656e6f75676820636861726163746572730a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d696e696d756d2063686172616374657220636f756e740a2020202a2f0a6572726f725f6d696e4c656e6774683a2256616c7565206d757374206265206174206c65617374207b7b307d7d2063686172616374657273206c6f6e67222c2f2a2a0a2020202a205768656e20612076616c756520646f6573206e6f74206d61746368206120676976656e207061747465726e0a2020202a2f0a6572726f725f7061747465726e3a2256616c7565206d757374206d6174636820746865207061747465726e207b7b307d7d222c2f2a2a0a2020202a205768656e20616e20617272617920686173206164646974696f6e616c206974656d732077686572656173206974206973206e6f7420737570706f73656420746f0a2020202a2f0a6572726f725f6164646974696f6e616c4974656d733a224e6f206164646974696f6e616c206974656d7320616c6c6f77656420696e2074686973206172726179222c2f2a2a0a2020202a205768656e2074686572652061726520746f206d616e79206974656d7320696e20616e2061727261790a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d6178696d756d206974656d20636f756e740a2020202a2f0a6572726f725f6d61784974656d733a2256616c7565206d7573742068617665206174206d6f7374207b7b307d7d206974656d73222c2f2a2a0a2020202a205768656e20746865726520617265206e6f7420656e6f756768206974656d7320696e20616e2061727261790a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d696e696d756d206974656d20636f756e740a2020202a2f0a6572726f725f6d696e4974656d733a2256616c7565206d7573742068617665206174206c65617374207b7b307d7d206974656d73222c2f2a2a0a2020202a205768656e20616e20617272617920697320737570706f73656420746f206861766520756e69717565206974656d732062757420686173206475706c6963617465730a2020202a2f0a6572726f725f756e697175654974656d733a224172726179206d757374206861766520756e69717565206974656d73222c2f2a2a0a2020202a205768656e2074686572652061726520746f6f206d616e792070726f7065727469657320696e20616e206f626a6563740a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d6178696d756d2070726f706572747920636f756e740a2020202a2f0a6572726f725f6d617850726f706572746965733a224f626a656374206d7573742068617665206174206d6f7374207b7b307d7d2070726f70657274696573222c2f2a2a0a2020202a205768656e20746865726520617265206e6f7420656e6f7567682070726f7065727469657320696e20616e206f626a6563740a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206d696e696d756d2070726f706572747920636f756e740a2020202a2f0a6572726f725f6d696e50726f706572746965733a224f626a656374206d7573742068617665206174206c65617374207b7b307d7d2070726f70657274696573222c2f2a2a0a2020202a205768656e20612072657175697265642070726f7065727479206973206e6f7420646566696e65640a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206e616d65206f6620746865206d697373696e672070726f70657274790a2020202a2f0a6572726f725f72657175697265643a224f626a656374206973206d697373696e67207468652072657175697265642070726f706572747920277b7b307d7d27222c2f2a2a0a2020202a205768656e20746865726520697320616e206164646974696f6e616c2070726f70657274792069732073657420776865726561732074686572652073686f756c64206265206e6f6e650a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206e616d65206f6620746865206164646974696f6e616c2070726f70657274790a2020202a2f0a6572726f725f6164646974696f6e616c5f70726f706572746965733a224e6f206164646974696f6e616c2070726f7065727469657320616c6c6f7765642c206275742070726f7065727479207b7b307d7d20697320736574222c2f2a2a0a2020202a205768656e206120646570656e64656e6379206973206e6f74207265736f6c7665640a2020202a20407661726961626c65732054686973206b65792074616b6573206f6e65207661726961626c653a20546865206e616d65206f6620746865206d697373696e672070726f706572747920666f722074686520646570656e64656e63790a2020202a2f0a6572726f725f646570656e64656e63793a224d75737420686176652070726f7065727479207b7b307d7d222c2f2a2a0a2020202a2054657874206f6e2044656c65746520416c6c20627574746f6e730a2020202a2f0a627574746f6e5f64656c6574655f616c6c3a22416c6c222c2f2a2a0a2020202a205469746c65206f6e2044656c65746520416c6c20627574746f6e730a2020202a2f0a627574746f6e5f64656c6574655f616c6c5f7469746c653a2244656c65746520416c6c222c2f2a2a0a202020202a2054657874206f6e2044656c657465204c61737420627574746f6e730a202020202a20407661726961626c652054686973206b65792074616b6573206f6e65207661726961626c653a20546865207469746c65206f66206f626a65637420746f2064656c6574650a202020202a2f0a627574746f6e5f64656c6574655f6c6173743a224c617374207b7b307d7d222c2f2a2a0a202020202a205469746c65206f6e2044656c657465204c61737420627574746f6e730a202020202a20407661726961626c652054686973206b65792074616b6573206f6e65207661726961626c653a20546865207469746c65206f66206f626a65637420746f2064656c6574650a202020202a2f0a627574746f6e5f64656c6574655f6c6173745f7469746c653a2244656c657465204c617374207b7b307d7d222c2f2a2a0a202020202a205469746c65206f6e2041646420526f7720627574746f6e730a202020202a20407661726961626c652054686973206b65792074616b6573206f6e65207661726961626c653a20546865207469746c65206f66206f626a65637420746f206164640a202020202a2f0a627574746f6e5f6164645f726f775f7469746c653a22416464207b7b307d7d222c2f2a2a0a202020202a205469746c65206f6e204d6f766520446f776e20627574746f6e730a202020202a2f0a627574746f6e5f6d6f76655f646f776e5f7469746c653a224d6f766520646f776e222c2f2a2a0a202020202a205469746c65206f6e204d6f766520557020627574746f6e730a202020202a2f0a627574746f6e5f6d6f76655f75705f7469746c653a224d6f7665207570222c2f2a2a0a202020202a205469746c65206f6e2044656c65746520526f7720627574746f6e730a202020202a20407661726961626c652054686973206b65792074616b6573206f6e65207661726961626c653a20546865207469746c65206f66206f626a65637420746f2064656c6574650a202020202a2f0a627574746f6e5f64656c6574655f726f775f7469746c653a2244656c657465207b7b307d7d222c2f2a2a0a202020202a205469746c65206f6e2044656c65746520526f7720627574746f6e732c2073686f72742076657273696f6e20286e6f20706172616d65746572207769746820746865206f626a656374207469746c65290a202020202a2f0a627574746f6e5f64656c6574655f726f775f7469746c655f73686f72743a2244656c657465222c2f2a2a0a202020202a205469746c65206f6e20436f6c6c6170736520627574746f6e730a202020202a2f0a627574746f6e5f636f6c6c617073653a22436f6c6c61707365222c2f2a2a0a202020202a205469746c65206f6e20457870616e6420627574746f6e730a202020202a2f0a627574746f6e5f657870616e643a22457870616e64227d2c0a2f2f204d697363656c6c616e656f757320506c7567696e2053657474696e67730a662e706c7567696e733d7b6163653a7b7468656d653a22227d2c65706963656469746f723a7b7d2c7363656469746f723a7b7d2c73656c656374323a7b7d2c73656c656374697a653a7b7d7d2c0a2f2f2044656661756c74207065722d656469746f72206f7074696f6e730a6428662e64656661756c74732e656469746f72732c66756e6374696f6e28612c62297b662e64656661756c74732e656469746f72735b615d2e6f7074696f6e733d622e6f7074696f6e737c7c7b7d7d292c0a2f2f20536574207468652064656661756c74207265736f6c766572730a2f2f2055736520226d756c7469706c652220617320612066616c6c206261636b20666f722065766572797468696e670a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b69662822737472696e6722213d747970656f6620612e747970652972657475726e226d756c7469706c65227d292c0a2f2f204966207468652074797065206973206e6f7420736574206275742070726f706572746965732061726520646566696e65642c2077652063616e20696e6665722074686520747970652069732061637475616c6c79206f626a6563740a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f2049662074686520736368656d6120697320612073696d706c6520747970650a69662821612e747970652626612e70726f706572746965732972657475726e226f626a656374227d292c0a2f2f2049662074686520747970652069732073657420616e642069742773206120626173696320747970652c2075736520746865207072696d697469766520656469746f720a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f2049662074686520736368656d6120697320612073696d706c6520747970650a69662822737472696e67223d3d747970656f6620612e747970652972657475726e20612e747970657d292c0a2f2f20426f6f6c65616e20656469746f72730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b69662822626f6f6c65616e223d3d3d612e74797065290a2f2f204966206578706c696369746c792073657420746f2027636865636b626f78272c2075736520746861740a2f2f204966206578706c696369746c792073657420746f2027636865636b626f78272c2075736520746861740a72657475726e22636865636b626f78223d3d3d612e666f726d61747c7c612e6f7074696f6e732626612e6f7074696f6e732e636865636b626f783f22636865636b626f78223a662e706c7567696e732e73656c656374697a652e656e61626c653f2273656c656374697a65223a2273656c656374227d292c0a2f2f2055736520746865206d756c7469706c6520656469746f7220666f7220736368656d617320776865726520746865206074797065602069732073657420746f2022616e79220a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f2049662074686520736368656d612063616e206265206f6620616e7920747970650a69662822616e79223d3d3d612e747970652972657475726e226d756c7469706c65227d292c0a2f2f20456469746f7220666f722062617365363420656e636f6465642066696c65730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f2049662074686520736368656d612063616e206265206f6620616e7920747970650a69662822737472696e67223d3d3d612e747970652626612e6d65646961262622626173653634223d3d3d612e6d656469612e62696e617279456e636f64696e672972657475726e22626173653634227d292c0a2f2f20456469746f7220666f722075706c6f6164696e672066696c65730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b69662822737472696e67223d3d3d612e7479706526262275726c223d3d3d612e666f726d61742626612e6f7074696f6e732626612e6f7074696f6e732e75706c6f61643d3d3d2130262677696e646f772e46696c655265616465722972657475726e2275706c6f6164227d292c0a2f2f2055736520746865207461626c6520656469746f7220666f722061727261797320776974682074686520666f726d61742073657420746f20607461626c65600a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f20547970652060617272617960207769746820666f726d61742073657420746f20607461626c65600a696628226172726179223d3d612e747970652626227461626c65223d3d612e666f726d61742972657475726e227461626c65227d292c0a2f2f2055736520746865206073656c6563746020656469746f7220666f722064796e616d696320656e756d536f7572636520656e756d730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b696628612e656e756d536f757263652972657475726e20662e706c7567696e732e73656c656374697a652e656e61626c653f2273656c656374697a65223a2273656c656374227d292c0a2f2f20557365207468652060656e756d60206f72206073656c6563746020656469746f727320666f7220736368656d6173207769746820656e756d6572617465642070726f706572746965730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b696628615b22656e756d225d297b696628226172726179223d3d3d612e747970657c7c226f626a656374223d3d3d612e747970652972657475726e22656e756d223b696628226e756d626572223d3d3d612e747970657c7c22696e7465676572223d3d3d612e747970657c7c22737472696e67223d3d3d612e747970652972657475726e20662e706c7567696e732e73656c656374697a652e656e61626c653f2273656c656374697a65223a2273656c656374227d7d292c0a2f2f205370656369616c697a656420656469746f727320666f7220617272617973206f6620737472696e67730a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b696628226172726179223d3d3d612e747970652626612e6974656d7326262141727261792e6973417272617928612e6974656d73292626612e756e697175654974656d7326265b22737472696e67222c226e756d626572222c22696e7465676572225d2e696e6465784f6628612e6974656d732e74797065293e3d30297b0a2f2f20466f7220656e756d65726174656420737472696e67732c206e756d6265722c206f7220696e7465676572730a696628612e6974656d735b22656e756d225d2972657475726e226d756c746973656c656374223b696628662e706c7567696e732e73656c656374697a652e656e61626c65262622737472696e67223d3d3d612e6974656d732e747970652972657475726e22617272617953656c656374697a65227d7d292c0a2f2f2055736520746865206d756c7469706c6520656469746f7220666f7220736368656d6173207769746820606f6e654f6660207365740a662e64656661756c74732e7265736f6c766572732e756e73686966742866756e6374696f6e2861297b0a2f2f204966207468697320736368656d61207573657320606f6e654f6660206f722060616e794f66600a696628612e6f6e654f667c7c612e616e794f662972657475726e226d756c7469706c65227d292c2f2a2a0a202a2054686973206973206120736d616c6c207772617070657220666f72207573696e67204a534f4e20456469746f72206c696b652061207479706963616c206a517565727920706c7567696e2e0a202a2f0a66756e6374696f6e28297b69662877696e646f772e6a51756572797c7c77696e646f772e5a6570746f297b76617220613d77696e646f772e6a51756572797c7c77696e646f772e5a6570746f3b612e6a736f6e656469746f723d662e64656661756c74732c612e666e2e6a736f6e656469746f723d66756e6374696f6e2861297b76617220623d746869732c633d746869732e6461746128226a736f6e656469746f7222293b6966282276616c7565223d3d3d61297b6966282163297468726f77224d75737420696e697469616c697a65206a736f6e656469746f72206265666f72652067657474696e672f73657474696e67207468652076616c7565223b0a2f2f205365742076616c75650a6966282128617267756d656e74732e6c656e6774683e31292972657475726e20632e67657456616c756528293b632e73657456616c756528617267756d656e74735b315d297d656c73657b6966282276616c6964617465223d3d3d61297b6966282163297468726f77224d75737420696e697469616c697a65206a736f6e656469746f72206265666f72652076616c69646174696e67223b0a2f2f2056616c696461746520612073706563696669632076616c75650a2f2f2056616c696461746520612073706563696669632076616c75650a72657475726e20617267756d656e74732e6c656e6774683e313f632e76616c696461746528617267756d656e74735b315d293a632e76616c696461746528297d2264657374726f79223d3d3d613f63262628632e64657374726f7928292c746869732e6461746128226a736f6e656469746f72222c6e756c6c29293a280a2f2f2044657374726f792066697273740a632626632e64657374726f7928292c0a2f2f2043726561746520656469746f720a633d6e6577206628746869732e6765742830292c61292c746869732e6461746128226a736f6e656469746f72222c63292c0a2f2f205365747570206576656e74206c697374656e6572730a632e6f6e28226368616e6765222c66756e6374696f6e28297b622e7472696767657228226368616e676522297d292c632e6f6e28227265616479222c66756e6374696f6e28297b622e747269676765722822726561647922297d29297d72657475726e20746869737d7d7d28292c77696e646f772e4a534f4e456469746f723d667d28293b0a2f2f2320736f757263654d617070696e6755524c3d6a736f6e656469746f722e6d696e2e6a732e6d6170 - - - 0 - 0 - - 0 - - - - - - - - - -
- '''%(self.getLangStr('ZMSFORMULATOR_BUTTON_SUBMIT',self.REQUEST.get('lang')), self.getLangStr('ZMSFORMULATOR_BUTTON_RESTORE',self.REQUEST.get('lang'))) - else: - output = ''' -
- - - - - - -
- '''%(frmu.GoogleAPIKey,self.getLangStr('ZMSFORMULATOR_BUTTON_SUBMIT',self.REQUEST.get('lang')),self.getLangStr('ZMSFORMULATOR_BUTTON_RESTORE',self.REQUEST.get('lang'))) - - if (frmu.feedbackMsg!=''): - feedback = ''' - - '''%(frmu.feedbackMsg.replace('\n','
')) - else: - feedback = ''' - - '''%(self.getLangStr('ZMSFORMULATOR_FEEDBACK_MSG',self.REQUEST.get('lang')).replace('\n','
')) - - self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') - self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') - return output + jsed.render(frmu) + feedback -]]> -
- - 0 - 0 - - 0 - -
-
- - - - - - 0 - 0 - - 0 - - - - - - 0 and True or False - if not authorized: - raise zExceptions.Unauthorized - else: - frmu = ZMSFormulator.ZMSFormulator(self) - self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') - self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') - self.REQUEST.RESPONSE.setHeader('Content-Type','text/html; charset=utf-8') - data = frmu.printDataRaw() - data = unicode(data,'utf-8') - return data.replace('#/#',' | ')]]> - - - 0 - 0 - - 0 - - - - - - - - - 0 - 0 - - 0 - - - - - - 0 and True or False - if not authorized: - raise zExceptions.Unauthorized - else: - frmu = ZMSFormulator.ZMSFormulator(self) - frmu.clearData()]]> - - - 0 - 0 - - 0 - - - - - - 0 and True or False - if not authorized: - raise zExceptions.Unauthorized - else: - frmu = ZMSFormulator.ZMSFormulator(self) - html = HTMLParser.HTMLParser() - content_type = 'text/csv; charset=utf-8' - filename = '"%s_%s_%s.csv"'%(self.getLangStr('TYPE_ZMSFORMULATOR'),frmu.titlealt,frmu.this.getId()) - self.REQUEST.RESPONSE.setHeader('Content-Type',content_type) - self.REQUEST.RESPONSE.setHeader('Content-Disposition','attachment;filename='+filename) - self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') - self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') - data = frmu.printDataRaw(frmt='csv') - if (self.REQUEST.get('encode','')=='excel'): - data = html.unescape(unicode(data,'utf-8')).encode('latin-1',errors='xmlcharrefreplace') - tab = {'ä':228,'ö':246,'ü':252,'Ö':214,'Ä':196,'Ü':220,'é':233,'è':232, - 'ê':234,'à':224,'â':226,'ò':242,'ô':244,'ù':249,'û':251} - for t in tab: - if data.find(t) >= 0: - data = data.replace(t, chr(tab[t])) - # preserve variants of apostrophes - data = data.replace(''','\'') - data = data.replace('ʻ','\'') - data = data.replace('ʼ','\'') - data = data.replace('ˮ','\'') - data = data.replace('՚','\'') - data = data.replace('‘','\'') - data = data.replace('’','\'') - data = data.replace('‚','\'') - data = data.replace('‛','\'') - data = data.replace('‹','\'') - data = data.replace('›','\'') - data = data.replace('Ꞌ','\'') - data = data.replace('ꞌ','\'') - data = data.replace(''','\'') - # preserve variants of quotation marks - data = data.replace('"','"') - data = data.replace('«','"') - data = data.replace('»','"') - data = data.replace('“','"') - data = data.replace('”','"') - data = data.replace('„','"') - data = data.replace('‟','"') - data = data.replace('〝','"') - data = data.replace('〞','"') - data = data.replace('〟','"') - data = data.replace('"','"') - else: - data = html.unescape(unicode(data,'utf-8')) - return data]]> - - - 0 - 0 - - 0 - - - -
-
- - - - - - - - - - - - - - - 0 - - - - - -
-
-
-
-
diff --git a/setup.py b/setup.py deleted file mode 100644 index bd7dcdc..0000000 --- a/setup.py +++ /dev/null @@ -1,118 +0,0 @@ -################################################################################ -# -# Copyright (c) 2019 HOFFMANN+LIEBENBERG in association with SNTL Publishing -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -################################################################################ - -import os -import sys -from setuptools import setup -from setuptools import find_packages -from distutils.sysconfig import get_python_lib - -# @see https://docs.python.org/2/library/site.html -# site_packages = site.getusersitepackages() -# does not work in virtual environments -# due to site.py of virtualenv's installation is not compatible -# @see https://github.com/pypa/virtualenv/issues/355 -for path in sys.path: - if path.startswith(sys.prefix) and path.endswith('site-packages'): - site_packages = path - else: - site_packages = get_python_lib() - -VERSION = '3.4.16' - -zmspkg_name = 'formulator' -branch_name = 'master' -downld_file = 'https://github.com/zms-publishing/zms3.%s/archive/%s.zip'%(zmspkg_name, branch_name) - -if 'dev' in VERSION: - import subprocess - # retrieve commit hash from local Git repository if available - rtn = subprocess.Popen("git -C %s describe"%(os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))), - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - shell=True, universal_newlines=True) - rtn = rtn.communicate()[0].strip() - rtn = rtn.split('-g') - rtn.reverse() - - # otherwise retrieve commit hash from remote Git repository at Bitbucket - if rtn[0].strip() == '': - rtn = subprocess.Popen("curl --head " + downld_file, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - shell=True, universal_newlines=True) - rtn = rtn.communicate()[0].strip() - rtn = rtn.split('.zip')[0].split('filename=zms3-%s-'%zmspkg_name) - rtn.reverse() - - commit_hash = rtn[0].strip()[:7] - - VERSION = '%s-%s%s'%(VERSION, branch_name, len(commit_hash)==7 and '-'+commit_hash or '') - -INSTALL_REQUIRES = [ -# Upstream requirement - install explicitly! -# 'ZMS3>=3.1.0', - 'sqlalchemy', -] - -DATA_FILES = [ - (os.path.join(site_packages, 'zms3/formulator'), ['zms3/formulator/JSONEditor.js']), - (os.path.join(site_packages, 'zms3/formulator/conf'), ['conf/zms3.formulator.example.xml']), - (os.path.join(site_packages, 'zms3/formulator/conf'), ['conf/zms3.formulator.langdict.xml']), - (os.path.join(site_packages, 'zms3/formulator/conf'), ['conf/zms3.formulator.metaobj.xml']), -] - -PACKAGE_DATA = find_packages() - -CLASSIFIERS = [ - 'Development Status :: 4 - Beta', - 'Framework :: Zope2', - 'Programming Language :: Python :: 2.7', - 'Operating System :: OS Independent', - 'Environment :: Web Environment', - 'Topic :: Internet :: WWW/HTTP :: Site Management', - 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', - 'Intended Audience :: Education', - 'Intended Audience :: Science/Research', - 'Intended Audience :: Customer Service', - 'Intended Audience :: End Users/Desktop', - 'Intended Audience :: Healthcare Industry', - 'Intended Audience :: Information Technology', - 'Intended Audience :: Telecommunications Industry', - 'Intended Audience :: Financial and Insurance Industry', - 'License :: OSI Approved :: GNU Affero General Public License v3', -] - -setup( - name = 'zms3.formulator', - description = 'Submit JSON-based HTML-Forms into a SQL-Storage with protection by reCAPTCHA', -# long_description = README, - version = VERSION, - author = 'HOFFMANN+LIEBENBERG in association with SNTL Publishing, Berlin', - author_email = 'zms@sntl-publishing.com', - url = 'https://github.com/zms-publishing/zms3.formulator', - download_url = 'https://github.com/zms-publishing/zms3.formulator/releases', - namespace_packages = ['zms3'], - packages = ['zms3.formulator'], - package_dir = {'zms3.formulator': 'zms3/formulator'}, - package_data = {'zms3.formulator': PACKAGE_DATA}, - install_requires = INSTALL_REQUIRES, - data_files = DATA_FILES, - classifiers = CLASSIFIERS, - include_package_data = True, - zip_safe = False, -) diff --git a/zms3/formulator/JSONEditor.py b/zms3.formulator.lib/JSONEditor.py similarity index 97% rename from zms3/formulator/JSONEditor.py rename to zms3.formulator.lib/JSONEditor.py index 23a7f92..295856a 100644 --- a/zms3/formulator/JSONEditor.py +++ b/zms3.formulator.lib/JSONEditor.py @@ -19,8 +19,14 @@ import json import os +import Products.zms.standard as standard -class JSONEditor: + +def JSONEditor(self, obj): + return JSONEditor_class(obj) + + +class JSONEditor_class: def __init__(self, obj): @@ -158,12 +164,8 @@ def __init__(self, obj): def render(self, obj): - __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) - f = open(os.path.join(__location__, 'JSONEditor.js')); - editor = f.read() - f.close() - script = '\n' + editor = standard.http_import(obj.this, obj.this.getMetaobjManager().absolute_url() + '/zms3.formulator.lib.jsoneditor.custom.js') editor = editor % (self.getLangDict(obj), obj.thisURLPath, obj.this.REQUEST.get('lang'), obj.GoogleAPIKey, obj.options, self.mandatory_validators, obj.onReady, diff --git a/zms3/formulator/ZMSFormulator.py b/zms3.formulator.lib/ZMSFormulator.py similarity index 99% rename from zms3/formulator/ZMSFormulator.py rename to zms3.formulator.lib/ZMSFormulator.py index c5f517d..ceb6b02 100644 --- a/zms3/formulator/ZMSFormulator.py +++ b/zms3.formulator.lib/ZMSFormulator.py @@ -28,12 +28,16 @@ import json import urllib import urllib2 -from zms3.formulator import JSONEditor from sqlalchemy import * from sqlalchemy.exc import * from sqlalchemy.dialects.mysql import DATETIME -class ZMSFormulator: + +def ZMSFormulator(self, this): + return ZMSFormulator_class(this) + + +class ZMSFormulator_class: def __init__(self, this): @@ -201,7 +205,7 @@ def setData(self, receivedData): # save data as records to SQLDB if self.SQLStorage and not self.noStorage: - modelledData = JSONEditor.JSONEditor(self) + modelledData = self.this.JSONEditor(self) from datetime import datetime ins = self.sqldb.insert().values( diff --git a/zms3.formulator.lib/__init__.py b/zms3.formulator.lib/__init__.py new file mode 100644 index 0000000..145d7ab --- /dev/null +++ b/zms3.formulator.lib/__init__.py @@ -0,0 +1,117 @@ +class zms3_formulator_lib: + """ + python-representation of zms3.formulator.lib + """ + + # Access + access = {"delete_custom":"" + ,"delete_deny":[] + ,"insert_custom":"" + ,"insert_deny":[]} + + # Id + id = "zms3.formulator.lib" + + # Name + name = "zms3.formulator.lib" + + # Package + package = "zms3.formulator" + + # Revision + revision = "3.5.0" + + # Type + type = "ZMSLibrary" + + # Attrs + class Attrs: + jsoneditorminjs = {"default":"" + ,"id":"jsoneditor.min.js" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"JSONEditor-1.3.5" + ,"repetitive":0 + ,"type":"resource"} + + jsoneditorcustomjs = {"default":"" + ,"id":"jsoneditor.custom.js" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"JSONEditor-custom" + ,"repetitive":0 + ,"type":"resource"} + + jsoneditor = {"default":"" + ,"id":"JSONEditor" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"JSONEditor" + ,"repetitive":0 + ,"type":"External Method"} + + zmsformulator = {"default":"" + ,"id":"ZMSFormulator" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"ZMSFormulator" + ,"repetitive":0 + ,"type":"External Method"} + + getjsoneditor = {"default":"" + ,"id":"getJSONEditor" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"getJSONEditor" + ,"repetitive":0 + ,"type":"External Method"} + + getjsonschema = {"default":"" + ,"id":"getJSONSchema" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"getJSONSchema" + ,"repetitive":0 + ,"type":"External Method"} + + printdata = {"default":"" + ,"id":"printData" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"printData" + ,"repetitive":0 + ,"type":"External Method"} + + putdata = {"default":"" + ,"id":"putData" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"putData" + ,"repetitive":0 + ,"type":"External Method"} + + resetdata = {"default":"" + ,"id":"resetData" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"resetData" + ,"repetitive":0 + ,"type":"External Method"} + + downloaddata = {"default":"" + ,"id":"downloadData" + ,"keys":[] + ,"mandatory":0 + ,"multilang":0 + ,"name":"downloadData" + ,"repetitive":0 + ,"type":"External Method"} diff --git a/zms3.formulator.lib/downloadData.py b/zms3.formulator.lib/downloadData.py new file mode 100644 index 0000000..e682f02 --- /dev/null +++ b/zms3.formulator.lib/downloadData.py @@ -0,0 +1,56 @@ +import zExceptions +import HTMLParser + +def downloadData(self): + current_roles = self.getUserRoles(self.REQUEST['AUTHENTICATED_USER']) + allowed_roles = ['Manager','ZMSAdministrator','ZMSEditor'] + authorized = len(self.intersection_list(current_roles,allowed_roles))>0 and True or False + if not authorized: + raise zExceptions.Unauthorized + else: + frmu = self.ZMSFormulator(self) + html = HTMLParser.HTMLParser() + content_type = 'text/csv; charset=utf-8' + filename = '"%s_%s_%s.csv"'%(self.getLangStr('TYPE_ZMSFORMULATOR'),frmu.titlealt,frmu.this.getId()) + self.REQUEST.RESPONSE.setHeader('Content-Type',content_type) + self.REQUEST.RESPONSE.setHeader('Content-Disposition','attachment;filename='+filename) + self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') + data = frmu.printDataRaw(frmt='csv') + if (self.REQUEST.get('encode','')=='excel'): + data = html.unescape(unicode(data,'utf-8')).encode('latin-1',errors='xmlcharrefreplace') + tab = {'ä':228,'ö':246,'ü':252,'Ö':214,'Ä':196,'Ü':220,'é':233,'è':232, + 'ê':234,'à':224,'â':226,'ò':242,'ô':244,'ù':249,'û':251} + for t in tab: + if data.find(t) >= 0: + data = data.replace(t, chr(tab[t])) + # preserve variants of apostrophes + data = data.replace(''','\'') + data = data.replace('ʻ','\'') + data = data.replace('ʼ','\'') + data = data.replace('ˮ','\'') + data = data.replace('՚','\'') + data = data.replace('‘','\'') + data = data.replace('’','\'') + data = data.replace('‚','\'') + data = data.replace('‛','\'') + data = data.replace('‹','\'') + data = data.replace('›','\'') + data = data.replace('Ꞌ','\'') + data = data.replace('ꞌ','\'') + data = data.replace(''','\'') + # preserve variants of quotation marks + data = data.replace('"','"') + data = data.replace('«','"') + data = data.replace('»','"') + data = data.replace('“','"') + data = data.replace('”','"') + data = data.replace('„','"') + data = data.replace('‟','"') + data = data.replace('〝','"') + data = data.replace('〞','"') + data = data.replace('〟','"') + data = data.replace('"','"') + else: + data = html.unescape(unicode(data,'utf-8')) + return data \ No newline at end of file diff --git a/zms3.formulator.lib/getJSONEditor.py b/zms3.formulator.lib/getJSONEditor.py new file mode 100644 index 0000000..7ef29c5 --- /dev/null +++ b/zms3.formulator.lib/getJSONEditor.py @@ -0,0 +1,53 @@ +def getJSONEditor(self): + frmu = self.ZMSFormulator(self) + jsed = self.JSONEditor(frmu) + + # Google.API.sitekey.password not configured + if frmu.GoogleAPIKey == 'no_site_key': + output = ''' +
+ + + +
+ '''%(self.getLangStr('ZMSFORMULATOR_BUTTON_SUBMIT',self.REQUEST.get('lang')), self.getLangStr('ZMSFORMULATOR_BUTTON_RESTORE',self.REQUEST.get('lang'))) + else: + output = ''' +
+ + + + + + +
+ '''%(frmu.GoogleAPIKey,self.getLangStr('ZMSFORMULATOR_BUTTON_SUBMIT',self.REQUEST.get('lang')),self.getLangStr('ZMSFORMULATOR_BUTTON_RESTORE',self.REQUEST.get('lang'))) + + if (frmu.feedbackMsg!=''): + feedback = ''' + + '''%(frmu.feedbackMsg.replace('\n','
')) + else: + feedback = ''' + + '''%(self.getLangStr('ZMSFORMULATOR_FEEDBACK_MSG',self.REQUEST.get('lang')).replace('\n','
')) + + self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') + return output + jsed.render(frmu) + feedback \ No newline at end of file diff --git a/zms3.formulator.lib/getJSONSchema.py b/zms3.formulator.lib/getJSONSchema.py new file mode 100644 index 0000000..195e88c --- /dev/null +++ b/zms3.formulator.lib/getJSONSchema.py @@ -0,0 +1,6 @@ +def getJSONSchema(self): + frmu = self.ZMSFormulator(self) + jsed = self.JSONEditor(frmu) + self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') + return jsed.getSchema() \ No newline at end of file diff --git a/zms3/formulator/JSONEditor.js b/zms3.formulator.lib/jsoneditor.custom.js similarity index 100% rename from zms3/formulator/JSONEditor.js rename to zms3.formulator.lib/jsoneditor.custom.js diff --git a/zms3.formulator.lib/jsoneditor.min.js b/zms3.formulator.lib/jsoneditor.min.js new file mode 100644 index 0000000..3d89905 --- /dev/null +++ b/zms3.formulator.lib/jsoneditor.min.js @@ -0,0 +1,19 @@ +/** + * @name JSON Editor + * @description JSON Schema Based Editor + * This library is the continuation of jdorn's great work (see also https://github.com/jdorn/json-editor/issues/800) + * @version 1.3.5 + * @author Jeremy Dorn + * @see https://github.com/jdorn/json-editor/ + * @see https://github.com/json-editor/json-editor + * @license MIT + * @example see README.md and docs/ for requirements, examples and usage info + */ +!function(a,b){"use strict";var c=b(a);"object"==typeof module&&null!=module&&module.exports?module.exports=c:"function"==typeof define&&define.amd?define(function(){return c}):a.JSONEditor=c}("undefined"!=typeof window?window:this,function(a,b){var c;!function(){var a=!1,b=/xyz/.test(function(){window.postMessage("xyz")})?/\b_super\b/:/.*/;return c=function(){},c.extend=function d(c){function e(){!a&&this.init&&this.init.apply(this,arguments)}var f=this.prototype;a=!0;var g=new this;a=!1;for(var h in c)g[h]="function"==typeof c[h]&&"function"==typeof f[h]&&b.test(c[h])?function(a,b){return function(){var c=this._super;this._super=f[a];var d=b.apply(this,arguments);return this._super=c,d}}(h,c[h]):c[h];return e.prototype=g,e.prototype.constructor=e,e.extend=d,e},c}(),function(){function a(a,c){c=c||{bubbles:!1,cancelable:!1,detail:b};var d=document.createEvent("CustomEvent");return d.initCustomEvent(a,c.bubbles,c.cancelable,c.detail),d}a.prototype=window.Event.prototype,window.CustomEvent=a}(),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c0&&a.length-1 in a){for(c=0;c=i&&!j&&(j=!0,b())},c,k)}},f.send()}}),i||b()},expandRefs:function(a){for(a=e({},a);a.$ref;){var b=this.refs_with_info[a.$ref];delete a.$ref;var c="";b.$ref.startsWith("#")&&(c=b.fetchUrl);var d=c+b.$ref;this.refs[d]||(d=c+decodeURIComponent(b.$ref)),a=this.extendSchemas(a,e({},this.refs[d]))}return a},expandSchema:function(a,b){var c,d=this,g=e({},a);if("object"==typeof a.type&&(Array.isArray(a.type)?f(a.type,function(b,c){"object"==typeof c&&(a.type[b]=d.expandSchema(c))}):a.type=d.expandSchema(a.type)),"object"==typeof a.disallow&&(Array.isArray(a.disallow)?f(a.disallow,function(b,c){"object"==typeof c&&(a.disallow[b]=d.expandSchema(c))}):a.disallow=d.expandSchema(a.disallow)),a.anyOf&&f(a.anyOf,function(b,c){a.anyOf[b]=d.expandSchema(c)}),a.dependencies&&f(a.dependencies,function(b,c){"object"!=typeof c||Array.isArray(c)||(a.dependencies[b]=d.expandSchema(c))}),a.not&&(a.not=this.expandSchema(a.not)),a.allOf){for(c=0;ca.minimum:c>=a.minimum,window.math?g=window.math[a.exclusiveMinimum?"larger":"largerEq"](window.math.bignumber(c),window.math.bignumber(a.minimum)):window.Decimal&&(g=new window.Decimal(c)[a.exclusiveMinimum?"gt":"gte"](new window.Decimal(a.minimum))),g||l.push({path:d,property:"minimum",message:this.translate(a.exclusiveMinimum?"error_minimum_excl":"error_minimum_incl",[a.minimum])}))}else if("string"==typeof c)a.maxLength&&(c+"").length>a.maxLength&&l.push({path:d,property:"maxLength",message:this.translate("error_maxLength",[a.maxLength])}),a.minLength&&(c+"").lengtha.maxItems&&l.push({path:d,property:"maxItems",message:this.translate("error_maxItems",[a.maxItems])}),a.minItems&&c.lengtha.maxProperties&&l.push({path:d,property:"maxProperties",message:this.translate("error_maxProperties",[a.maxProperties])})}if(a.minProperties){g=0;for(i in c)c.hasOwnProperty(i)&&g++;g0:this.dependenciesFulfilled=!g||0===g.length):this.dependenciesFulfilled=!1,this.dependenciesFulfilled!==h&&this.notify(),this.dependenciesFulfilled?d.style.display="block":d.style.display="none"}},setContainer:function(a){this.container=a,this.schema.id&&this.container.setAttribute("data-schemaid",this.schema.id),this.schema.type&&"string"==typeof this.schema.type&&this.container.setAttribute("data-schematype",this.schema.type),this.container.setAttribute("data-schemapath",this.path)},preBuild:function(){},build:function(){},postBuild:function(){this.setupWatchListeners(),this.addLinks(),this.setValue(this.getDefault(),!0),this.updateHeaderText(),this.register(),this.onWatchedFieldChange()},setupWatchListeners:function(){var a=this;if(this.watched={},this.schema.vars&&(this.schema.watch=this.schema.vars),this.watched_values={},this.watch_listener=function(){a.refreshWatchedFieldValues()&&a.onWatchedFieldChange()},this.schema.hasOwnProperty("watch")){var b,c,d,e,f;for(var g in this.schema.watch)if(this.schema.watch.hasOwnProperty(g)){if(b=this.schema.watch[g],Array.isArray(b)){if(b.length<2)continue;c=[b[0]].concat(b[1].split("."))}else c=b.split("."),a.theme.closest(a.container,'[data-schemaid="'+c[0]+'"]')||c.unshift("#");if(d=c.shift(),"#"===d&&(d=a.jsoneditor.schema.id||"root"),e=a.theme.closest(a.container,'[data-schemaid="'+d+'"]'),!e)throw"Could not find ancestor node with id "+d;f=e.getAttribute("data-schemapath")+"."+c.join("."),a.jsoneditor.watch(f,a.watch_listener),a.watched[g]=f}}this.schema.headerTemplate&&(this.header_template=this.jsoneditor.compileTemplate(this.schema.headerTemplate,this.template_engine))},addLinks:function(){if(!this.no_link_holder&&(this.link_holder=this.theme.getLinksHolder(),this.container.appendChild(this.link_holder),this.schema.links))for(var a=0;a=0){b=this.theme.getBlockLinkHolder(),c=this.theme.getBlockLink(),c.setAttribute("target","_blank");var j=document.createElement(e);j.setAttribute("controls","controls"),this.theme.createMediaLink(b,c,j),this.link_watchers.push(function(a){var b=f(a),d=g(a);c.setAttribute("href",b),c.textContent=d||b,j.setAttribute("src",b)})}else c=b=this.theme.getBlockLink(),b.setAttribute("target","_blank"),b.textContent=a.rel,this.link_watchers.push(function(a){var c=f(a),d=g(a);b.setAttribute("href",c),b.textContent=d||c});return h&&c&&(h===!0?c.setAttribute("download",""):this.link_watchers.push(function(a){c.setAttribute("download",h(a))})),a["class"]&&c.classList.add(a["class"]),b},refreshWatchedFieldValues:function(){if(this.watched_values){var a={},b=!1,c=this;if(this.watched){var d,e;for(var f in this.watched)this.watched.hasOwnProperty(f)&&(e=c.jsoneditor.getEditor(this.watched[f]),d=e?e.getValue():null,c.watched_values[f]!==d&&(b=!0),a[f]=d)}return a.self=this.getValue(),this.watched_values.self!==a.self&&(b=!0),this.watched_values=a,b}},getWatchedFieldValues:function(){return this.watched_values},updateHeaderText:function(){if(this.header)if(this.header.children.length){for(var a=0;a-1:!!this.jsoneditor.options.required_by_default},getDisplayText:function(a){var b=[],c={};f(a,function(a,b){b.title&&(c[b.title]=c[b.title]||0,c[b.title]++),b.description&&(c[b.description]=c[b.description]||0,c[b.description]++),b.format&&(c[b.format]=c[b.format]||0,c[b.format]++),b.type&&(c[b.type]=c[b.type]||0,c[b.type]++)}),f(a,function(a,d){var e;e="string"==typeof d?d:d.title&&c[d.title]<=1?d.title:d.format&&c[d.format]<=1?d.format:d.type&&c[d.type]<=1?d.type:d.description&&c[d.description]<=1?d.descripton:d.title?d.title:d.format?d.format:d.type?d.type:d.description?d.description:JSON.stringify(d).length<500?JSON.stringify(d):"type",b.push(e)});var d={};return f(b,function(a,e){d[e]=d[e]||0,d[e]++,c[e]>1&&(b[a]=e+" "+d[e])}),b},getValidId:function(a){return a=a===b?"":a.toString(),a.replace(/\s+/g,"-")},setInputAttributes:function(a){if(this.schema.options&&this.schema.options.inputAttributes){var b=this.schema.options.inputAttributes,c=["name","type"].concat(a);for(var d in b)b.hasOwnProperty(d)&&c.indexOf(d.toLowerCase())==-1&&this.input.setAttribute(d,b[d])}},getOption:function(a){try{throw"getOption is deprecated"}catch(b){window.console.error(b)}return this.options[a]},showValidationErrors:function(a){}}),h.defaults.editors["null"]=h.AbstractEditor.extend({getValue:function(){return this.dependenciesFulfilled?null:b},setValue:function(){this.onChange()},getNumColumns:function(){return 2}}),h.defaults.editors.string=h.AbstractEditor.extend({register:function(){this._super(),this.input&&this.input.setAttribute("name",this.formname)},unregister:function(){this._super(),this.input&&this.input.removeAttribute("name")},setValue:function(a,b,c){if((!this.template||c)&&(null===a||"undefined"==typeof a?a="":"object"==typeof a?a=JSON.stringify(a):"string"!=typeof a&&(a=""+a), +a!==this.serialized)){var d=this.sanitize(a);if(this.input.value!==d){this.input.value=d,this.sceditor_instance?this.sceditor_instance.val(d):this.SimpleMDE?this.SimpleMDE.value(d):this.ace_editor&&(this.ace_editor.setValue(d),this.ace_editor.session.getSelection().clearSelection(),this.ace_editor.resize());var e=c||this.getValue()!==a;this.refreshValue(),b?this.is_dirty=!1:"change"===this.jsoneditor.options.show_errors&&(this.is_dirty=!0),this.adjust_height&&this.adjust_height(this.input),this.onChange(e)}}},getNumColumns:function(){var a,b=Math.ceil(Math.max(this.getTitle().length,this.schema.maxLength||0,this.schema.minLength||0)/5);return a="textarea"===this.input_type?6:["text","email"].indexOf(this.input_type)>=0?4:2,Math.min(12,Math.max(b,a))},build:function(){var a=this;if(this.options.compact||(this.header=this.label=this.theme.getFormInputLabel(this.getTitle())),this.schema.description&&(this.description=this.theme.getFormInputDescription(this.schema.description)),this.options.infoText&&(this.infoButton=this.theme.getInfoButton(this.options.infoText)),this.format=this.schema.format,!this.format&&this.schema.media&&this.schema.media.type&&(this.format=this.schema.media.type.replace(/(^(application|text)\/(x-)?(script\.)?)|(-source$)/g,"")),!this.format&&this.options.default_format&&(this.format=this.options.default_format),this.options.format&&(this.format=this.options.format),this.format)if("textarea"===this.format)this.input_type="textarea",this.input=this.theme.getTextareaInput();else if("range"===this.format){this.input_type="range";var b=this.schema.minimum||0,c=this.schema.maximum||Math.max(100,b+1),d=1;this.schema.multipleOf&&(b%this.schema.multipleOf&&(b=Math.ceil(b/this.schema.multipleOf)*this.schema.multipleOf),c%this.schema.multipleOf&&(c=Math.floor(c/this.schema.multipleOf)*this.schema.multipleOf),d=this.schema.multipleOf),this.input=this.theme.getRangeInput(b,c,d)}else["actionscript","batchfile","bbcode","c","c++","cpp","coffee","csharp","css","dart","django","ejs","erlang","golang","groovy","handlebars","haskell","haxe","html","ini","jade","java","javascript","json","less","lisp","lua","makefile","markdown","matlab","mysql","objectivec","pascal","perl","pgsql","php","python","r","ruby","sass","scala","scss","smarty","sql","sqlserver","stylus","svg","twig","vbscript","xml","yaml"].indexOf(this.format)>=0?(this.input_type=this.format,this.source_code=!0,this.input=this.theme.getTextareaInput()):(this.input_type=this.format,this.input=this.theme.getFormInputField(this.input_type));else this.input_type="text",this.input=this.theme.getFormInputField(this.input_type);if("undefined"!=typeof this.schema.maxLength&&this.input.setAttribute("maxlength",this.schema.maxLength),"undefined"!=typeof this.schema.pattern?this.input.setAttribute("pattern",this.schema.pattern):"undefined"!=typeof this.schema.minLength&&this.input.setAttribute("pattern",".{"+this.schema.minLength+",}"),this.options.compact?this.container.classList.add("compact"):this.options.input_width&&(this.input.style.width=this.options.input_width),(this.schema.readOnly||this.schema.readonly||this.schema.template)&&(this.always_disabled=!0,this.input.setAttribute("readonly","true")),this.setInputAttributes(["maxlength","pattern","readonly","min","max","step"]),this.input.addEventListener("change",function(b){if(b.preventDefault(),b.stopPropagation(),a.schema.template)return void(this.value=a.value);var c=this.value,d=a.sanitize(c);c!==d&&(this.value=d),a.is_dirty=!0,a.refreshValue(),a.onChange(!0)}),this.options.input_height&&(this.input.style.height=this.options.input_height),this.options.expand_height&&(this.adjust_height=function(a){if(a){var b,c=a.offsetHeight;if(a.offsetHeight100);)b++,c++,a.style.height=c+"px";else{for(b=0;a.offsetHeight>=a.scrollHeight+3&&!(b>100);)b++,c--,a.style.height=c+"px";a.style.height=c+1+"px"}}},this.input.addEventListener("keyup",function(b){a.adjust_height(this)}),this.input.addEventListener("change",function(b){a.adjust_height(this)}),this.adjust_height()),this.format&&this.input.setAttribute("data-schemaformat",this.format),this.control=this.theme.getFormControl(this.label,this.input,this.description,this.infoButton),"range"===this.format){var e=document.createElement("output");e.setAttribute("class","range-output"),this.control.appendChild(e),e.value=this.schema["default"],this.input.addEventListener("change",function(){e.value=a.input.value}),this.input.addEventListener("input",function(){e.value=a.input.value})}this.container.appendChild(this.control),window.requestAnimationFrame(function(){a.input.parentNode&&a.afterInputReady(),a.adjust_height&&a.adjust_height(a.input)}),this.schema.template?(this.template=this.jsoneditor.compileTemplate(this.schema.template,this.template_engine),this.refreshValue()):this.refreshValue()},postBuild:function(){this._super(),window.Cleave&&this.schema.options&&"object"==typeof this.schema.options.cleave&&(this.cleave=new window.Cleave(this.input,this.schema.options.cleave))},enable:function(){this.always_disabled||(this.input.disabled=!1,this._super())},disable:function(a){a&&(this.always_disabled=!0),this.input.disabled=!0,this._super()},afterInputReady:function(){var a,b=this;if(this.source_code)if(this.options.wysiwyg&&["html","bbcode"].indexOf(this.input_type)>=0&&window.jQuery&&window.jQuery.fn&&window.jQuery.fn.sceditor)a=e({},{plugins:"html"===b.input_type?"xhtml":"bbcode",emoticonsEnabled:!1,width:"100%",height:300},h.plugins.sceditor,b.options.sceditor_options||{}),window.jQuery(b.input).sceditor(a),b.sceditor_instance=window.jQuery(b.input).sceditor("instance"),b.sceditor_instance.blur(function(){var a=window.jQuery("
"+b.sceditor_instance.val()+"
");window.jQuery("#sceditor-start-marker,#sceditor-end-marker,.sceditor-nlf",a).remove(),b.input.value=a.html(),b.value=b.input.value,b.is_dirty=!0,b.onChange(!0)});else if("markdown"===this.input_type&&window.SimpleMDE)a=e({},h.plugins.SimpleMDE,{element:this.input}),this.SimpleMDE=new window.SimpleMDE(a),this.SimpleMDE.codemirror.on("change",function(){b.value=b.SimpleMDE.value(),b.is_dirty=!0,b.onChange(!0)});else if(window.ace){var c=this.input_type;"cpp"!==c&&"c++"!==c&&"c"!==c||(c="c_cpp"),this.ace_container=document.createElement("div"),this.ace_container.style.width="100%",this.ace_container.style.position="relative",this.ace_container.style.height="400px",this.input.parentNode.insertBefore(this.ace_container,this.input),this.input.style.display="none",this.ace_editor=window.ace.edit(this.ace_container);var d=this.schema.options&&this.schema.options.ace;d&&this.ace_editor.setOptions(d),this.ace_editor.setValue(this.getValue()),this.ace_editor.session.getSelection().clearSelection(),this.ace_editor.resize(),h.plugins.ace.theme&&this.ace_editor.setTheme("ace/theme/"+h.plugins.ace.theme),this.ace_editor.getSession().setMode("ace/mode/"+this.schema.format),this.ace_editor.on("change",function(){var a=b.ace_editor.getValue();b.input.value=a,b.refreshValue(),b.is_dirty=!0,b.onChange(!0)})}b.theme.afterInputReady(b.input)},refreshValue:function(){this.value=this.input.value,"string"!=typeof this.value&&(this.value=""),this.serialized=this.value},destroy:function(){this.sceditor_instance?this.sceditor_instance.destroy():this.SimpleMDE?(this.SimpleMDE.toTextArea(),this.SimpleMDE=null):this.ace_editor&&this.ace_editor.destroy(),this.cleave&&this.cleave.destroy(),this.template=null,this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this.label&&this.label.parentNode&&this.label.parentNode.removeChild(this.label),this.description&&this.description.parentNode&&this.description.parentNode.removeChild(this.description),this._super()},sanitize:function(a){return a},onWatchedFieldChange:function(){var a;this.template&&(a=this.getWatchedFieldValues(),this.setValue(this.template(a),!1,!0)),this._super()},showValidationErrors:function(a){var b=this;if("always"===this.jsoneditor.options.show_errors);else if(!this.is_dirty&&this.previous_error_setting===this.jsoneditor.options.show_errors)return;this.previous_error_setting=this.jsoneditor.options.show_errors;var c=[];f(a,function(a,d){d.path===b.path&&c.push(d.message)}),c.length?this.theme.addInputError(this.input,c.join(". ")+"."):this.theme.removeInputError(this.input)}}),h.defaults.editors.hidden=h.AbstractEditor.extend({register:function(){this._super(),this.input&&this.input.setAttribute("name",this.formname)},unregister:function(){this._super(),this.input&&this.input.removeAttribute("name")},setValue:function(a,b,c){if((!this.template||c)&&(null===a||"undefined"==typeof a?a="":"object"==typeof a?a=JSON.stringify(a):"string"!=typeof a&&(a=""+a),a!==this.serialized)){var d=this.sanitize(a);if(this.input.value!==d){this.input.value=d;var e=c||this.getValue()!==a;this.refreshValue(),b?this.is_dirty=!1:"change"===this.jsoneditor.options.show_errors&&(this.is_dirty=!0),this.adjust_height&&this.adjust_height(this.input),this.onChange(e)}}},getNumColumns:function(){return 2},enable:function(){this._super()},disable:function(){this._super()},refreshValue:function(){this.value=this.input.value,"string"!=typeof this.value&&(this.value=""),this.serialized=this.value},destroy:function(){this.template=null,this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this.label&&this.label.parentNode&&this.label.parentNode.removeChild(this.label),this.description&&this.description.parentNode&&this.description.parentNode.removeChild(this.description),this._super()},sanitize:function(a){return a},onWatchedFieldChange:function(){var a;this.template&&(a=this.getWatchedFieldValues(),this.setValue(this.template(a),!1,!0)),this._super()},build:function(){this.format=this.schema.format,!this.format&&this.options.default_format&&(this.format=this.options.default_format),this.options.format&&(this.format=this.options.format),this.input_type="hidden",this.input=this.theme.getFormInputField(this.input_type),this.format&&this.input.setAttribute("data-schemaformat",this.format),this.container.appendChild(this.input),this.schema.template?(this.template=this.jsoneditor.compileTemplate(this.schema.template,this.template_engine),this.refreshValue()):this.refreshValue()}}),h.defaults.editors.number=h.defaults.editors.string.extend({build:function(){if(this._super(),"undefined"!=typeof this.schema.minimum){var a=this.schema.minimum;"undefined"!=typeof this.schema.exclusiveMinimum&&(a+=1),this.input.setAttribute("min",a)}if("undefined"!=typeof this.schema.maximum){var b=this.schema.maximum;"undefined"!=typeof this.schema.exclusiveMaximum&&(b-=1),this.input.setAttribute("max",b)}if("undefined"!=typeof this.schema.step){var c=this.schema.step||1;this.input.setAttribute("step",c)}this.setInputAttributes(["maxlength","pattern","readonly","min","max","step"])},sanitize:function(a){return(a+"").replace(/[^0-9\.\-eE]/g,"")},getNumColumns:function(){return 2},getValue:function(){return this.dependenciesFulfilled?""===this.value?b:1*this.value:b}}),h.defaults.editors.integer=h.defaults.editors.number.extend({sanitize:function(a){return a+="",a.replace(/[^0-9\-]/g,"")},getNumColumns:function(){return 2}}),h.defaults.editors.rating=h.defaults.editors.integer.extend({build:function(){var a,b=this;this.options.compact||(this.header=this.label=this.theme.getFormInputLabel(this.getTitle())),this.schema.description&&(this.description=this.theme.getFormInputDescription(this.schema.description));var c="json-editor-style-rating",d=document.getElementById(c);if(!d){var e=document.createElement("style");e.id=c,e.type="text/css",e.innerHTML=" .rating-container { display: inline-block; clear: both; } .rating { float:left; } /* :not(:checked) is a filter, so that browsers that don’t support :checked don’t follow these rules. Every browser that supports :checked also supports :not(), so it doesn’t make the test unnecessarily selective */ .rating:not(:checked) > input { position:absolute; top:-9999px; clip:rect(0,0,0,0); } .rating:not(:checked) > label { float:right; width:1em; padding:0 .1em; overflow:hidden; white-space:nowrap; cursor:pointer; color:#ddd; } .rating:not(:checked) > label:before { content: '★ '; } .rating > input:checked ~ label { color: #FFB200; } .rating:not([readOnly]):not(:checked) > label:hover, .rating:not([readOnly]):not(:checked) > label:hover ~ label { color: #FFDA00; } .rating:not([readOnly]) > input:checked + label:hover, .rating:not([readOnly]) > input:checked + label:hover ~ label, .rating:not([readOnly]) > input:checked ~ label:hover, .rating:not([readOnly]) > input:checked ~ label:hover ~ label, .rating:not([readOnly]) > label:hover ~ input:checked ~ label { color: #FF8C0D; } .rating:not([readOnly]) > label:active { position:relative; top:2px; left:2px; }",document.getElementsByTagName("head")[0].appendChild(e)}this.input=this.theme.getFormInputField("hidden"),this.container.appendChild(this.input);var g=document.createElement("div");g.classList.add("rating-container");var h=document.createElement("div");h.setAttribute("name",this.formname),h.classList.add("rating"),g.appendChild(h),this.options.compact&&this.container.setAttribute("class",this.container.getAttribute("class")+" compact");var i=this.schema.maximum?this.schema.maximum:5;for(this.schema.exclusiveMaximum&&i--,this.inputs=[],a=i;a>0;a--){var j=this.formname+a,k=this.theme.getFormInputField("radio");k.setAttribute("id",j),k.setAttribute("value",a),k.setAttribute("name",this.formname),h.appendChild(k),this.inputs.push(k);var l=document.createElement("label");l.setAttribute("for",j),l.appendChild(document.createTextNode(a+(1==a?" star":" stars"))),h.appendChild(l)}(this.schema.readOnly||this.schema.readonly)&&(this.always_disabled=!0,f(this.inputs,function(a,b){h.setAttribute("readOnly","readOnly"),b.disabled=!0})),g.addEventListener("change",function(a){a.preventDefault(),a.stopPropagation(),b.input.value=a.srcElement.value,b.is_dirty=!0,b.refreshValue(),b.watch_listener(),b.jsoneditor.notifyWatchers(b.path),b.parent?b.parent.onChildEditorChange(b):b.jsoneditor.onChange()}),this.control=this.theme.getFormControl(this.label,g,this.description),this.container.appendChild(this.control),this.refreshValue()},setValue:function(a){var b=this.sanitize(a);if(this.value!==b){var c=this;f(this.inputs,function(a,d){if(d.value===b)return d.checked=!0,c.value=b,c.input.value=c.value,c.watch_listener(),c.jsoneditor.notifyWatchers(c.path),!1})}}}),h.defaults.editors.object=h.AbstractEditor.extend({getDefault:function(){return e({},this.schema["default"]||{})},getChildEditors:function(){return this.editors},register:function(){if(this._super(),this.editors)for(var a in this.editors)this.editors.hasOwnProperty(a)&&this.editors[a].register()},unregister:function(){if(this._super(),this.editors)for(var a in this.editors)this.editors.hasOwnProperty(a)&&this.editors[a].unregister()},getNumColumns:function(){return Math.max(Math.min(12,this.maxwidth),3)},enable:function(){if(!this.always_disabled&&(this.editjson_button&&(this.editjson_button.disabled=!1),this.addproperty_button&&(this.addproperty_button.disabled=!1),this._super(),this.editors))for(var a in this.editors)this.editors.hasOwnProperty(a)&&this.editors[a].enable()},disable:function(a){if(a&&(this.always_disabled=!0),this.editjson_button&&(this.editjson_button.disabled=!0),this.addproperty_button&&(this.addproperty_button.disabled=!0),this.hideEditJSON(),this._super(),this.editors)for(var b in this.editors)this.editors.hasOwnProperty(b)&&this.editors[b].disable(a)},layoutEditors:function(){var a,b,c=this;if(this.row_container){this.property_order=Object.keys(this.editors),this.property_order=this.property_order.sort(function(a,b){var d=c.editors[a].schema.propertyOrder,e=c.editors[b].schema.propertyOrder;return"number"!=typeof d&&(d=1e3),"number"!=typeof e&&(e=1e3),d-e});var d,e="categories"===this.format;if("grid"===this.format){var h=[];for(f(this.property_order,function(a,b){var d=c.editors[b];if(!d.property_removed){for(var e=!1,f=d.options.hidden?0:d.options.grid_columns||d.getNumColumns(),g=d.options.hidden?0:d.container.offsetHeight,i=0;ig)&&(e=i);e===!1&&(h.push({width:0,minh:999999,maxh:0,editors:[]}),e=h.length-1),h[e].editors.push({key:b,width:f,height:g}),h[e].width+=f,h[e].minh=Math.min(h[e].minh,g),h[e].maxh=Math.max(h[e].maxh,g)}}),a=0;ah[a].editors[i].width&&(i=b),h[a].editors[b].width*=12/h[a].width,h[a].editors[b].width=Math.floor(h[a].editors[b].width),j+=h[a].editors[b].width;j<12&&(h[a].editors[i].width+=12-j),h[a].width=12}if(this.layout===JSON.stringify(h))return!1;for(this.layout=JSON.stringify(h),d=document.createElement("div"),a=0;a0?p.firstChild.isObjOrArray&&(e.appendChild(n),p.insertBefore(e,p.firstChild),c.theme.insertBasicTopTab(d.tab,o),d.basicPane=e):(e.appendChild(n),p.appendChild(e),c.theme.addTopTab(o,d.tab),d.basicPane=e)),d.options.hidden?d.container.style.display="none":c.theme.setGridColumnSize(d.container,12),g.appendChild(d.container),d.rowPane=e}});this.tabPanesContainer.firstChild;)this.tabPanesContainer.removeChild(this.tabPanesContainer.firstChild);var q=this.tabs_holder.parentNode;q.removeChild(q.firstChild),q.appendChild(o),this.tabPanesContainer=p,this.tabs_holder=o;var r=this.theme.getFirstTab(this.tabs_holder);return void(r&&g(r,"click"))}f(this.property_order,function(a,b){var e=c.editors[b];if(!e.property_removed){var f=c.theme.getGridRow();d.appendChild(f),e.options.hidden?e.container.style.display="none":c.theme.setGridColumnSize(e.container,12),f.appendChild(e.container)}})}for(;this.row_container.firstChild;)this.row_container.removeChild(this.row_container.firstChild);this.row_container.appendChild(d)}},getPropertySchema:function(a){var b=this.schema.properties[a]||{};b=e({},b);var c=!!this.schema.properties[a];if(this.schema.patternProperties)for(var d in this.schema.patternProperties)if(this.schema.patternProperties.hasOwnProperty(d)){var f=new RegExp(d);f.test(a)&&(b.allOf=b.allOf||[],b.allOf.push(this.schema.patternProperties[d]),c=!0)}return!c&&this.schema.additionalProperties&&"object"==typeof this.schema.additionalProperties&&(b=e({},this.schema.additionalProperties)),b},preBuild:function(){this._super(),this.editors={},this.cached_editors={};var a=this;if(this.format=this.options.layout||this.options.object_layout||this.schema.format||this.jsoneditor.options.object_layout||"normal",this.schema.properties=this.schema.properties||{},this.minwidth=0,this.maxwidth=0,this.options.table_row)f(this.schema.properties,function(b,c){var d=a.jsoneditor.getEditorClass(c);a.editors[b]=a.jsoneditor.createEditor(d,{jsoneditor:a.jsoneditor,schema:c,path:a.path+"."+b,parent:a,compact:!0,required:!0}),a.editors[b].preBuild();var e=a.editors[b].options.hidden?0:a.editors[b].options.grid_columns||a.editors[b].getNumColumns();a.minwidth+=e,a.maxwidth+=e}),this.no_link_holder=!0;else{if(this.options.table)throw"Not supported yet";this.schema.defaultProperties||(this.jsoneditor.options.display_required_only||this.options.display_required_only?(this.schema.defaultProperties=[],f(this.schema.properties,function(b,c){a.isRequired({key:b,schema:c})&&a.schema.defaultProperties.push(b)})):a.schema.defaultProperties=Object.keys(a.schema.properties)),a.maxwidth+=1,f(this.schema.defaultProperties,function(b,c){a.addObjectProperty(c,!0),a.editors[c]&&(a.minwidth=Math.max(a.minwidth,a.editors[c].options.grid_columns||a.editors[c].getNumColumns()),a.maxwidth+=a.editors[c].options.grid_columns||a.editors[c].getNumColumns())})}this.property_order=Object.keys(this.editors),this.property_order=this.property_order.sort(function(b,c){var d=a.editors[b].schema.propertyOrder,e=a.editors[c].schema.propertyOrder;return"number"!=typeof d&&(d=1e3),"number"!=typeof e&&(e=1e3),d-e})},addTab:function(a){var b=this,c=b.rows[a].schema&&("object"===b.rows[a].schema.type||"array"===b.rows[a].schema.type);b.tabs_holder&&(b.rows[a].tab_text=document.createElement("span"),c?b.rows[a].tab_text.textContent=b.rows[a].getHeaderText():b.rows[a].tab_text.textContent="undefined"==typeof b.schema.basicCategoryTitle?"Basic":b.schema.basicCategoryTitle,b.rows[a].tab=b.theme.getTopTab(b.rows[a].tab_text,this.getValidId(b.rows[a].tab_text.textContent)),b.rows[a].tab.addEventListener("click",function(c){b.active_tab=b.rows[a].tab,b.refreshTabs(),c.preventDefault(),c.stopPropagation()}))},addRow:function(a,b,c){var d=this,e=this.rows.length,f="object"===a.schema.type||"array"===a.schema.type;d.rows[e]=a,d.rows[e].rowPane=c,f?(d.addTab(e),d.theme.addTopTab(b,d.rows[e].tab)):"undefined"==typeof d.basicTab?(d.addTab(e),d.basicTab=e,d.basicPane=c,d.theme.addTopTab(b,d.rows[e].tab)):(d.rows[e].tab=d.rows[d.basicTab].tab,d.rows[e].tab_text=d.rows[d.basicTab].tab_text,d.rows[e].rowPane=d.rows[d.basicTab].rowPane)},refreshTabs:function(a){var b=this,c="undefined"!=typeof b.basicTab,d=!1;f(this.rows,function(e,f){f.tab&&f.rowPane&&f.rowPane.parentNode&&(c&&f.tab==b.rows[b.basicTab].tab&&d||(a?f.tab_text.textContent=f.getHeaderText():(c&&f.tab==b.rows[b.basicTab].tab&&(d=!0),f.tab===b.active_tab?b.theme.markTabActive(f):b.theme.markTabInactive(f))))})},build:function(){var a=this,b="categories"===this.format;if(this.rows=[],this.active_tab=null,this.options.table_row)this.editor_holder=this.container,f(this.editors,function(b,c){var d=a.theme.getTableCell();a.editor_holder.appendChild(d),c.setContainer(d),c.build(),c.postBuild(),a.editors[b].options.hidden&&(d.style.display="none"),a.editors[b].options.input_width&&(d.style.width=a.editors[b].options.input_width)});else{if(this.options.table)throw"Not supported yet";this.header=document.createElement("span"),this.header.textContent=this.getTitle(),this.title=this.theme.getHeader(this.header),this.container.appendChild(this.title),this.container.style.position="relative",this.editjson_holder=this.theme.getModal(),this.editjson_textarea=this.theme.getTextareaInput(),this.editjson_textarea.style.height="170px",this.editjson_textarea.style.width="300px",this.editjson_textarea.style.display="block",this.editjson_save=this.getButton("Save","save","Save"),this.editjson_save.classList.add("json-editor-btntype-save"),this.editjson_save.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.saveJSON()}),this.editjson_copy=this.getButton("Copy","copy","Copy"),this.editjson_copy.classList.add("json-editor-btntype-copy"),this.editjson_copy.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.copyJSON()}),this.editjson_cancel=this.getButton("Cancel","cancel","Cancel"),this.editjson_cancel.classList.add("json-editor-btntype-cancel"),this.editjson_cancel.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.hideEditJSON()}),this.editjson_holder.appendChild(this.editjson_textarea),this.editjson_holder.appendChild(this.editjson_save),this.editjson_holder.appendChild(this.editjson_copy),this.editjson_holder.appendChild(this.editjson_cancel),this.addproperty_holder=this.theme.getModal(),this.addproperty_list=document.createElement("div"),this.addproperty_list.style.width="295px",this.addproperty_list.style.maxHeight="160px",this.addproperty_list.style.padding="5px 0",this.addproperty_list.style.overflowY="auto",this.addproperty_list.style.overflowX="hidden",this.addproperty_list.style.paddingLeft="5px",this.addproperty_list.setAttribute("class","property-selector"),this.addproperty_add=this.getButton("add","add","add"),this.addproperty_add.classList.add("json-editor-btntype-add"),this.addproperty_input=this.theme.getFormInputField("text"),this.addproperty_input.setAttribute("placeholder","Property name..."),this.addproperty_input.style.width="220px",this.addproperty_input.style.marginBottom="0",this.addproperty_input.style.display="inline-block",this.addproperty_add.addEventListener("click",function(b){if(b.preventDefault(),b.stopPropagation(),a.addproperty_input.value){if(a.editors[a.addproperty_input.value])return void window.alert("there is already a property with that name");a.addObjectProperty(a.addproperty_input.value),a.editors[a.addproperty_input.value]&&a.editors[a.addproperty_input.value].disable(),a.onChange(!0)}}),this.addproperty_holder.appendChild(this.addproperty_list),this.addproperty_holder.appendChild(this.addproperty_input),this.addproperty_holder.appendChild(this.addproperty_add);var c=document.createElement("div");c.style.clear="both",this.addproperty_holder.appendChild(c),document.addEventListener("click",function(a){!this.addproperty_holder.contains(a.target)&&this.adding_property&&(a.preventDefault(),a.stopPropagation(),this.toggleAddProperty())}.bind(this)),this.schema.description&&(this.description=this.theme.getDescription(this.schema.description),this.container.appendChild(this.description)),this.error_holder=document.createElement("div"),this.container.appendChild(this.error_holder),this.editor_holder=this.theme.getIndentedPanel(),this.container.appendChild(this.editor_holder),this.row_container=this.theme.getGridContainer(),b?(this.tabs_holder=this.theme.getTopTabHolder(this.getValidId(this.schema.title)),this.tabPanesContainer=this.theme.getTopTabContentHolder(this.tabs_holder),this.editor_holder.appendChild(this.tabs_holder)):(this.tabs_holder=this.theme.getTabHolder(this.getValidId(this.schema.title)),this.tabPanesContainer=this.theme.getTabContentHolder(this.tabs_holder),this.editor_holder.appendChild(this.row_container)),f(this.editors,function(c,d){var e=a.theme.getTabContent(),f=a.theme.getGridColumn(),g=!(!d.schema||"object"!==d.schema.type&&"array"!==d.schema.type);if(e.isObjOrArray=g,b){if(g){var h=a.theme.getGridContainer();h.appendChild(f),e.appendChild(h),a.tabPanesContainer.appendChild(e),a.row_container=h}else"undefined"==typeof a.row_container_basic&&(a.row_container_basic=a.theme.getGridContainer(),e.appendChild(a.row_container_basic),0==a.tabPanesContainer.childElementCount?a.tabPanesContainer.appendChild(e):a.tabPanesContainer.insertBefore(e,a.tabPanesContainer.childNodes[1])),a.row_container_basic.appendChild(f);a.addRow(d,a.tabs_holder,e),e.id=a.getValidId(d.schema.title)}else a.row_container.appendChild(f);d.setContainer(f),d.build(),d.postBuild()}),this.rows[0]&&g(this.rows[0].tab,"click"),this.title_controls=this.theme.getHeaderButtonHolder(),this.editjson_controls=this.theme.getHeaderButtonHolder(),this.addproperty_controls=this.theme.getHeaderButtonHolder(),this.title.appendChild(this.title_controls),this.title.appendChild(this.editjson_controls),this.title.appendChild(this.addproperty_controls),this.collapsed=!1,this.toggle_button=this.getButton("","collapse",this.translate("button_collapse")),this.toggle_button.classList.add("json-editor-btntype-toggle"),this.title_controls.appendChild(this.toggle_button),this.toggle_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.collapsed?(a.editor_holder.style.display="",a.collapsed=!1,a.setButtonText(a.toggle_button,"","collapse",a.translate("button_collapse"))):(a.editor_holder.style.display="none",a.collapsed=!0,a.setButtonText(a.toggle_button,"","expand",a.translate("button_expand")))}),this.options.collapsed&&g(this.toggle_button,"click"),this.schema.options&&"undefined"!=typeof this.schema.options.disable_collapse?this.schema.options.disable_collapse&&(this.toggle_button.style.display="none"):this.jsoneditor.options.disable_collapse&&(this.toggle_button.style.display="none"),this.editjson_button=this.getButton("JSON","edit","Edit JSON"),this.editjson_button.classList.add("json-editor-btntype-editjson"),this.editjson_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.toggleEditJSON()}),this.editjson_controls.appendChild(this.editjson_button),this.editjson_controls.appendChild(this.editjson_holder),this.schema.options&&"undefined"!=typeof this.schema.options.disable_edit_json?this.schema.options.disable_edit_json&&(this.editjson_button.style.display="none"):this.jsoneditor.options.disable_edit_json&&(this.editjson_button.style.display="none"),this.addproperty_button=this.getButton("Properties","edit","Object Properties"),this.addproperty_button.classList.add("json-editor-btntype-properties"),this.addproperty_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.toggleAddProperty()}),this.addproperty_controls.appendChild(this.addproperty_button),this.addproperty_controls.appendChild(this.addproperty_holder),this.refreshAddProperties()}this.options.table_row?(this.editor_holder=this.container,f(this.property_order,function(b,c){a.editor_holder.appendChild(a.editors[c].container)})):(this.layoutEditors(),this.layoutEditors())},showEditJSON:function(){this.editjson_holder&&(this.hideAddProperty(),this.editjson_holder.style.left=this.editjson_button.offsetLeft+"px",this.editjson_holder.style.top=this.editjson_button.offsetTop+this.editjson_button.offsetHeight+"px",this.editjson_textarea.value=JSON.stringify(this.getValue(),null,2),this.disable(),this.editjson_holder.style.display="",this.editjson_button.disabled=!1,this.editing_json=!0)},hideEditJSON:function(){this.editjson_holder&&this.editing_json&&(this.editjson_holder.style.display="none",this.enable(),this.editing_json=!1)},copyJSON:function(){if(this.editjson_holder){var a=document.createElement("textarea");a.value=this.editjson_textarea.value,a.setAttribute("readonly",""),a.style.position="absolute",a.style.left="-9999px",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a)}},saveJSON:function(){if(this.editjson_holder)try{var a=JSON.parse(this.editjson_textarea.value);this.setValue(a),this.hideEditJSON(),this.onChange(!0)}catch(b){throw window.alert("invalid JSON"),b}},toggleEditJSON:function(){this.editing_json?this.hideEditJSON():this.showEditJSON()},insertPropertyControlUsingPropertyOrder:function(a,b,c){var d;this.schema.properties[a]&&(d=this.schema.properties[a].propertyOrder),"number"!=typeof d&&(d=1e3),b.propertyOrder=d;for(var e=0;e=this.schema.maxProperties),this.addproperty_checkboxes&&(this.addproperty_list.innerHTML=""),this.addproperty_checkboxes={};for(a in this.cached_editors)this.cached_editors.hasOwnProperty(a)&&(this.addPropertyCheckbox(a),this.isRequired(this.cached_editors[a])&&a in this.editors&&(this.addproperty_checkboxes[a].disabled=!0),"undefined"!=typeof this.schema.minProperties&&d<=this.schema.minProperties?(this.addproperty_checkboxes[a].disabled=this.addproperty_checkboxes[a].checked,this.addproperty_checkboxes[a].checked||(e=!0)):a in this.editors?(e=!0,c=!0):b||this.schema.properties.hasOwnProperty(a)?(this.addproperty_checkboxes[a].disabled=!1,e=!0):this.addproperty_checkboxes[a].disabled=!0);this.canHaveAdditionalProperties()&&(e=!0);for(a in this.schema.properties)this.schema.properties.hasOwnProperty(a)&&(this.cached_editors[a]||(e=!0,this.addPropertyCheckbox(a)));e?this.canHaveAdditionalProperties()?b?this.addproperty_add.disabled=!1:this.addproperty_add.disabled=!0:(this.addproperty_add.style.display="none",this.addproperty_input.style.display="none"):(this.hideAddProperty(),this.addproperty_controls.style.display="none")},isRequired:function(a){return"boolean"==typeof a.schema.required?a.schema.required:Array.isArray(this.schema.required)?this.schema.required.indexOf(a.key)>-1:!!this.jsoneditor.options.required_by_default},setValue:function(a,b){var c=this;a=a||{},("object"!=typeof a||Array.isArray(a))&&(a={}),f(this.cached_editors,function(d,e){"undefined"!=typeof a[d]?(c.addObjectProperty(d),e.setValue(a[d],b)):b||c.isRequired(e)?e.setValue(e.getDefault(),b):c.removeObjectProperty(d)}),f(a,function(a,d){c.cached_editors[a]||(c.addObjectProperty(a),c.editors[a]&&c.editors[a].setValue(d,b))}),this.refreshValue(),this.layoutEditors(),this.onChange()},showValidationErrors:function(a){var b=this,c=[],d=[];if(f(a,function(a,e){e.path===b.path?c.push(e):d.push(e)}),this.error_holder)if(c.length){this.error_holder.innerHTML="",this.error_holder.style.display="",f(c,function(a,c){b.error_holder.appendChild(b.theme.getErrorMessage(c.message))})}else this.error_holder.style.display="none";this.options.table_row&&(c.length?this.theme.addTableRowError(this.container):this.theme.removeTableRowError(this.container)),f(this.editors,function(a,b){b.showValidationErrors(d)})}}),h.defaults.editors.array=h.AbstractEditor.extend({askConfirmation:function(){return this.jsoneditor.options.prompt_before_delete!==!0||confirm("Are you sure you want to remove this node?")!==!1},getDefault:function(){return this.schema["default"]||[]},register:function(){if(this._super(),this.rows)for(var a=0;a=this.schema.items.length?this.schema.additionalItems===!0?{}:this.schema.additionalItems?e({},this.schema.additionalItems):void 0:e({},this.schema.items[a]):this.schema.items?e({},this.schema.items):{}},getItemInfo:function(a){var b=this.getItemSchema(a);this.item_info=this.item_info||{};var c=JSON.stringify(b);return"undefined"!=typeof this.item_info[c]?this.item_info[c]:(b=this.jsoneditor.expandRefs(b),this.item_info[c]={title:b.title||"item","default":b["default"],width:12,child_editors:b.properties||b.items},this.item_info[c])},getElementEditor:function(a){var b=this.getItemInfo(a),c=this.getItemSchema(a);c=this.jsoneditor.expandRefs(c),c.title=b.title+" "+(a+1);var d,e=this.jsoneditor.getEditorClass(c);this.tabs_holder?(d="tabs-top"===this.schema.format?this.theme.getTopTabContent():this.theme.getTabContent(),d.id=this.path+"."+a):d=b.child_editors?this.theme.getChildEditorHolder():this.theme.getIndentedPanel(),this.row_holder.appendChild(d);var f=this.jsoneditor.createEditor(e,{jsoneditor:this.jsoneditor,schema:c,container:d,path:this.path+"."+a,parent:this,required:!0});return f.preBuild(),f.build(),f.postBuild(),f.title_controls||(f.array_controls=this.theme.getButtonHolder(),d.appendChild(f.array_controls)),f},destroy:function(){this.empty(!0),this.title&&this.title.parentNode&&this.title.parentNode.removeChild(this.title),this.description&&this.description.parentNode&&this.description.parentNode.removeChild(this.description),this.row_holder&&this.row_holder.parentNode&&this.row_holder.parentNode.removeChild(this.row_holder),this.controls&&this.controls.parentNode&&this.controls.parentNode.removeChild(this.controls),this.panel&&this.panel.parentNode&&this.panel.parentNode.removeChild(this.panel),this.rows=this.row_cache=this.title=this.description=this.row_holder=this.panel=this.controls=null,this._super()},empty:function(a){if(this.rows){var b=this;f(this.rows,function(c,d){a&&(d.tab&&d.tab.parentNode&&d.tab.parentNode.removeChild(d.tab),b.destroyRow(d,!0),b.row_cache[c]=null),b.rows[c]=null}),b.rows=[],a&&(b.row_cache=[])}},destroyRow:function(a,b){var c=a.container;b?(a.destroy(),c.parentNode&&c.parentNode.removeChild(c),a.tab&&a.tab.parentNode&&a.tab.parentNode.removeChild(a.tab)):(a.tab&&(a.tab.style.display="none"),c.style.display="none",a.unregister())},getMax:function(){return Array.isArray(this.schema.items)&&this.schema.additionalItems===!1?Math.min(this.schema.items.length,this.schema.maxItems||1/0):this.schema.maxItems||1/0},refreshTabs:function(a){var b=this;f(this.rows,function(c,d){d.tab&&(a?d.tab_text.textContent=d.getHeaderText():d.tab===b.active_tab?b.theme.markTabActive(d):b.theme.markTabInactive(d))})},setValue:function(a,b){a=a||[],Array.isArray(a)||(a=[a]);var c=JSON.stringify(a);if(c!==this.serialized){if(this.schema.minItems)for(;a.lengththis.getMax()&&(a=a.slice(0,this.getMax()));var d=this;f(a,function(a,c){d.rows[a]?d.rows[a].setValue(c,b):d.row_cache[a]?(d.rows[a]=d.row_cache[a],d.rows[a].setValue(c,b),d.rows[a].container.style.display="",d.rows[a].tab&&(d.rows[a].tab.style.display=""),d.rows[a].register()):d.addRow(c,b)});for(var e=a.length;e=this.rows.length;f(this.rows,function(a,c){c.movedown_button&&(a===b.rows.length-1?c.movedown_button.style.display="none":c.movedown_button.style.display=""),c.delete_button&&(d?c.delete_button.style.display="none":c.delete_button.style.display=""),b.value[a]=c.getValue()});var e=!1;this.value.length?1===this.value.length?(this.remove_all_rows_button.style.display="none",d||this.hide_delete_last_row_buttons?this.delete_last_row_button.style.display="none":(this.delete_last_row_button.style.display="",e=!0)):(d||this.hide_delete_last_row_buttons?this.delete_last_row_button.style.display="none":(this.delete_last_row_button.style.display="",e=!0),d||this.hide_delete_all_rows_buttons?this.remove_all_rows_button.style.display="none":(this.remove_all_rows_button.style.display="",e=!0)):(this.delete_last_row_button.style.display="none",this.remove_all_rows_button.style.display="none"),this.getMax()&&this.getMax()<=this.rows.length||this.hide_add_button?this.add_row_button.style.display="none":(this.add_row_button.style.display="",e=!0),!this.collapsed&&e?this.controls.style.display="inline-block":this.controls.style.display="none"}},addRow:function(a,b){var c=this,d=this.rows.length;c.rows[d]=this.getElementEditor(d),c.row_cache[d]=c.rows[d],c.tabs_holder&&(c.rows[d].tab_text=document.createElement("span"),c.rows[d].tab_text.textContent=c.rows[d].getHeaderText(),"tabs-top"===c.schema.format?(c.rows[d].tab=c.theme.getTopTab(c.rows[d].tab_text,this.getValidId(c.rows[d].path)),c.theme.addTopTab(c.tabs_holder,c.rows[d].tab)):(c.rows[d].tab=c.theme.getTab(c.rows[d].tab_text,this.getValidId(c.rows[d].path)),c.theme.addTab(c.tabs_holder,c.rows[d].tab)),c.rows[d].tab.addEventListener("click",function(a){c.active_tab=c.rows[d].tab,c.refreshTabs(),a.preventDefault(),a.stopPropagation()}));var e=c.rows[d].title_controls||c.rows[d].array_controls;c.hide_delete_buttons||(c.rows[d].delete_button=this.getButton(c.getItemTitle(),"delete",this.translate("button_delete_row_title",[c.getItemTitle()])),c.rows[d].delete_button.classList.add("delete","json-editor-btntype-delete"),c.rows[d].delete_button.setAttribute("data-i",d),c.rows[d].delete_button.addEventListener("click",function(a){if(a.preventDefault(),a.stopPropagation(),!c.askConfirmation())return!1;var b=1*this.getAttribute("data-i"),d=c.getValue(),e=[],g=null;f(d,function(a,c){a!==b&&e.push(c)}),c.empty(!0),c.setValue(e),c.rows[b]?g=c.rows[b].tab:c.rows[b-1]&&(g=c.rows[b-1].tab),g&&(c.active_tab=g,c.refreshTabs()),c.onChange(!0),c.jsoneditor.trigger("deleteRow")}),e&&e.appendChild(c.rows[d].delete_button)),c.show_copy_button&&(c.rows[d].copy_button=this.getButton(c.getItemTitle(),"copy","Copy "+c.getItemTitle()),c.rows[d].copy_button.classList.add("copy","json-editor-btntype-copy"),c.rows[d].copy_button.setAttribute("data-i",d),c.rows[d].copy_button.addEventListener("click",function(a){var b=c.getValue();a.preventDefault(),a.stopPropagation();var d=1*this.getAttribute("data-i");f(b,function(a,c){a===d&&b.push(c)}),c.setValue(b),c.refreshValue(!0),c.onChange(!0)}),e.appendChild(c.rows[d].copy_button)),d&&!c.hide_move_buttons&&(c.rows[d].moveup_button=this.getButton("","moveup",this.translate("button_move_up_title")),c.rows[d].moveup_button.classList.add("moveup","json-editor-btntype-move"),c.rows[d].moveup_button.setAttribute("data-i",d),c.rows[d].moveup_button.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation();var b=1*this.getAttribute("data-i");if(!(b<=0)){var d=c.getValue(),e=d[b-1];d[b-1]=d[b],d[b]=e,c.setValue(d),c.active_tab=c.rows[b-1].tab,c.refreshTabs(),c.onChange(!0),c.jsoneditor.trigger("moveRow")}}),e&&e.appendChild(c.rows[d].moveup_button)),c.hide_move_buttons||(c.rows[d].movedown_button=this.getButton("","movedown",this.translate("button_move_down_title")),c.rows[d].movedown_button.classList.add("movedown","json-editor-btntype-move"),c.rows[d].movedown_button.setAttribute("data-i",d),c.rows[d].movedown_button.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation();var b=1*this.getAttribute("data-i"),d=c.getValue();if(!(b>=d.length-1)){var e=d[b+1];d[b+1]=d[b],d[b]=e,c.setValue(d),c.active_tab=c.rows[b+1].tab,c.refreshTabs(),c.onChange(!0),c.jsoneditor.trigger("moveRow")}}),e&&e.appendChild(c.rows[d].movedown_button)),a&&c.rows[d].setValue(a,b),c.refreshTabs()},addControls:function(){var a=this;this.collapsed=!1,this.toggle_button=this.getButton("","collapse",this.translate("button_collapse")),this.toggle_button.classList.add("json-editor-btntype-toggle"),this.title_controls.appendChild(this.toggle_button);var b=a.row_holder.style.display,c=a.controls.style.display;this.toggle_button.addEventListener("click",function(d){d.preventDefault(),d.stopPropagation(),a.collapsed?(a.collapsed=!1,a.panel&&(a.panel.style.display=""),a.row_holder.style.display=b,a.tabs_holder&&(a.tabs_holder.style.display=""),a.controls.style.display=c,a.setButtonText(this,"","collapse",a.translate("button_collapse"))):(a.collapsed=!0,a.row_holder.style.display="none",a.tabs_holder&&(a.tabs_holder.style.display="none"),a.controls.style.display="none",a.panel&&(a.panel.style.display="none"),a.setButtonText(this,"","expand",a.translate("button_expand")))}),this.options.collapsed&&g(this.toggle_button,"click"),this.schema.options&&"undefined"!=typeof this.schema.options.disable_collapse?this.schema.options.disable_collapse&&(this.toggle_button.style.display="none"):this.jsoneditor.options.disable_collapse&&(this.toggle_button.style.display="none"),this.add_row_button=this.getButton(this.getItemTitle(),"add",this.translate("button_add_row_title",[this.getItemTitle()])),this.add_row_button.classList.add("json-editor-btntype-add"),this.add_row_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation();var c=a.rows.length;a.row_cache[c]?(a.rows[c]=a.row_cache[c],a.rows[c].setValue(a.rows[c].getDefault(),!0),a.rows[c].container.style.display="",a.rows[c].tab&&(a.rows[c].tab.style.display=""),a.rows[c].register()):a.addRow(),a.active_tab=a.rows[c].tab,a.refreshTabs(),a.refreshValue(),a.onChange(!0),a.jsoneditor.trigger("addRow")}),a.controls.appendChild(this.add_row_button),this.delete_last_row_button=this.getButton(this.translate("button_delete_last",[this.getItemTitle()]),"delete",this.translate("button_delete_last_title",[this.getItemTitle()])),this.delete_last_row_button.classList.add("json-editor-btntype-deletelast"),this.delete_last_row_button.addEventListener("click",function(b){if(b.preventDefault(),b.stopPropagation(),!a.askConfirmation())return!1;var c=a.getValue(),d=null;c.pop(),a.empty(!0),a.setValue(c),a.rows[a.rows.length-1]&&(d=a.rows[a.rows.length-1].tab),d&&(a.active_tab=d,a.refreshTabs()),a.onChange(!0),a.jsoneditor.trigger("deleteRow")}),a.controls.appendChild(this.delete_last_row_button),this.remove_all_rows_button=this.getButton(this.translate("button_delete_all"),"delete",this.translate("button_delete_all_title")),this.remove_all_rows_button.classList.add("json-editor-btntype-deleteall"),this.remove_all_rows_button.addEventListener("click",function(b){return b.preventDefault(),b.stopPropagation(),!!a.askConfirmation()&&(a.empty(!0),a.setValue([]),a.onChange(!0),void a.jsoneditor.trigger("deleteAllRows"))}),a.controls.appendChild(this.remove_all_rows_button),a.tabs&&(this.add_row_button.style.width="100%",this.add_row_button.style.textAlign="left",this.add_row_button.style.marginBottom="3px",this.delete_last_row_button.style.width="100%",this.delete_last_row_button.style.textAlign="left",this.delete_last_row_button.style.marginBottom="3px",this.remove_all_rows_button.style.width="100%",this.remove_all_rows_button.style.textAlign="left",this.remove_all_rows_button.style.marginBottom="3px")},showValidationErrors:function(a){var b=this,c=[],d=[];if(f(a,function(a,e){e.path===b.path?c.push(e):d.push(e)}),this.error_holder)if(c.length){this.error_holder.innerHTML="",this.error_holder.style.display="",f(c,function(a,c){b.error_holder.appendChild(b.theme.getErrorMessage(c.message))})}else this.error_holder.style.display="none";f(this.rows,function(a,b){b.showValidationErrors(d)})}}),h.defaults.editors.table=h.defaults.editors.array.extend({register:function(){if(this._super(),this.rows)for(var a=0;athis.schema.maxItems&&(a=a.slice(0,this.schema.maxItems));var c=JSON.stringify(a);if(c!==this.serialized){var d=!1,e=this;f(a,function(a,b){e.rows[a]?e.rows[a].setValue(b):(e.addRow(b),d=!0)});for(var g=a.length;g=this.rows.length,c=!1;f(this.rows,function(d,e){e.movedown_button&&(d===a.rows.length-1?e.movedown_button.style.display="none":(c=!0,e.movedown_button.style.display="")),e.delete_button&&(b?e.delete_button.style.display="none":(c=!0,e.delete_button.style.display="")),e.moveup_button&&(c=!0)}),f(this.rows,function(a,b){c?b.controls_cell.style.display="":b.controls_cell.style.display="none"}),c?this.controls_header_cell.style.display="":this.controls_header_cell.style.display="none";var d=!1;this.value.length?1===this.value.length?(this.table.style.display="",this.remove_all_rows_button.style.display="none",b||this.hide_delete_last_row_buttons?this.delete_last_row_button.style.display="none":(this.delete_last_row_button.style.display="",d=!0)):(this.table.style.display="",b||this.hide_delete_last_row_buttons?this.delete_last_row_button.style.display="none":(this.delete_last_row_button.style.display="",d=!0),b||this.hide_delete_all_rows_buttons?this.remove_all_rows_button.style.display="none":(this.remove_all_rows_button.style.display="",d=!0)):(this.delete_last_row_button.style.display="none",this.remove_all_rows_button.style.display="none",this.table.style.display="none"),this.schema.maxItems&&this.schema.maxItems<=this.rows.length||this.hide_add_button?this.add_row_button.style.display="none":(this.add_row_button.style.display="",d=!0),d?this.controls.style.display="":this.controls.style.display="none"},refreshValue:function(){var a=this;this.value=[],f(this.rows,function(b,c){a.value[b]=c.getValue()}),this.serialized=JSON.stringify(this.value)},addRow:function(a){var b=this,c=this.rows.length;b.rows[c]=this.getElementEditor(c);var d=b.rows[c].table_controls;this.hide_delete_buttons||(b.rows[c].delete_button=this.getButton("","delete",this.translate("button_delete_row_title_short")),b.rows[c].delete_button.classList.add("delete","json-editor-btntype-delete"),b.rows[c].delete_button.setAttribute("data-i",c),b.rows[c].delete_button.addEventListener("click",function(a){if(a.preventDefault(),a.stopPropagation(),!b.askConfirmation())return!1;var c=1*this.getAttribute("data-i"),d=b.getValue(),e=[];f(d,function(a,b){a!==c&&e.push(b)}),b.setValue(e),b.onChange(!0)}),d.appendChild(b.rows[c].delete_button)),c&&!this.hide_move_buttons&&(b.rows[c].moveup_button=this.getButton("","moveup",this.translate("button_move_up_title")),b.rows[c].moveup_button.classList.add("moveup","json-editor-btntype-move"),b.rows[c].moveup_button.setAttribute("data-i",c),b.rows[c].moveup_button.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation();var c=1*this.getAttribute("data-i");if(!(c<=0)){var d=b.getValue(),e=d[c-1];d[c-1]=d[c],d[c]=e,b.setValue(d),b.onChange(!0)}}),d.appendChild(b.rows[c].moveup_button)),this.hide_move_buttons||(b.rows[c].movedown_button=this.getButton("","movedown",this.translate("button_move_down_title")),b.rows[c].movedown_button.classList.add("movedown","json-editor-btntype-move"),b.rows[c].movedown_button.setAttribute("data-i",c),b.rows[c].movedown_button.addEventListener("click",function(a){a.preventDefault(),a.stopPropagation();var c=1*this.getAttribute("data-i"),d=b.getValue();if(!(c>=d.length-1)){var e=d[c+1];d[c+1]=d[c],d[c]=e,b.setValue(d),b.onChange(!0)}}),d.appendChild(b.rows[c].movedown_button)),a&&b.rows[c].setValue(a)},addControls:function(){var a=this;this.collapsed=!1,this.toggle_button=this.getButton("","collapse",this.translate("button_collapse")),this.toggle_button.classList.add("json-editor-btntype-toggle"),this.title_controls&&(this.title_controls.appendChild(this.toggle_button),this.toggle_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.collapsed?(a.collapsed=!1,a.panel.style.display="",a.setButtonText(this,"","collapse",a.translate("button_collapse"))):(a.collapsed=!0,a.panel.style.display="none",a.setButtonText(this,"","expand",a.translate("button_expand")))}),this.options.collapsed&&g(this.toggle_button,"click"),this.schema.options&&"undefined"!=typeof this.schema.options.disable_collapse?this.schema.options.disable_collapse&&(this.toggle_button.style.display="none"):this.jsoneditor.options.disable_collapse&&(this.toggle_button.style.display="none")),this.add_row_button=this.getButton(this.getItemTitle(),"add",this.translate("button_add_row_title",[this.getItemTitle()])),this.add_row_button.classList.add("json-editor-btntype-add"),this.add_row_button.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.addRow(),a.refreshValue(),a.refreshRowButtons(),a.onChange(!0)}),a.controls.appendChild(this.add_row_button),this.delete_last_row_button=this.getButton(this.translate("button_delete_last",[this.getItemTitle()]),"delete",this.translate("button_delete_last_title",[this.getItemTitle()])),this.delete_last_row_button.classList.add("json-editor-btntype-deletelast"),this.delete_last_row_button.addEventListener("click",function(b){if(b.preventDefault(),b.stopPropagation(),!a.askConfirmation())return!1;var c=a.getValue();c.pop(),a.setValue(c),a.onChange(!0)}),a.controls.appendChild(this.delete_last_row_button),this.remove_all_rows_button=this.getButton(this.translate("button_delete_all"),"delete",this.translate("button_delete_all_title")), +this.remove_all_rows_button.classList.add("json-editor-btntype-deleteall"),this.remove_all_rows_button.addEventListener("click",function(b){return b.preventDefault(),b.stopPropagation(),!!a.askConfirmation()&&(a.setValue([]),void a.onChange(!0))}),a.controls.appendChild(this.remove_all_rows_button)}}),h.defaults.editors.multiple=h.AbstractEditor.extend({register:function(){if(this.editors){for(var a=0;anull";if("object"==typeof a){var c="";return f(a,function(d,e){var f=b.getHTML(e);Array.isArray(a)||(f="
"+d+": "+f+"
"),c+="
  • "+f+"
  • "}),c=Array.isArray(a)?"
      "+c+"
    ":"
      "+c+"
    "}return"boolean"==typeof a?a?"true":"false":"string"==typeof a?a.replace(/&/g,"&").replace(//g,">"):a},setValue:function(a){this.value!==a&&(this.value=a,this.refreshValue(),this.onChange())},destroy:function(){this.display_area&&this.display_area.parentNode&&this.display_area.parentNode.removeChild(this.display_area),this.title&&this.title.parentNode&&this.title.parentNode.removeChild(this.title),this.switcher&&this.switcher.parentNode&&this.switcher.parentNode.removeChild(this.switcher),this._super()}}),h.defaults.editors.select=h.AbstractEditor.extend({setValue:function(a,b){a=this.typecast(a||"");var c=a;this.enum_values.indexOf(c)<0&&(c=this.enum_values[0]),this.value!==c&&(b?this.is_dirty=!1:"change"===this.jsoneditor.options.show_errors&&(this.is_dirty=!0),this.input.value=this.enum_options[this.enum_values.indexOf(c)],this.select2&&(this.select2v4?this.select2.val(this.input.value).trigger("change"):this.select2.select2("val",this.input.value)),this.value=c,this.onChange(),this.change())},register:function(){this._super(),this.input&&this.input.setAttribute("name",this.formname)},unregister:function(){this._super(),this.input&&this.input.removeAttribute("name")},getNumColumns:function(){if(!this.enum_options)return 3;for(var a=this.getTitle().length,b=0;b2||this.enum_options.length&&this.enumSource)){var a=e({},h.plugins.select2);this.schema.options&&this.schema.options.select2_options&&(a=e(a,this.schema.options.select2_options)),this.select2=window.jQuery(this.input).select2(a),this.select2v4=this.select2.select2.hasOwnProperty("amd");var b=this;this.select2.on("select2-blur",function(){b.select2v4?b.input.value=b.select2.val():b.input.value=b.select2.select2("val"),b.onInputChange()}),this.select2.on("change",function(){b.select2v4?b.input.value=b.select2.val():b.input.value=b.select2.select2("val"),b.onInputChange()})}else this.select2=null},postBuild:function(){this._super(),this.theme.afterInputReady(this.input),this.setupSelect2()},onWatchedFieldChange:function(){var a,b;if(this.enumSource){a=this.getWatchedFieldValues();for(var c=[],d=[],e=0;e=2||this.enum_options.length&&this.enumSource)){var c=e({},h.plugins.selectize);this.schema.options&&this.schema.options.selectize_options&&(c=e(c,this.schema.options.selectize_options)),this.selectize=window.jQuery(this.input).selectize(e(c,{create:c.create===b||c.create,onChange:function(){a.onInputChange()}}))}else this.selectize=null},postBuild:function(){this._super(),this.theme.afterInputReady(this.input),this.setupSelectize()},onWatchedFieldChange:function(){var a,c;if(this.enumSource){a=this.getWatchedFieldValues();for(var d=[],e=[],f=0;f1&&a.schema.options&&a.schema.options.multiple&&1==a.schema.options.multiple&&a.parent&&"object"==a.parent.schema.type&&a.parent.parent&&"array"==a.parent.parent.schema.type){a.arrayEditor=a.jsoneditor.getEditor(a.parent.parent.path),a.value=a.arrayEditor.getValue(),a.total=this.files.length,a.current_item_index=parseInt(a.parent.key),a.count=a.current_item_index;for(var c=0;cType: "+a+", Size: "+Math.floor((this.value.length-this.value.split(",")[0].length-1)/1.33333)+" bytes","image"===a.substr(0,5)){this.preview.innerHTML+="
    ";var b=document.createElement("img");b.style.maxWidth="100%",b.style.maxHeight="100px",b.src=this.value,this.preview.appendChild(b)}}else this.preview.innerHTML="Invalid data URI"}},enable:function(){this.always_disabled||(this.uploader&&(this.uploader.disabled=!1),this._super())},disable:function(a){a&&(this.always_disabled=!0),this.uploader&&(this.uploader.disabled=!0),this._super()},setValue:function(a){this.value!==a&&(this.value=a,this.input.value=this.value,this.refreshPreview(),this.onChange())},destroy:function(){this.preview&&this.preview.parentNode&&this.preview.parentNode.removeChild(this.preview),this.title&&this.title.parentNode&&this.title.parentNode.removeChild(this.title),this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this.uploader&&this.uploader.parentNode&&this.uploader.parentNode.removeChild(this.uploader),this._super()}}),h.defaults.editors.upload=h.AbstractEditor.extend({getNumColumns:function(){return 4},build:function(){var a=this;if(this.title=this.header=this.label=this.theme.getFormInputLabel(this.getTitle()),this.input=this.theme.getFormInputField("hidden"),this.container.appendChild(this.input),!this.schema.readOnly&&!this.schema.readonly){if(!this.jsoneditor.options.upload)throw"Upload handler required for upload editor";this.uploader=this.theme.getFormInputField("file"),this.uploader.addEventListener("change",function(b){if(b.preventDefault(),b.stopPropagation(),this.files&&this.files.length){var c=new FileReader;c.onload=function(b){a.preview_value=b.target.result,a.refreshPreview(),a.onChange(!0),c=null},c.readAsDataURL(this.files[0])}})}var b=this.schema.description;b||(b=""),this.preview=this.theme.getFormInputDescription(b),this.container.appendChild(this.preview),this.control=this.theme.getFormControl(this.label,this.uploader||this.input,this.preview),this.container.appendChild(this.control),window.requestAnimationFrame(function(){if(a.value){var b=document.createElement("img");b.style.maxWidth="100%",b.style.maxHeight="100px",b.onload=function(c){a.preview.appendChild(b)},b.onerror=function(a){console.error("upload error",a)},b.src=a.container.querySelector("a").href}})},refreshPreview:function(){if(this.last_preview!==this.preview_value&&(this.last_preview=this.preview_value,this.preview.innerHTML="",this.preview_value)){var a=this,b=this.preview_value.match(/^data:([^;,]+)[;,]/);b&&(b=b[1]),b||(b="unknown");var c=this.uploader.files[0];if(this.preview.innerHTML="Type: "+b+", Size: "+c.size+" bytes","image"===b.substr(0,5)){this.preview.innerHTML+="
    ";var d=document.createElement("img");d.style.maxWidth="100%",d.style.maxHeight="100px",d.src=this.preview_value,this.preview.appendChild(d)}this.preview.innerHTML+="
    ";var e=this.getButton("Upload","upload","Upload");this.preview.appendChild(e),e.addEventListener("click",function(b){b.preventDefault(),e.setAttribute("disabled","disabled"),a.theme.removeInputError(a.uploader),a.theme.getProgressBar&&(a.progressBar=a.theme.getProgressBar(),a.preview.appendChild(a.progressBar)),a.jsoneditor.options.upload(a.path,c,{success:function(b){a.setValue(b),a.parent?a.parent.onChildEditorChange(a):a.jsoneditor.onChange(), +a.progressBar&&a.preview.removeChild(a.progressBar),e.removeAttribute("disabled")},failure:function(b){a.theme.addInputError(a.uploader,b),a.progressBar&&a.preview.removeChild(a.progressBar),e.removeAttribute("disabled")},updateProgress:function(b){a.progressBar&&(b?a.theme.updateProgressBar(a.progressBar,b):a.theme.updateProgressBarUnknown(a.progressBar))}})}),(this.jsoneditor.options.auto_upload||this.schema.options.auto_upload)&&(e.dispatchEvent(new MouseEvent("click")),this.preview.removeChild(e))}},enable:function(){this.always_disabled||(this.uploader&&(this.uploader.disabled=!1),this._super())},disable:function(a){a&&(this.always_disabled=!0),this.uploader&&(this.uploader.disabled=!0),this._super()},setValue:function(a){this.value!==a&&(this.value=a,this.input.value=this.value,this.onChange())},destroy:function(){this.preview&&this.preview.parentNode&&this.preview.parentNode.removeChild(this.preview),this.title&&this.title.parentNode&&this.title.parentNode.removeChild(this.title),this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this.uploader&&this.uploader.parentNode&&this.uploader.parentNode.removeChild(this.uploader),this._super()}}),h.defaults.editors.checkbox=h.AbstractEditor.extend({setValue:function(a,b){this.value=!!a,this.input.checked=this.value,this.onChange()},register:function(){this._super(),this.input&&this.input.setAttribute("name",this.formname)},unregister:function(){this._super(),this.input&&this.input.removeAttribute("name")},getNumColumns:function(){return Math.min(12,Math.max(this.getTitle().length/7,2))},build:function(){var a=this;this.options.compact||(this.label=this.header=this.theme.getCheckboxLabel(this.getTitle())),this.schema.description&&(this.description=this.theme.getFormInputDescription(this.schema.description)),this.options.infoText&&(this.infoButton=this.theme.getInfoButton(this.options.infoText)),this.options.compact&&this.container.classList.add("compact"),this.input=this.theme.getCheckbox(),this.control=this.theme.getFormControl(this.label,this.input,this.description,this.infoButton),(this.schema.readOnly||this.schema.readonly)&&(this.always_disabled=!0,this.input.disabled=!0),this.input.addEventListener("change",function(b){b.preventDefault(),b.stopPropagation(),a.value=this.checked,a.onChange(!0)}),this.container.appendChild(this.control)},enable:function(){this.always_disabled||(this.input.disabled=!1,this._super())},disable:function(a){a&&(this.always_disabled=!0),this.input.disabled=!0,this._super()},destroy:function(){this.label&&this.label.parentNode&&this.label.parentNode.removeChild(this.label),this.description&&this.description.parentNode&&this.description.parentNode.removeChild(this.description),this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this._super()},showValidationErrors:function(a){var b=this;if("always"===this.jsoneditor.options.show_errors);else if(!this.is_dirty&&this.previous_error_setting===this.jsoneditor.options.show_errors)return;this.previous_error_setting=this.jsoneditor.options.show_errors;var c=[];f(a,function(a,d){d.path===b.path&&c.push(d.message)}),this.input.controlgroup=this.control,c.length?this.theme.addInputError(this.input,c.join(". ")+"."):this.theme.removeInputError(this.input)}}),h.defaults.editors.arraySelectize=h.AbstractEditor.extend({build:function(){this.title=this.theme.getFormInputLabel(this.getTitle()),this.title_controls=this.theme.getHeaderButtonHolder(),this.title.appendChild(this.title_controls),this.error_holder=document.createElement("div"),this.schema.description&&(this.description=this.theme.getDescription(this.schema.description)),this.input=document.createElement("select"),this.input.setAttribute("multiple","multiple");var a=this.theme.getFormControl(this.title,this.input,this.description);this.container.appendChild(a),this.container.appendChild(this.error_holder),window.jQuery(this.input).selectize({delimiter:!1,createOnBlur:!0,create:!0})},postBuild:function(){var a=this;this.input.selectize.on("change",function(b){a.refreshValue(),a.onChange(!0)})},destroy:function(){this.empty(!0),this.title&&this.title.parentNode&&this.title.parentNode.removeChild(this.title),this.description&&this.description.parentNode&&this.description.parentNode.removeChild(this.description),this.input&&this.input.parentNode&&this.input.parentNode.removeChild(this.input),this._super()},empty:function(a){},setValue:function(a,b){var c=this;a=a||[],Array.isArray(a)||(a=[a]),this.input.selectize.clearOptions(),this.input.selectize.clear(!0),a.forEach(function(a){c.input.selectize.addOption({text:a,value:a})}),this.input.selectize.setValue(a),this.refreshValue(b)},refreshValue:function(a){this.value=this.input.selectize.getValue()},showValidationErrors:function(a){var b=this,c=[],d=[];if(f(a,function(a,e){e.path===b.path?c.push(e):d.push(e)}),this.error_holder)if(c.length){this.error_holder.innerHTML="",this.error_holder.style.display="",f(c,function(a,c){b.error_holder.appendChild(b.theme.getErrorMessage(c.message))})}else this.error_holder.style.display="none"}}),h.defaults.editors.starrating=h.defaults.editors.string.extend({build:function(){var a=this;this.options.compact||(this.header=this.label=this.theme.getFormInputLabel(this.getTitle())),this.schema.description&&(this.description=this.theme.getFormInputDescription(this.schema.description)),this.options.infoText&&(this.infoButton=this.theme.getInfoButton(this.options.infoText)),this.options.compact&&this.container.classList.add("compact"),this.ratingContainer=document.createElement("div"),this.ratingContainer.classList.add("starrating"),this.enum_values=this.schema["enum"],this.radioGroup=[];for(var b=function(b){b.preventDefault(),b.stopPropagation(),a.setValue(this.value),a.onChange(!0)},c=this.enum_values.length-1;c>-1;c--){var d=this.key+"-"+c,e=this.theme.getFormInputField("radio");e.name=this.formname+"[starrating]",e.value=this.enum_values[c],e.id=d,e.addEventListener("change",b,!1),this.radioGroup.push(e);var f=document.createElement("label");f.htmlFor=d,f.title=this.enum_values[c],this.options.displayValue&&f.classList.add("starrating-display-enabled"),this.ratingContainer.appendChild(e),this.ratingContainer.appendChild(f)}if(this.options.displayValue&&(this.displayRating=document.createElement("div"),this.displayRating.classList.add("starrating-display"),this.displayRating.innerText=this.enum_values[0],this.ratingContainer.appendChild(this.displayRating)),this.schema.readOnly||this.schema.readonly){this.always_disabled=!0;for(var g=0;c0){var d=new Date(1e3*a),e=d.getFullYear(),f=this.zeroPad(d.getMonth()+1),g=this.zeroPad(d.getDate()),h=this.zeroPad(d.getHours()),i=this.zeroPad(d.getMinutes()),j=this.zeroPad(d.getSeconds()),k=[e,f,g].join("-"),l=[h,i,j].join(":"),m=k+" "+l;"date"==this.schema.format?m=k:"time"==this.schema.format&&(m=l),this.input.value=m,this.flatpickr&&this.flatpickr.setDate(m)}},destroy:function(){this.flatpickr&&this.flatpickr.destroy(),this.flatpickr=null,this._super()},zeroPad:function(a){return("0"+a).slice(-2)}}),h.defaults.editors.signature=h.defaults.editors.string.extend({build:function(){var a=this;this.options.compact||(this.header=this.label=this.theme.getFormInputLabel(this.getTitle())),this.schema.description&&(this.description=this.theme.getFormInputDescription(this.schema.description));var b=this.formname.replace(/\W/g,"");if("function"==typeof SignaturePad){var c="json-editor-style-signature";document.getElementById(c);this.input=this.theme.getFormInputField("hidden"),this.container.appendChild(this.input);var d=document.createElement("div");d.classList.add("signature-container");var e=document.createElement("canvas");e.setAttribute("name",b),e.classList.add("signature"),d.appendChild(e),a.signaturePad=new window.SignaturePad(e,{onEnd:function(){a.signaturePad.isEmpty()?a.input.value="":a.input.value=a.signaturePad.toDataURL(),a.is_dirty=!0,a.refreshValue(),a.watch_listener(),a.jsoneditor.notifyWatchers(a.path),a.parent?a.parent.onChildEditorChange(a):a.jsoneditor.onChange()}});var g=document.createElement("div"),h=document.createElement("button");h.classList.add("tiny","button"),h.innerHTML="Clear signature",g.appendChild(h),d.appendChild(g),this.options.compact&&this.container.setAttribute("class",this.container.getAttribute("class")+" compact"),(this.schema.readOnly||this.schema.readonly)&&(this.always_disabled=!0,f(this.inputs,function(a,b){e.setAttribute("readOnly","readOnly"),b.disabled=!0})),h.addEventListener("click",function(b){b.preventDefault(),b.stopPropagation(),a.signaturePad.clear(),a.signaturePad.strokeEnd()}),this.control=this.theme.getFormControl(this.label,d,this.description),this.container.appendChild(this.control),this.refreshValue(),e.width=d.offsetWidth,a.options&&a.options.canvas_height?e.height=a.options.canvas_height:e.height="300"}else{var i=document.createElement("p");i.innerHTML="Signature pad is not available, please include SignaturePad from https://github.com/szimek/signature_pad",this.container.appendChild(i)}},setValue:function(a){var b=this;if("function"==typeof SignaturePad){var c=(this.formname.replace(/\W/g,""),this.sanitize(a));if(this.value===c)return;return b.value=c,b.input.value=b.value,b.signaturePad.clear(),a&&""!=a&&b.signaturePad.fromDataURL(a),b.watch_listener(),b.jsoneditor.notifyWatchers(b.path),!1}},destroy:function(){var a=this;this.formname.replace(/\W/g,"");a.signaturePad.off(),delete a.signaturePad}});var i=function(){var a=document.documentElement;return a.matches?"matches":a.webkitMatchesSelector?"webkitMatchesSelector":a.mozMatchesSelector?"mozMatchesSelector":a.msMatchesSelector?"msMatchesSelector":a.oMatchesSelector?"oMatchesSelector":void 0}();return h.AbstractTheme=c.extend({getContainer:function(){return document.createElement("div")},getFloatRightLinkHolder:function(){var a=document.createElement("div");return a.style=a.style||{},a.style.cssFloat="right",a.style.marginLeft="10px",a},getModal:function(){var a=document.createElement("div");return a.style.backgroundColor="white",a.style.border="1px solid black",a.style.boxShadow="3px 3px black",a.style.position="absolute",a.style.zIndex="10",a.style.display="none",a},getGridContainer:function(){var a=document.createElement("div");return a},getGridRow:function(){var a=document.createElement("div");return a.classList.add("row"),a},getGridColumn:function(){var a=document.createElement("div");return a},setGridColumnSize:function(a,b){},getLink:function(a){var b=document.createElement("a");return b.setAttribute("href","#"),b.appendChild(document.createTextNode(a)),b},disableHeader:function(a){a.style.color="#ccc"},disableLabel:function(a){a.style.color="#ccc"},enableHeader:function(a){a.style.color=""},enableLabel:function(a){a.style.color=""},getInfoButton:function(a){var b=document.createElement("span");b.innerText="ⓘ",b.style.fontSize="16px",b.style.fontWeight="bold",b.style.padding=".25rem",b.style.position="relative",b.style.display="inline-block";var c=document.createElement("span");return c.style.fontSize="12px",b.style.fontWeight="normal",c.style["font-family"]="sans-serif",c.style.visibility="hidden",c.style["background-color"]="rgba(50, 50, 50, .75)",c.style.margin="0 .25rem",c.style.color="#FAFAFA",c.style.padding=".5rem 1rem",c.style["border-radius"]=".25rem",c.style.width="20rem",c.style.position="absolute",c.innerText=a,b.onmouseover=function(){c.style.visibility="visible"},b.onmouseleave=function(){c.style.visibility="hidden"},b.appendChild(c),b},getFormInputLabel:function(a){var b=document.createElement("label");return b.appendChild(document.createTextNode(a)),b},getCheckboxLabel:function(a){var b=this.getFormInputLabel(a);return b.style.fontWeight="normal",b},getHeader:function(a){var b=document.createElement("h3");return"string"==typeof a?b.textContent=a:b.appendChild(a),b},getCheckbox:function(){var a=this.getFormInputField("checkbox");return a.style.display="inline-block",a.style.width="auto",a},getMultiCheckboxHolder:function(a,b,c){var d=document.createElement("div");b&&(b.style.display="block",d.appendChild(b));for(var e in a)a.hasOwnProperty(e)&&(a[e].style.display="inline-block",a[e].style.marginRight="20px",d.appendChild(a[e]));return c&&d.appendChild(c),d},getSelectInput:function(a){var b=document.createElement("select");return a&&this.setSelectOptions(b,a),b},getSwitcher:function(a){var b=this.getSelectInput(a);return b.style.backgroundColor="transparent",b.style.display="inline-block",b.style.fontStyle="italic",b.style.fontWeight="normal",b.style.height="auto",b.style.marginBottom=0,b.style.marginLeft="5px",b.style.padding="0 0 0 3px",b.style.width="auto",b},getSwitcherOptions:function(a){return a.getElementsByTagName("option")},setSwitcherOptions:function(a,b,c){this.setSelectOptions(a,b,c)},setSelectOptions:function(a,b,c){c=c||[],a.innerHTML="";for(var d=0;d
    ",c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.innerHTML="
    ",c},applyStyles:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a.style[c]=b[c])},closest:function(a,b){for(;a&&a!==document;){if(!a[i])return!1;if(a[i](b))return a;a=a.parentNode}return!1},insertBasicTopTab:function(a,b){b.firstChild.insertBefore(a,b.firstChild.firstChild)},getTab:function(a,b){var c=document.createElement("div");return c.appendChild(a),c.id=b,c.style=c.style||{},this.applyStyles(c,{border:"1px solid #ccc",borderWidth:"1px 0 1px 1px",textAlign:"center",lineHeight:"30px",borderRadius:"5px",borderBottomRightRadius:0,borderTopRightRadius:0,fontWeight:"bold",cursor:"pointer"}),c},getTopTab:function(a,b){var c=document.createElement("div");return c.id=b,c.appendChild(a),c.style=c.style||{},this.applyStyles(c,{"float":"left",border:"1px solid #ccc",borderWidth:"1px 1px 0px 1px",textAlign:"center",lineHeight:"30px",borderRadius:"5px",paddingLeft:"5px",paddingRight:"5px",borderBottomRightRadius:0,borderBottomLeftRadius:0,fontWeight:"bold",cursor:"pointer"}),c},getTabContentHolder:function(a){return a.children[1]},getTopTabContentHolder:function(a){return a.children[1]},getTabContent:function(){return this.getIndentedPanel()},getTopTabContent:function(){return this.getTopIndentedPanel()},markTabActive:function(a){this.applyStyles(a.tab,{opacity:1,background:"white"}),"undefined"!=typeof a.rowPane?a.rowPane.style.display="":a.container.style.display=""},markTabInactive:function(a){this.applyStyles(a.tab,{opacity:.5,background:""}),"undefined"!=typeof a.rowPane?a.rowPane.style.display="none":a.container.style.display="none"},addTab:function(a,b){a.children[0].appendChild(b)},addTopTab:function(a,b){a.children[0].appendChild(b)},getBlockLink:function(){var a=document.createElement("a");return a.style.display="block",a},getBlockLinkHolder:function(){var a=document.createElement("div");return a},getLinksHolder:function(){var a=document.createElement("div");return a},createMediaLink:function(a,b,c){a.appendChild(b),c.style.width="100%",a.appendChild(c)},createImageLink:function(a,b,c){a.appendChild(b),b.appendChild(c)},getFirstTab:function(a){return a.firstChild.firstChild},getInputGroup:function(a,c){return b}}),h.defaults.themes.bootstrap2=h.AbstractTheme.extend({getRangeInput:function(a,b,c){return this._super(a,b,c)},getGridContainer:function(){var a=document.createElement("div");return a.classList.add("container-fluid"),a},getGridRow:function(){var a=document.createElement("div");return a.classList.add("row-fluid"),a},getFormInputLabel:function(a){var b=this._super(a);return b.style.display="inline-block",b.style.fontWeight="bold",b},setGridColumnSize:function(a,b){a.classList.add("span"+b)},getSelectInput:function(a){var b=this._super(a);return b.style.width="auto",b.style.maxWidth="98%",b},getFormInputField:function(a){var b=this._super(a);return b.style.width="98%",b},afterInputReady:function(a){if(!a.controlgroup&&(a.controlgroup=this.closest(a,".control-group"),a.controls=this.closest(a,".controls"),this.closest(a,".compact")&&(a.controlgroup.className=a.controlgroup.className.replace(/control-group/g,"").replace(/[ ]{2,}/g," "),a.controls.className=a.controlgroup.className.replace(/controls/g,"").replace(/[ ]{2,}/g," "),a.style.marginBottom=0),this.queuedInputErrorText)){var b=this.queuedInputErrorText;delete this.queuedInputErrorText,this.addInputError(a,b)}},getIndentedPanel:function(){var a=document.createElement("div");return a.classList.add("well","well-small"),a.style.paddingBottom=0,a},getInfoButton:function(a){var b=document.createElement("span");b.classList.add("icon-info-sign","pull-right"),b.style.padding=".25rem",b.style.position="relative",b.style.display="inline-block";var c=document.createElement("span");return c.style["font-family"]="sans-serif",c.style.visibility="hidden",c.style["background-color"]="rgba(50, 50, 50, .75)",c.style.margin="0 .25rem",c.style.color="#FAFAFA",c.style.padding=".5rem 1rem",c.style["border-radius"]=".25rem",c.style.width="25rem",c.style.transform="translateX(-27rem) translateY(-.5rem)",c.style.position="absolute",c.innerText=a,b.onmouseover=function(){c.style.visibility="visible"},b.onmouseleave=function(){c.style.visibility="hidden"},b.appendChild(c),b},getFormInputDescription:function(a){var b=document.createElement("p");return b.classList.add("help-inline"),b.textContent=a,b},getFormControl:function(a,b,c,d){var e=document.createElement("div");e.classList.add("control-group");var f=document.createElement("div");return f.classList.add("controls"),a&&"checkbox"===b.getAttribute("type")?(e.appendChild(f),a.classList.add("checkbox"),a.appendChild(b),f.appendChild(a),d&&f.appendChild(d),f.style.height="30px"):(a&&(a.classList.add("control-label"),e.appendChild(a)),d&&f.appendChild(d),f.appendChild(b),e.appendChild(f)),c&&f.appendChild(c),e},getHeaderButtonHolder:function(){var a=this.getButtonHolder();return a.style.marginLeft="10px",a},getButtonHolder:function(){var a=document.createElement("div");return a.classList.add("btn-group"),a},getButton:function(a,b,c){var d=this._super(a,b,c);return d.classList.add("btn","btn-default"),d},getTable:function(){var a=document.createElement("table");return a.classList.add("table","table-bordered"),a.style.width="auto",a.style.maxWidth="none",a},addInputError:function(a,b){return a.controlgroup?void(a.controlgroup&&a.controls&&(a.controlgroup.classList.add("error"),a.errmsg?a.errmsg.style.display="":(a.errmsg=document.createElement("p"),a.errmsg.classList.add("help-block","errormsg"),a.controls.appendChild(a.errmsg)),a.errmsg.textContent=b)):void(this.queuedInputErrorText=b)},removeInputError:function(a){a.controlgroup||delete this.queuedInputErrorText,a.errmsg&&(a.errmsg.style.display="none",a.controlgroup.classList.remove("error"))},getTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("tabbable","tabs-left"),c.innerHTML="
    ",c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("tabbable","tabs-over"),c.innerHTML="
    ",c},getTab:function(a,b){var c=document.createElement("li");c.classList.add("nav-item");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("li");c.classList.add("nav-item");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTabContentHolder:function(a){return a.children[1]},getTopTabContentHolder:function(a){return a.children[1]},getTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a},markTabActive:function(a){a.tab.classList.add("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.add("active"):a.container.classList.add("active")},markTabInactive:function(a){a.tab.classList.remove("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.remove("active"):a.container.classList.remove("active")},addTab:function(a,b){a.children[0].appendChild(b)},addTopTab:function(a,b){a.children[0].appendChild(b)},getProgressBar:function(){var a=document.createElement("div");a.classList.add("progress");var b=document.createElement("div");return b.classList.add("bar"),b.style.width="0%",a.appendChild(b),a},updateProgressBar:function(a,b){a&&(a.firstChild.style.width=b+"%")},updateProgressBarUnknown:function(a){a&&(a.classList.add("progress","progress-striped","active"),a.firstChild.style.width="100%")},getInputGroup:function(a,b){if(a){var c=document.createElement("div");c.classList.add("input-append"),c.appendChild(a);for(var d=0;d
    ",c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.innerHTML="
    ",c},getTab:function(a,b){var c=document.createElement("li");c.setAttribute("role","presentation");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),d.setAttribute("aria-controls",b),d.setAttribute("role","tab"),d.setAttribute("data-toggle","tab"),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("li");c.setAttribute("role","presentation");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),d.setAttribute("aria-controls",b),d.setAttribute("role","tab"),d.setAttribute("data-toggle","tab"),c.appendChild(d),c},getTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a.setAttribute("role","tabpanel"),a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a.setAttribute("role","tabpanel"),a},markTabActive:function(a){a.tab.classList.add("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.add("active"):a.container.classList.add("active")},markTabInactive:function(a){a.tab.classList.remove("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.remove("active"):a.container.classList.remove("active")},getProgressBar:function(){var a=0,b=100,c=0,d=document.createElement("div");d.classList.add("progress");var e=document.createElement("div");return e.classList.add("progress-bar"),e.setAttribute("role","progressbar"),e.setAttribute("aria-valuenow",c), +e.setAttribute("aria-valuemin",a),e.setAttribute("aria-valuenax",b),e.innerHTML=c+"%",d.appendChild(e),d},updateProgressBar:function(a,b){if(a){var c=a.firstChild,d=b+"%";c.setAttribute("aria-valuenow",b),c.style.width=d,c.innerHTML=d}},updateProgressBarUnknown:function(a){if(a){var b=a.firstChild;a.classList.add("progress","progress-striped","active"),b.removeAttribute("aria-valuenow"),b.style.width="100%",b.innerHTML=""}},getInputGroup:function(a,b){if(a){var c=document.createElement("div");c.classList.add("input-group"),c.appendChild(a);var d=document.createElement("div");d.classList.add("input-group-btn"),c.appendChild(d);for(var e=0;e
    ",b.classList.add("row"),b},addTab:function(a,b){a.children[0].children[0].appendChild(b)},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.innerHTML="
    ",c},getTab:function(a,b){var c=document.createElement("li");c.classList.add("nav-item");var d=document.createElement("a");return d.classList.add("nav-link"),d.setAttribute("style","padding:10px;"),d.setAttribute("href","#"+b),d.setAttribute("data-toggle","tab"),d.appendChild(a),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("li");c.classList.add("nav-item");var d=document.createElement("a");return d.classList.add("nav-link"),d.setAttribute("href","#"+b),d.setAttribute("data-toggle","tab"),d.appendChild(a),c.appendChild(d),c},getTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a.setAttribute("role","tabpanel"),a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-pane"),a.setAttribute("role","tabpanel"),a},markTabActive:function(a){a.tab.firstChild.classList.add("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.add("active"):a.container.classList.add("active")},markTabInactive:function(a){a.tab.firstChild.classList.remove("active"),"undefined"!=typeof a.rowPane?a.rowPane.classList.remove("active"):a.container.classList.remove("active")},getProgressBar:function(){var a=0,b=100,c=0,d=document.createElement("div");d.classList.add("progress");var e=document.createElement("div");return e.classList.add("progress-bar"),e.setAttribute("role","progressbar"),e.setAttribute("aria-valuenow",c),e.setAttribute("aria-valuemin",a),e.setAttribute("aria-valuenax",b),e.innerHTML=c+"%",d.appendChild(e),d},updateProgressBar:function(a,b){if(a){var c=a.firstChild,d=b+"%";c.setAttribute("aria-valuenow",b),c.style.width=d,c.innerHTML=d}},updateProgressBarUnknown:function(a){if(a){var b=a.firstChild;a.classList.add("progress","progress-striped","active"),b.removeAttribute("aria-valuenow"),b.style.width="100%",b.innerHTML=""}},getInputGroup:function(a,b){if(a){var c=document.createElement("div");c.classList.add("input-group"),c.appendChild(a);var d=document.createElement("div");d.classList.add("input-group-prepend"),c.appendChild(d);for(var e=0;e'),a.errmsg=a.parentNode.getElementsByClassName("error")[0]),void(a.errmsg.textContent=b)):void(this.queuedInputErrorText=b)},removeInputError:function(a){a.group||delete this.queuedInputErrorText,a.errmsg&&(a.group.classList.remove("error"),a.errmsg.style.display="none")},getProgressBar:function(){var a=document.createElement("div");a.classList.add("progress");var b=document.createElement("span");return b.classList.add("meter"),b.style.width="0%",a.appendChild(b),a},updateProgressBar:function(a,b){a&&(a.firstChild.style.width=b+"%")},updateProgressBarUnknown:function(a){a&&(a.firstChild.style.width="100%")},getInputGroup:function(a,c){if(!a)return b;var d=document.createElement("div");d.classList.add("input-group"),a.classList.add("input-group-field"),d.appendChild(a);for(var e=0;e
    ',c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("row"),c.innerHTML='
    ',c},setGridColumnSize:function(a,b){var c=["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"];a.classList.add("columns",c[b])},getTab:function(a,b){var c=document.createElement("dd"),d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("dd"),d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTabContentHolder:function(a){return a.children[1]},getTopTabContentHolder:function(a){return a.children[1]},getTabContent:function(){var a=document.createElement("div");return a.classList.add("content","active"),a.style.paddingLeft="5px",a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("content","active"),a.style.paddingLeft="5px",a},markTabActive:function(a){a.tab.classList.add("active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="":a.container.style.display=""},markTabInactive:function(a){a.tab.classList.remove("active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="none":a.container.style.display="none"},addTab:function(a,b){a.children[0].appendChild(b)},addTopTab:function(a,b){a.children[0].appendChild(b)}}),h.defaults.themes.foundation4=h.defaults.themes.foundation.extend({getHeaderButtonHolder:function(){var a=this._super();return a.style.fontSize=".6em",a},setGridColumnSize:function(a,b){a.classList.add("columns","large-"+b)},getFormInputDescription:function(a){var b=this._super(a);return b.style.fontSize=".8rem",b},getFormInputLabel:function(a){var b=this._super(a);return b.style.fontWeight="bold",b}}),h.defaults.themes.foundation5=h.defaults.themes.foundation.extend({getFormInputDescription:function(a){var b=this._super(a);return b.style.fontSize=".8rem",b},setGridColumnSize:function(a,b){a.classList.add("columns","medium-"+b)},getButton:function(a,b,c){var d=this._super(a,b,c);return d.className=d.className.replace(/\s*small/g,"")+" tiny",d},getTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.innerHTML='
    ',c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("row"),c.innerHTML='
    ',c},getTab:function(a,b){var c=document.createElement("dd"),d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("dd"),d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTabContentHolder:function(a){return a.children[1]},getTopTabContentHolder:function(a){return a.children[1]},getTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-content","active"),a.style.paddingLeft="5px",a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("tab-content","active"),a.style.paddingLeft="5px",a},markTabActive:function(a){a.tab.classList.add("active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="":a.container.style.display=""},markTabInactive:function(a){a.tab.classList.remove("active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="none":a.container.style.display="none"},addTab:function(a,b){a.children[0].appendChild(b)},addTopTab:function(a,b){a.children[0].appendChild(b)}}),h.defaults.themes.foundation6=h.defaults.themes.foundation5.extend({getIndentedPanel:function(){var a=document.createElement("div");return a.classList.add("callout","secondary"),a.style="padding-left: 10px; margin-left: 10px;",a},getButtonHolder:function(){var a=document.createElement("div");return a.classList.add("button-group","tiny"),a.style.marginBottom=0,a},getFormInputLabel:function(a){var b=this._super(a);return b.style.display="block",b},getFormControl:function(a,b,c,d){var e=document.createElement("div");return e.classList.add("form-control"),a&&e.appendChild(a),"checkbox"===b.type?a.insertBefore(b,a.firstChild):a?(d&&a.appendChild(d),a.appendChild(b)):(d&&e.appendChild(d),e.appendChild(b)),c&&a.appendChild(c),e},addInputError:function(a,b){if(a.group){if(a.group.classList.add("error"),a.errmsg)a.errmsg.style.display="",a.className="";else{var c=document.createElement("span");c.classList.add("form-error","is-visible"),a.group.getElementsByTagName("label")[0].appendChild(c),a.classList.add("is-invalid-input"),a.errmsg=c}a.errmsg.textContent=b}},removeInputError:function(a){a.errmsg&&(a.classList.remove("is-invalid-input"),a.errmsg.parentNode&&a.errmsg.parentNode.removeChild(a.errmsg))},getTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("grid-x"),c.innerHTML='
      ',c},getTopTabHolder:function(a){var b="undefined"==typeof a?"":a,c=document.createElement("div");return c.classList.add("grid-y"),c.innerHTML='
        ',c},insertBasicTopTab:function(a,b){b.firstChild.firstChild.insertBefore(a,b.firstChild.firstChild.firstChild)},getTab:function(a,b){var c=document.createElement("li");c.classList.add("tabs-title");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTopTab:function(a,b){var c=document.createElement("li");c.classList.add("tabs-title");var d=document.createElement("a");return d.setAttribute("href","#"+b),d.appendChild(a),c.appendChild(d),c},getTabContentHolder:function(a){return a.children[1].firstChild},getTopTabContentHolder:function(a){return a.firstChild.children[1]},getTabContent:function(){var a=document.createElement("div");return a.classList.add("tabs-panel"),a.style.paddingLeft="5px",a},getTopTabContent:function(){var a=document.createElement("div");return a.classList.add("tabs-panel"),a.style.paddingLeft="5px",a},markTabActive:function(a){a.tab.classList.add("is-active"),a.tab.firstChild.setAttribute("aria-selected","true"),"undefined"!=typeof a.rowPane?(a.rowPane.classList.add("is-active"),a.rowPane.setAttribute("aria-selected","true")):(a.container.classList.add("is-active"),a.container.setAttribute("aria-selected","true"))},markTabInactive:function(a){a.tab.classList.remove("is-active"),a.tab.firstChild.removeAttribute("aria-selected"),"undefined"!=typeof a.rowPane?(a.rowPane.classList.remove("is-active"),a.rowPane.removeAttribute("aria-selected")):(a.container.classList.remove("is-active"),a.container.removeAttribute("aria-selected"))},addTab:function(a,b){a.children[0].firstChild.appendChild(b)},addTopTab:function(a,b){a.firstChild.children[0].appendChild(b)},getFirstTab:function(a){return a.firstChild.firstChild.firstChild}}),h.defaults.themes.html=h.AbstractTheme.extend({getFormInputLabel:function(a){var b=this._super(a);return b.style.display="block",b.style.marginBottom="3px",b.style.fontWeight="bold",b},getFormInputDescription:function(a){var b=this._super(a);return b.style.fontSize=".8em",b.style.margin=0,b.style.display="inline-block",b.style.fontStyle="italic",b},getIndentedPanel:function(){var a=this._super();return a.style.border="1px solid #ddd",a.style.padding="5px",a.style.margin="10px",a.style.borderRadius="3px",a},getTopIndentedPanel:function(){return this.getIndentedPanel()},getChildEditorHolder:function(){var a=this._super();return a.style.marginBottom="8px",a},getHeaderButtonHolder:function(){var a=this.getButtonHolder();return a.style.display="inline-block",a.style.marginLeft="10px",a.style.fontSize=".8em",a.style.verticalAlign="middle",a},getTable:function(){var a=this._super();return a.style.borderBottom="1px solid #ccc",a.style.marginBottom="5px",a},addInputError:function(a,b){if(a.style.borderColor="red",a.errmsg)a.errmsg.style.display="block";else{var c=this.closest(a,".form-control");a.errmsg=document.createElement("div"),a.errmsg.setAttribute("class","errmsg"),a.errmsg.style=a.errmsg.style||{},a.errmsg.style.color="red",c.appendChild(a.errmsg)}a.errmsg.innerHTML="",a.errmsg.appendChild(document.createTextNode(b))},removeInputError:function(a){a.style.borderColor="",a.errmsg&&(a.errmsg.style.display="none")},getProgressBar:function(){var a=100,b=0,c=document.createElement("progress");return c.setAttribute("max",a),c.setAttribute("value",b),c},updateProgressBar:function(a,b){a&&a.setAttribute("value",b)},updateProgressBarUnknown:function(a){a&&a.removeAttribute("value")}}),h.defaults.themes.jqueryui=h.AbstractTheme.extend({getTable:function(){var a=this._super();return a.setAttribute("cellpadding",5),a.setAttribute("cellspacing",0),a},getTableHeaderCell:function(a){var b=this._super(a);return b.classList.add("ui-state-active"),b.style.fontWeight="bold",b},getTableCell:function(){var a=this._super();return a.classList.add("ui-widget-content"),a},getHeaderButtonHolder:function(){var a=this.getButtonHolder();return a.style.marginLeft="10px",a.style.fontSize=".6em",a.style.display="inline-block",a},getFormInputDescription:function(a){var b=this.getDescription(a);return b.style.marginLeft="10px",b.style.display="inline-block",b},getFormControl:function(a,b,c,d){var e=this._super(a,b,c,d);return"checkbox"===b.type?(e.style.lineHeight="25px",e.style.padding="3px 0"):e.style.padding="4px 0 8px 0",e},getDescription:function(a){var b=document.createElement("span");return b.style.fontSize=".8em",b.style.fontStyle="italic",b.textContent=a,b},getButtonHolder:function(){var a=document.createElement("div");return a.classList.add("ui-buttonset"),a.style.fontSize=".7em",a},getFormInputLabel:function(a){var b=document.createElement("label");return b.style.fontWeight="bold",b.style.display="block",b.textContent=a,b},getButton:function(a,b,c){var d=document.createElement("button");d.classList.add("ui-button","ui-widget","ui-state-default","ui-corner-all"),b&&!a?(d.classList.add("ui-button-icon-only"),b.classList.add("ui-button-icon-primary","ui-icon-primary"),d.appendChild(b)):b?(d.classList.add("ui-button-text-icon-primary"),b.classList.add("ui-button-icon-primary","ui-icon-primary"),d.appendChild(b)):d.classList.add("ui-button-text-only");var e=document.createElement("span");return e.classList.add("ui-button-text"),e.textContent=a||c||".",d.appendChild(e),d.setAttribute("title",c),d},setButtonText:function(a,b,c,d){a.innerHTML="",a.classList.add("ui-button","ui-widget","ui-state-default","ui-corner-all"),c&&!b?(a.classList.add("ui-button-icon-only"),c.classList.add("ui-button-icon-primary","ui-icon-primary"),a.appendChild(c)):c?(a.classList.add("ui-button-text-icon-primary"),c.classList.add("ui-button-icon-primary","ui-icon-primary"),a.appendChild(c)):a.classList.add("ui-button-text-only");var e=document.createElement("span");e.classList.add("ui-button-text"),e.textContent=b||d||".",a.appendChild(e),a.setAttribute("title",d)},getIndentedPanel:function(){var a=document.createElement("div");return a.classList.add("ui-widget-content","ui-corner-all"),a.style.padding="1em 1.4em",a.style.marginBottom="20px",a},afterInputReady:function(a){if(!a.controls&&(a.controls=this.closest(a,".form-control"),this.queuedInputErrorText)){var b=this.queuedInputErrorText;delete this.queuedInputErrorText,this.addInputError(a,b)}},addInputError:function(a,b){return a.controls?(a.errmsg?a.errmsg.style.display="":(a.errmsg=document.createElement("div"),a.errmsg.classList.add("ui-state-error"),a.controls.appendChild(a.errmsg)),void(a.errmsg.textContent=b)):void(this.queuedInputErrorText=b)},removeInputError:function(a){a.controls||delete this.queuedInputErrorText,a.errmsg&&(a.errmsg.style.display="none")},markTabActive:function(a){a.tab.classList.remove("ui-widget-header"),a.tab.classList.add("ui-state-active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="":a.container.style.display=""},markTabInactive:function(a){a.tab.classList.add("ui-widget-header"),a.tab.classList.remove("ui-state-active"),"undefined"!=typeof a.rowPane?a.rowPane.style.display="none":a.container.style.display="none"}}),h.defaults.themes.barebones=h.AbstractTheme.extend({getFormInputLabel:function(a){var b=this._super(a);return b},getFormInputDescription:function(a){var b=this._super(a);return b},getIndentedPanel:function(){var a=this._super();return a},getChildEditorHolder:function(){var a=this._super();return a},getHeaderButtonHolder:function(){var a=this.getButtonHolder();return a},getTable:function(){var a=this._super();return a},addInputError:function(a,b){if(a.errmsg)a.errmsg.style.display="block";else{var c=this.closest(a,".form-control");a.errmsg=document.createElement("div"),a.errmsg.setAttribute("class","errmsg"),c.appendChild(a.errmsg)}a.errmsg.innerHTML="",a.errmsg.appendChild(document.createTextNode(b))},removeInputError:function(a){a.style.borderColor="",a.errmsg&&(a.errmsg.style.display="none")},getProgressBar:function(){var a=100,b=0,c=document.createElement("progress");return c.setAttribute("max",a),c.setAttribute("value",b),c},updateProgressBar:function(a,b){a&&a.setAttribute("value",b)},updateProgressBarUnknown:function(a){a&&a.removeAttribute("value")}}),h.defaults.themes.materialize=h.AbstractTheme.extend({setGridColumnSize:function(a,b){a.classList.add("col"),a.classList.add("s"+b)},getHeaderButtonHolder:function(){return this.getButtonHolder()},getButtonHolder:function(){return document.createElement("span")},getButton:function(a,b,c){a&&(b.classList.add("left"),b.style.marginRight="5px");var d=this._super(a,b,c);return d.classList.add("waves-effect","waves-light","btn"),d.style.fontSize="0.75rem",d.style.height="24px",d.style.lineHeight="24px",d.style.marginLeft="5px",d.style.padding="0 0.5rem",d},getFormControl:function(a,b,c,d){var e,f=b.type;if(f&&"checkbox"===f){if(e=document.createElement("p"),a){var g=document.createElement("span");g.innerHTML=a.innerHTML,a.innerHTML="",a.setAttribute("for",b.id),e.appendChild(a),a.appendChild(b),a.appendChild(g)}else e.appendChild(b);return e}return e=this._super(a,b,c,d),f&&f.startsWith("select")||e.classList.add("input-field"),f&&"color"===f&&(b.style.height="3rem",b.style.width="100%",b.style.margin="5px 0 20px 0",b.style.padding="3px",a&&(a.style.transform="translateY(-14px) scale(0.8)",a.style["-webkit-transform"]="translateY(-14px) scale(0.8)",a.style["-webkit-transform-origin"]="0 0",a.style["transform-origin"]="0 0")),e},getDescription:function(a){var b=document.createElement("div");return b.classList.add("grey-text"),b.style.marginTop="-15px",b.innerHTML=a,b},getHeader:function(a){var b=document.createElement("h5");return"string"==typeof a?b.textContent=a:b.appendChild(a),b},getChildEditorHolder:function(){var a=document.createElement("div");return a.marginBottom="10px",a},getIndentedPanel:function(){var a=document.createElement("div");return a.classList.add("card-panel"),a},getTable:function(){var a=document.createElement("table");return a.classList.add("striped","bordered"),a.style.marginBottom="10px",a},getTableRow:function(){return document.createElement("tr")},getTableHead:function(){return document.createElement("thead")},getTableBody:function(){return document.createElement("tbody")},getTableHeaderCell:function(a){var b=document.createElement("th");return b.textContent=a,b},getTableCell:function(){var a=document.createElement("td");return a},getTabHolder:function(){var a=['
        ','
          ',"
        ","
        ",'
        ',"
        "].join("\n"),b=document.createElement("div");return b.classList.add("row","card-panel"),b.innerHTML=a,b},addTab:function(a,b){a.children[0].children[0].appendChild(b)},getTab:function(a){var b=document.createElement("li");return b.classList.add("tab"),b.style=b.style||{},this.applyStyles(b,{width:"100%",textAlign:"left",lineHeight:"24px",height:"24px",fontSize:"14px",cursor:"pointer"}),b.appendChild(a),b},markTabActive:function(a){a.style=a.style||{},this.applyStyles(a,{width:"100%",textAlign:"left",lineHeight:"24px",height:"24px",fontSize:"14px",cursor:"pointer",color:"rgba(238,110,115,1)",transition:"border-color .5s ease",borderRight:"3px solid #424242"})},markTabInactive:function(a){a.style=a.style||{},this.applyStyles(a,{width:"100%",textAlign:"left",lineHeight:"24px",height:"24px",fontSize:"14px",cursor:"pointer",color:"rgba(238,110,115,0.7)"})},getTabContentHolder:function(a){return a.children[1]},getTabContent:function(){return document.createElement("div")},addInputError:function(a,b){var c,d=a.parentNode;d&&(this.removeInputError(a),c=document.createElement("div"),c.classList.add("error-text","red-text"),c.textContent=b,d.appendChild(c))},removeInputError:function(a){var b,c=a.parentElement;if(c){b=c.getElementsByClassName("error-text");for(var d=0;d1){var g;c=function(b){for(g=b,a=0;a=0){if(a.items["enum"])return"multiselect";if(h.plugins.selectize.enable&&"string"===a.items.type)return"arraySelectize"}}),h.defaults.resolvers.unshift(function(a){if(a.oneOf||a.anyOf)return"multiple"}),h.defaults.resolvers.unshift(function(a){if(["string","integer"].indexOf(a.type)!==-1&&["date","time","datetime-local"].indexOf(a.format)!==-1)return"datetime"}),h.defaults.resolvers.unshift(function(a){if("string"===a.type&&"starrating"===a.format)return"starrating"}),function(){if(window.jQuery||window.Zepto){var a=window.jQuery||window.Zepto;a.jsoneditor=h.defaults,a.fn.jsoneditor=function(a){var b=this,c=this.data("jsoneditor");if("value"===a){if(!c)throw"Must initialize jsoneditor before getting/setting the value";if(!(arguments.length>1))return c.getValue();c.setValue(arguments[1])}else{if("validate"===a){if(!c)throw"Must initialize jsoneditor before validating";return arguments.length>1?c.validate(arguments[1]):c.validate()}"destroy"===a?c&&(c.destroy(),this.data("jsoneditor",null)):(c&&c.destroy(),c=new h(this.get(0),a),this.data("jsoneditor",c),c.on("change",function(){b.trigger("change")}),c.on("ready",function(){b.trigger("ready")}))}return this}}}(),h}); +//# sourceMappingURL=jsoneditor.min.js.map \ No newline at end of file diff --git a/zms3.formulator.lib/printData.py b/zms3.formulator.lib/printData.py new file mode 100644 index 0000000..33cb467 --- /dev/null +++ b/zms3.formulator.lib/printData.py @@ -0,0 +1,16 @@ +import zExceptions + +def printData(self): + current_roles = self.getUserRoles(self.REQUEST['AUTHENTICATED_USER']) + allowed_roles = ['Manager','ZMSAdministrator','ZMSEditor'] + authorized = len(self.intersection_list(current_roles,allowed_roles))>0 and True or False + if not authorized: + raise zExceptions.Unauthorized + else: + frmu = self.ZMSFormulator(self) + self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Content-Type','text/html; charset=utf-8') + data = frmu.printDataRaw() + data = unicode(data,'utf-8') + return data.replace('#/#',' | ') \ No newline at end of file diff --git a/zms3.formulator.lib/putData.py b/zms3.formulator.lib/putData.py new file mode 100644 index 0000000..c0a5f01 --- /dev/null +++ b/zms3.formulator.lib/putData.py @@ -0,0 +1,14 @@ +def putData(self): + + # Workaround: adding language for forms existing only in a secondary language + self.REQUEST.set('lang',self.REQUEST.form.get('LANG', self.getPrimaryLanguage())) + + frmu = self.ZMSFormulator(self) + res = frmu.receiveData() + self.REQUEST.RESPONSE.setHeader('Cache-Control', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Pragma', 'no-cache') + self.REQUEST.RESPONSE.setHeader('Content-Type','text/html; charset=utf-8') + if res: + return 'OK' + else: + return 'NOK' \ No newline at end of file diff --git a/zms3.formulator.lib/resetData.py b/zms3.formulator.lib/resetData.py new file mode 100644 index 0000000..291e77f --- /dev/null +++ b/zms3.formulator.lib/resetData.py @@ -0,0 +1,11 @@ +import zExceptions + +def resetData(self): + current_roles = self.getUserRoles(self.REQUEST['AUTHENTICATED_USER']) + allowed_roles = ['Manager','ZMSAdministrator','ZMSEditor'] + authorized = len(self.intersection_list(current_roles,allowed_roles))>0 and True or False + if not authorized: + raise zExceptions.Unauthorized + else: + frmu = self.ZMSFormulator(self) + frmu.clearData() \ No newline at end of file diff --git a/zms3/__init__.py b/zms3/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/zms3/formulator/__init__.py b/zms3/formulator/__init__.py deleted file mode 100644 index e69de29..0000000