39 lines
250 KiB
JSON
39 lines
250 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2",
|
|
"status": "FAIL",
|
|
"rc": 3,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "gram-support-fleet-footer-ui-readonly-audit-r2",
|
|
"started_at_utc": "2026-09-09T16:02:25Z",
|
|
"finished_at_utc": "2026-09-09T16:02:37Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "8dcee3ee82375b43608e16025232e1a2f9b20cec49465145bfb5820a53a98f3f",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 3,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca",
|
|
"sanitized_output_sha256": "09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "GRAM_FOOTER_AUDIT_BEGIN\nCOMMAND_ID=SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2\nGRAM_FOOTER_SOURCE={\"addon_candidates\":[],\"branch\":\"main\",\"clean\":true,\"exists\":true,\"git\":true,\"head\":\"0910c8f60796a783ca11af69b1c5ed775ae79ee5\",\"repo\":\"/root/gram-support\",\"selected_addon_dir\":null,\"tracked_count\":3,\"tracked_relevant\":[\"release/FIX4_SHA256.txt\",\"release/GRAM_SUPPORT_FIX4_FINAL.zip\"],\"ui_hits\":[]}\nGRAM_FOOTER_CLUSTER={\"160\":{\"name\":\"forum-prod\",\"node\":\"pve02\",\"status\":\"running\"},\"210\":{\"name\":\"newfi-prod\",\"node\":\"pve01\",\"status\":\"running\"},\"211\":{\"name\":\"newfi-staging\",\"node\":\"pve03\",\"status\":\"running\"}}\nGRAM_FOOTER_VM160={\"host\":\"forum-prod\",\"sites\":[{\"name\":\"codevipe\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/codevipe/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0424\\u043e\\u0440\\u0443\\u043c CodeVipe\",\"boardUrl\":\"https://codevipe.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/codevipe/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"dsmods\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/dsmods/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0421\\u0435\\u043a\\u0440\\u0435\\u0442\\u044b \\u0438 \\u043c\\u043e\\u0434\\u044b Doom\",\"boardUrl\":\"https://dsmods.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/dsmods/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"gamevipe\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/gamevipe/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0424\\u043e\\u0440\\u0443\\u043c GameVipe\",\"boardUrl\":\"https://gamevipe.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/gamevipe/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"hkmods\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/hkmods/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":10,\"max_id\":12},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u041c\\u043e\\u0434\\u044b \\u0434\\u043b\\u044f Hollow Knight\",\"boardUrl\":\"https://hkmods.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/hkmods/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"kingofwolk\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/kingofwolk/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"KingOfWolk\",\"boardUrl\":\"https://kingofwolk.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/kingofwolk/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":2,\"title\":\"KingOfWolk Dark\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"zakrutim\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/zakrutim/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u041a\\u043e\\u043d\\u0441\\u0435\\u0440\\u0432\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435 \\u0438 \\u0437\\u0430\\u043a\\u0440\\u0443\\u0442\\u043a\\u0438\",\"boardUrl\":\"https://zakrutim.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/zakrutim/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_VM210={\"host\":\"newfi-prod\",\"sites\":[{\"name\":\"newfi-prod\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/newfi/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"0\",\"boardTitle\":\"\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\",\"boardUrl\":\"https://newfi.ru\",\"defaultStyleId\":\"4\"},\"root\":\"/var/www/forums/newfi/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":4,\"title\":\"\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_VM211={\"host\":\"newfi-staging\",\"sites\":[{\"name\":\"newfi-staging\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/newfi/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":14,\"max_id\":46},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"0\",\"boardTitle\":\"Newfi Staging\",\"boardUrl\":\"http://newfi-staging.gram1.ru\",\"defaultStyleId\":\"4\"},\"root\":\"/var/www/forums/newfi/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":4,\"title\":\"Newfi Staging\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"</body>\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"<xf:include template=\\\"gram_support_launcher\\\" />\\n</body>\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"<xf:macro id=\\\"content\\\">\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n</xf:macro>\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\"},{\"line\":7,\"text\":\"<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\"},{\"line\":10,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_access_title') }}</xf:title>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/access.js\\\" min=\\\"1\\\" />\\n\\n<xf:form action=\\\"{{ link('support/access') }}\\\" method=\\\"post\\\" class=\\\"block js-supportAccessForm\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textboxrow name=\\\"access_code\\\" label=\\\"{{ phrase('gram_support_access_code') }}\\\"\\n\\t\\t\\t\\tautocomplete=\\\"off\\\" />\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_continue') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"},{\"line\":15,\"text\":\"<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_my_tickets') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('account/support/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t<xf:else />\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">{{ phrase('gram_support_no_tickets') }}</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":4,\"text\":\"<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\"},{\"line\":14,\"text\":\"<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\"},{\"line\":15,\"text\":\"<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\"},{\"line\":16,\"text\":\"<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_create_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<xf:form action=\\\"{{ link('support/create') }}\\\" method=\\\"post\\\" upload=\\\"true\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:textboxrow name=\\\"email\\\" type=\\\"email\\\" required=\\\"required\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('email') }}\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t\\t<xf:selectrow name=\\\"category\\\" required=\\\"required\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_category') }}\\\">\\n\\t\\t\\t\\t<xf:option value=\\\"technical\\\">{{ phrase('gram_support_category_technical') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"account\\\">{{ phrase('gram_support_category_account') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"content\\\">{{ phrase('gram_support_category_content') }}</xf:option>\\n\\t\\t\\t\\t<xf:option value=\\\"other\\\">{{ phrase('gram_support_category_other') }}</xf:option>\\n\\t\\t\\t</xf:selectrow>\\n\\t\\t\\t<xf:textboxrow name=\\\"subject\\\" maxlength=\\\"255\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_subject') }}\\\" />\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"8\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_description') }}\\\" />\\n\\t\\t\\t<xf:uploadrow name=\\\"screenshot\\\" accept=\\\".gif,.jpeg,.jpg,.jpe,.png,.webp\\\"\\n\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"!$xf.visitor.user_id\\\">\\n\\t\\t\\t\\t<xf:captcharow label=\\\"{{ phrase('verification') }}\\\"\\n\\t\\t\\t\\t\\thint=\\\"{{ phrase('required') }}\\\" force=\\\"true\\\" />\\n\\t\\t\\t</xf:if>\\n\\t\\t</div>\\n\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_submit') }}\\\" />\\n\\t</div>\\n</xf:form>\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<p>{{ phrase('gram_support_save_access_code') }}</p>\"},{\"line\":17,\"text\":\"<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_created_title') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<p>{{ phrase('gram_support_save_access_code') }}</p>\\n\\t\\t\\t\\t<code class=\\\"js-copyTarget\\\">{{ $accessCode }}</code>\\n\\t\\t\\t\\t<xf:button icon=\\\"copy\\\"\\n\\t\\t\\t\\t\\tdata-xf-init=\\\"copy-to-clipboard\\\"\\n\\t\\t\\t\\t\\tdata-copy-target=\\\".js-copyTarget\\\"\\n\\t\\t\\t\\t\\tclass=\\\"button--link is-hidden\\\">{{ phrase('copy') }}</xf:button>\\n\\t\\t\\t</div>\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<a href=\\\"{$magicLink}\\\" rel=\\\"nofollow\\\">{{ phrase('gram_support_open_ticket') }}</a>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\"},{\"line\":2,\"text\":\"<a class=\\\"gramSupport-launcher button button--primary\\\"\"},{\"line\":3,\"text\":\"href=\\\"{{ link('support/create') }}\\\"\"},{\"line\":4,\"text\":\"aria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"<xf:if is=\\\"$xf.options.gramSupportSiteId\\\">\\n\\t<a class=\\\"gramSupport-launcher button button--primary\\\"\\n\\t\\thref=\\\"{{ link('support/create') }}\\\"\\n\\t\\taria-label=\\\"{{ phrase('gram_support_open_support') }}\\\">\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t</a>\\n</xf:if>\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_queue') }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$tickets\\\" value=\\\"$ticket\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"{{ link('support/staff/ticket', null, {'ref': $ticket.public_ref}) }}\\\">\\n\\t\\t\\t\\t\\t\\t{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\t\\t\\t\\t\\t</a>\\n\\t\\t\\t\\t\\t<span class=\\\"u-muted\\\">{{ $ticket.status }}</span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\"},{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":3,\"text\":\"<span class=\\\"js-gramSupportPwaConfig\\\" hidden\"},{\"line\":4,\"text\":\"data-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\"},{\"line\":5,\"text\":\"data-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\"},{\"line\":6,\"text\":\"<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\"},{\"line\":13,\"text\":\"<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">\"},{\"line\":16,\"text\":\"<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\"},{\"line\":18,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":29,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":41,\"text\":\"<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":44,\"text\":\"<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":45,\"text\":\"<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes')\\\">\"},{\"line\":47,\"text\":\"<xf:option name=\\\"is_internal\\\" value=\\\"1\\\">{{ phrase('gram_support_internal_note') }}</xf:option>\"},{\"line\":51,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"},{\"line\":55,\"text\":\"<xf:form action=\\\"{{ link('support/staff/update', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":58,\"text\":\"<xf:selectrow name=\\\"status\\\" value=\\\"{$ticket.status}\\\" label=\\\"{{ phrase('gram_support_status') }}\\\">\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"<xf:title>{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n<span class=\\\"js-gramSupportPwaConfig\\\" hidden\\n\\tdata-manifest-url=\\\"{{ base_url('js/gram/support/pwa/manifest.webmanifest') }}\\\"\\n\\tdata-sw-url=\\\"{{ link('support/service-worker') }}\\\"></span>\\n<xf:js addon=\\\"Gram/Support\\\" src=\\\"gram/support/staff-pwa.js\\\" min=\\\"1\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row {{ $message.is_internal ? 'gramSupport-message--internal' : '' }}\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t<xf:if is=\\\"$message.is_internal\\\"> \\u00b7 {{ phrase('gram_support_internal_note') }}</xf:if>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:form action=\\\"{{ link('support/staff/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\" label=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t<xf:if is=\\\"$xf.visitor.hasPermission('gramSupport', 'internalNotes\",\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"hit_lines\":[{\"line\":2,\"text\":\"<xf:css src=\\\"gram_support.less\\\" />\"},{\"line\":9,\"text\":\"<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\"},{\"line\":12,\"text\":\"<div class=\\\"block-row gramSupport-message\\\">\"},{\"line\":13,\"text\":\"<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\"},{\"line\":14,\"text\":\"<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\"},{\"line\":25,\"text\":\"<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\"},{\"line\":38,\"text\":\"<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\"}],\"sample\":\"<xf:title>{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}</xf:title>\\n<xf:css src=\\\"gram_support.less\\\" />\\n\\n<div class=\\\"block\\\">\\n\\t<div class=\\\"block-container\\\">\\n\\t\\t<h2 class=\\\"block-header\\\">{{ $ticket.public_ref }}</h2>\\n\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t<strong>{{ phrase('gram_support_status') }}:</strong> {{ $ticket.status }}\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:foreach loop=\\\"$messages\\\" value=\\\"$message\\\">\\n\\t\\t\\t\\t<div class=\\\"block-row gramSupport-message\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageMeta\\\">{{ date_time($message.message_date) }}</div>\\n\\t\\t\\t\\t\\t<div class=\\\"gramSupport-messageBody\\\">{$message.message}</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</xf:foreach>\\n\\t\\t</div>\\n\\t</div>\\n</div>\\n\\n\\n<xf:if is=\\\"$ticket.Attachments is not empty\\\">\\n\\t<div class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<h3 class=\\\"block-minorHeader\\\">{{ phrase('gram_support_attachments') }}</h3>\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:foreach loop=\\\"$ticket.Attachments\\\" value=\\\"$attachment\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"block-row\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"{{ link('attachments', $attachment) }}\\\">{$attachment.filename}</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</xf:foreach>\\n\\t\\t\\t</div>\\n\\t\\t</div>\\n\\t</div>\\n</xf:if>\\n\\n<xf:if is=\\\"$ticket.status != 'CLOSED'\\\">\\n\\t<xf:form action=\\\"{{ link('support/reply', null, {'ref': $ticket.public_ref}) }}\\\" method=\\\"post\\\" class=\\\"block\\\">\\n\\t\\t<div class=\\\"block-container\\\">\\n\\t\\t\\t<div class=\\\"block-body\\\">\\n\\t\\t\\t\\t<xf:textarearow name=\\\"message\\\" required=\\\"required\\\" rows=\\\"6\\\"\\n\\t\\t\\t\\t\\tlabel=\\\"{{ phrase('gram_support_reply') }}\\\" />\\n\\t\\t\\t</div>\\n\\t\\t\\t<xf:submitrow submit=\\\"{{ phrase('gram_support_send') }}\\\" />\\n\\t\\t</div>\\n\\t</xf:form>\\n</xf:if>\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"<mail:subject>\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n</mail:subject>\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_PUBLIC_UI=[{\"board_url\":\"https://codevipe.ru\",\"name\":\"codevipe\",\"root\":{\"bytes\":47231,\"ok\":true,\"sha256\":\"70fe60d06d2f8b745036c16610537b9d04080eefe5c3b4de80f15814fc277bfb\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29161,\"ok\":true,\"status\":200}},{\"board_url\":\"https://dsmods.ru\",\"name\":\"dsmods\",\"root\":{\"bytes\":176072,\"ok\":true,\"sha256\":\"10e1cd2c905f8b7f671fc613b5d2ae3996b3724f1fd9c7593c4b8bf8b70bb192\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29193,\"ok\":true,\"status\":200}},{\"board_url\":\"https://gamevipe.ru\",\"name\":\"gamevipe\",\"root\":{\"bytes\":77668,\"ok\":true,\"sha256\":\"31a4130a1c74a18dc7d1c46b61ae40a43572f47e81856337838a410167732244\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29178,\"ok\":true,\"status\":200}},{\"board_url\":\"https://hkmods.ru\",\"name\":\"hkmods\",\"root\":{\"bytes\":114631,\"ok\":true,\"sha256\":\"eb33809b6b777183ae1d3fb53c0543e25cc9ee8af4bbf4dd64d2ef989777fadf\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29214,\"ok\":true,\"status\":200}},{\"board_url\":\"https://kingofwolk.ru\",\"name\":\"kingofwolk\",\"root\":{\"bytes\":70149,\"ok\":true,\"sha256\":\"403d4ec72a21719e423df2df8fcdb3e32246746b225f01354a4126deed960331\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":30524,\"ok\":true,\"status\":200}},{\"board_url\":\"https://zakrutim.ru\",\"name\":\"zakrutim\",\"root\":{\"bytes\":149970,\"ok\":true,\"sha256\":\"29d3885312dd61d05d492debc034c969e8d7b70b59974298202e2a6339d559dc\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29384,\"ok\":true,\"status\":200}},{\"board_url\":\"https://newfi.ru\",\"name\":\"newfi-prod\",\"root\":{\"bytes\":25076,\"ok\":false,\"sha256\":\"1bdb3ca1ac68e06f1d2bf95fe3b475b399dbe9ca01f0fe51ab24b15976b9a2ad\",\"status\":503,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-error\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":25084,\"ok\":false,\"status\":503}}]\nGRAM_FOOTER_VERSION_MAP={\"codevipe\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"dsmods\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"gamevipe\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"hkmods\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"kingofwolk\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"newfi-prod\":{\"active\":1,\"default_style_id\":\"4\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"newfi-staging\":{\"active\":1,\"default_style_id\":\"4\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"zakrutim\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"}}\nGRAM_FOOTER_UI_DRIFT=[{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"codevipe\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"dsmods\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"gamevipe\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"hkmods\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"kingofwolk\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"zakrutim\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-error\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"newfi-prod\"}]\nGRAM_FOOTER_COLLECTION_HOLDS=[\"ROOT_HTTP:newfi-prod:503\",\"SUPPORT_HTTP:newfi-prod:503\"]\nGRAM_FOOTER_SOURCE_LAYOUT={\"addon_candidates\":[],\"selected_addon_dir\":null,\"tracked_count\":3,\"tracked_relevant\":[\"release/FIX4_SHA256.txt\",\"release/GRAM_SUPPORT_FIX4_FINAL.zip\"]}\nGRAM_FOOTER_MUTATION_SCOPE=NONE_READ_ONLY\nGRAM_FOOTER_DECISION=HOLD_COLLECTION_INCOMPLETE\n"
|
|
}
|