{"id":24746,"date":"2026-08-27T08:29:53","date_gmt":"2026-08-27T08:29:53","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24746"},"modified":"2026-08-27T08:53:11","modified_gmt":"2026-08-27T08:53:11","slug":"seal-surface-speed-and-wear-check-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/ar\/seal-surface-speed-and-wear-check-calculator\/","title":{"rendered":"Seal Surface Speed and Wear Check Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Seal Surface Speed and Wear Check Calculator<\/strong> is a practical engineering tool designed to calculate seal surface speed and evaluate potential wear under rotary or reciprocating operating conditions. By analyzing parameters such as shaft diameter, rotational speed, pressure, temperature, seal material, and lubrication, users can quickly assess speed limits, PV conditions, and wear risks. The Seal Surface Speed and Wear Check Calculator helps engineers optimize sealing systems, improve reliability, and reduce premature seal failure in hydraulic, pneumatic, and industrial equipment.<\/p>\n\n\n\n<!-- WordPress Custom HTML Block: copy ALL content below -->\n<!-- Do NOT wrap in DOCTYPE\/html\/head\/body. Use Code Editor mode. -->\n<style>\n\/* Seal Surface Speed and Wear Check Calculator \u2014 WordPress-safe scoped styles\n * Every rule is scoped under #seal-speed-wear-calculator.\n * No body\/html\/universal selectors \u2014 must not affect theme header, footer, or other content.\n *\/\n\n.entry-content #seal-speed-wear-calculator,\n.wp-block-html #seal-speed-wear-calculator,\n.elementor-widget-container #seal-speed-wear-calculator,\n#seal-speed-wear-calculator {\n    --sswc-primary: #1e40af;\n    --sswc-primary-light: #3b82f6;\n    --sswc-primary-dark: #1e3a8a;\n    --sswc-success: #16a34a;\n    --sswc-warning: #d97706;\n    --sswc-danger: #dc2626;\n    --sswc-card-bg: #ffffff;\n    --sswc-text: #1e293b;\n    --sswc-text-muted: #64748b;\n    --sswc-border: #e2e8f0;\n    --sswc-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);\n    --sswc-radius: 10px;\n    --sswc-font: 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n\n    isolation: isolate;\n    display: block !important;\n    font-family: var(--sswc-font) !important;\n    font-size: 16px !important;\n    line-height: 1.6 !important;\n    color: var(--sswc-text) !important;\n    box-sizing: border-box !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    background: transparent !important;\n    text-align: left !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    float: none !important;\n    clear: both !important;\n    position: relative !important;\n    z-index: auto !important;\n    letter-spacing: normal !important;\n    text-transform: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator *,\n.entry-content #seal-speed-wear-calculator *::before,\n.entry-content #seal-speed-wear-calculator *::after,\n.wp-block-html #seal-speed-wear-calculator *,\n.wp-block-html #seal-speed-wear-calculator *::before,\n.wp-block-html #seal-speed-wear-calculator *::after,\n.elementor-widget-container #seal-speed-wear-calculator *,\n.elementor-widget-container #seal-speed-wear-calculator *::before,\n.elementor-widget-container #seal-speed-wear-calculator *::after,\n#seal-speed-wear-calculator *,\n#seal-speed-wear-calculator *::before,\n#seal-speed-wear-calculator *::after {\n    box-sizing: border-box !important;\n}\n\n.entry-content #seal-speed-wear-calculator section,\n.entry-content #seal-speed-wear-calculator h2,\n.entry-content #seal-speed-wear-calculator h3,\n.entry-content #seal-speed-wear-calculator p,\n.entry-content #seal-speed-wear-calculator ul,\n.entry-content #seal-speed-wear-calculator li,\n.entry-content #seal-speed-wear-calculator strong,\n.wp-block-html #seal-speed-wear-calculator section,\n.wp-block-html #seal-speed-wear-calculator h2,\n.wp-block-html #seal-speed-wear-calculator h3,\n.wp-block-html #seal-speed-wear-calculator p,\n.wp-block-html #seal-speed-wear-calculator ul,\n.wp-block-html #seal-speed-wear-calculator li,\n.wp-block-html #seal-speed-wear-calculator strong,\n.elementor-widget-container #seal-speed-wear-calculator section,\n.elementor-widget-container #seal-speed-wear-calculator h2,\n.elementor-widget-container #seal-speed-wear-calculator h3,\n.elementor-widget-container #seal-speed-wear-calculator p,\n.elementor-widget-container #seal-speed-wear-calculator ul,\n.elementor-widget-container #seal-speed-wear-calculator li,\n.elementor-widget-container #seal-speed-wear-calculator strong,\n#seal-speed-wear-calculator section,\n#seal-speed-wear-calculator h2,\n#seal-speed-wear-calculator h3,\n#seal-speed-wear-calculator p,\n#seal-speed-wear-calculator ul,\n#seal-speed-wear-calculator li,\n#seal-speed-wear-calculator strong {\n    margin: 0 !important;\n    padding: 0 !important;\n    border: none !important;\n    background: none !important;\n    box-shadow: none !important;\n    float: none !important;\n    font-family: inherit !important;\n    line-height: inherit !important;\n    letter-spacing: normal !important;\n    text-transform: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator section,\n.wp-block-html #seal-speed-wear-calculator section,\n.elementor-widget-container #seal-speed-wear-calculator section,\n#seal-speed-wear-calculator section {\n    width: auto !important;\n    max-width: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-container,\n.wp-block-html #seal-speed-wear-calculator .sswc-container,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-container,\n#seal-speed-wear-calculator .sswc-container {\n    max-width: 1100px !important;\n    margin: 0 auto !important;\n    padding: 0 !important;\n    width: 100% !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-layout,\n.wp-block-html #seal-speed-wear-calculator .sswc-layout,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-layout,\n#seal-speed-wear-calculator .sswc-layout {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 1.25rem !important;\n    align-items: stretch !important;\n    margin: 0 !important;\n    width: 100% !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-card,\n.wp-block-html #seal-speed-wear-calculator .sswc-card,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-card,\n#seal-speed-wear-calculator .sswc-card {\n    background: var(--sswc-card-bg) !important;\n    border-radius: var(--sswc-radius) !important;\n    box-shadow: var(--sswc-shadow) !important;\n    padding: 1.5rem !important;\n    margin: 0 !important;\n    border: 1px solid var(--sswc-border) !important;\n    border-top: 3px solid var(--sswc-primary) !important;\n    width: 100% !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-card h2,\n.wp-block-html #seal-speed-wear-calculator .sswc-card h2,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-card h2,\n#seal-speed-wear-calculator .sswc-card h2 {\n    font-size: 1.25rem !important;\n    font-weight: 600 !important;\n    color: var(--sswc-primary-dark) !important;\n    margin: 0 0 1rem 0 !important;\n    padding: 0 0 0.5rem 0 !important;\n    border: none !important;\n    border-bottom: 2px solid var(--sswc-primary-light) !important;\n    line-height: 1.3 !important;\n    background: transparent !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-subsection-title,\n.wp-block-html #seal-speed-wear-calculator .sswc-subsection-title,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-subsection-title,\n#seal-speed-wear-calculator .sswc-subsection-title {\n    font-size: 0.9rem !important;\n    font-weight: 600 !important;\n    color: var(--sswc-text) !important;\n    margin: 1.25rem 0 0.75rem 0 !important;\n    padding: 0 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.04em !important;\n    border: none !important;\n    background: transparent !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-section > .sswc-subsection-title:first-of-type,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-section > .sswc-subsection-title:first-of-type,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-section > .sswc-subsection-title:first-of-type,\n#seal-speed-wear-calculator .sswc-input-section > .sswc-subsection-title:first-of-type {\n    margin-top: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-grid,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-grid,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-grid,\n#seal-speed-wear-calculator .sswc-input-grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 0 1rem !important;\n    width: 100% !important;\n}\n\n@media (max-width: 640px) {\n    .entry-content #seal-speed-wear-calculator .sswc-input-grid,\n    .wp-block-html #seal-speed-wear-calculator .sswc-input-grid,\n    .elementor-widget-container #seal-speed-wear-calculator .sswc-input-grid,\n    #seal-speed-wear-calculator .sswc-input-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-grid .sswc-form-group,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-grid .sswc-form-group,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-grid .sswc-form-group,\n#seal-speed-wear-calculator .sswc-input-grid .sswc-form-group {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.35rem !important;\n    margin: 0 0 1rem 0 !important;\n    padding: 0 !important;\n    width: auto !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-form-group.sswc-full-width,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group.sswc-full-width,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group.sswc-full-width,\n#seal-speed-wear-calculator .sswc-form-group.sswc-full-width {\n    grid-column: 1 \/ -1 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-form-group label,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group label,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group label,\n#seal-speed-wear-calculator .sswc-form-group label {\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.35rem !important;\n    font-size: 0.875rem !important;\n    font-weight: 600 !important;\n    color: var(--sswc-text) !important;\n    margin: 0 0 0.4rem 0 !important;\n    padding: 0 !important;\n    width: auto !important;\n    float: none !important;\n    line-height: 1.4 !important;\n    cursor: default !important;\n    background: transparent !important;\n    border: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-form-group.sswc-optional label::after,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group.sswc-optional label::after,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group.sswc-optional label::after,\n#seal-speed-wear-calculator .sswc-form-group.sswc-optional label::after {\n    content: ' (optional)' !important;\n    font-weight: 400 !important;\n    color: var(--sswc-text-muted) !important;\n    font-size: 0.85em !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit,\n#seal-speed-wear-calculator .sswc-input-with-unit {\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.5rem !important;\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit input,\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit select,\n.entry-content #seal-speed-wear-calculator .sswc-form-group > select,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit input,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit select,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group > select,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit input,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit select,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group > select,\n#seal-speed-wear-calculator .sswc-input-with-unit input,\n#seal-speed-wear-calculator .sswc-input-with-unit select,\n#seal-speed-wear-calculator .sswc-form-group > select {\n    flex: 1 1 0% !important;\n    min-width: 0 !important;\n    width: auto !important;\n    max-width: 100% !important;\n    padding: 0.6rem 0.75rem !important;\n    border: 1.5px solid var(--sswc-border) !important;\n    border-radius: 6px !important;\n    font-size: 0.95rem !important;\n    font-family: inherit !important;\n    font-weight: 400 !important;\n    background: #fff !important;\n    color: var(--sswc-text) !important;\n    line-height: normal !important;\n    height: auto !important;\n    min-height: 0 !important;\n    margin: 0 !important;\n    box-shadow: none !important;\n    appearance: auto !important;\n    -webkit-appearance: auto !important;\n    display: block !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-form-group > select,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group > select,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group > select,\n#seal-speed-wear-calculator .sswc-form-group > select {\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit input:focus,\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit select:focus,\n.entry-content #seal-speed-wear-calculator .sswc-form-group > select:focus,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit input:focus,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit select:focus,\n.wp-block-html #seal-speed-wear-calculator .sswc-form-group > select:focus,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit input:focus,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit select:focus,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-form-group > select:focus,\n#seal-speed-wear-calculator .sswc-input-with-unit input:focus,\n#seal-speed-wear-calculator .sswc-input-with-unit select:focus,\n#seal-speed-wear-calculator .sswc-form-group > select:focus {\n    outline: none !important;\n    border-color: var(--sswc-primary-light) !important;\n    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-input-with-unit input.sswc-error,\n.wp-block-html #seal-speed-wear-calculator .sswc-input-with-unit input.sswc-error,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-input-with-unit input.sswc-error,\n#seal-speed-wear-calculator .sswc-input-with-unit input.sswc-error {\n    border-color: var(--sswc-danger) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-unit-label,\n.wp-block-html #seal-speed-wear-calculator .sswc-unit-label,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-unit-label,\n#seal-speed-wear-calculator .sswc-unit-label {\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    padding: 0 0.65rem !important;\n    background: #f1f5f9 !important;\n    border: 1.5px solid var(--sswc-border) !important;\n    border-radius: 6px !important;\n    font-size: 0.8rem !important;\n    color: var(--sswc-text-muted) !important;\n    white-space: nowrap !important;\n    min-width: 3rem !important;\n    flex: 0 0 auto !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-unit-toggle,\n.wp-block-html #seal-speed-wear-calculator .sswc-unit-toggle,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-unit-toggle,\n#seal-speed-wear-calculator .sswc-unit-toggle {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 0.75rem !important;\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-radio-label,\n.wp-block-html #seal-speed-wear-calculator .sswc-radio-label,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-radio-label,\n#seal-speed-wear-calculator .sswc-radio-label {\n    display: inline-flex !important;\n    align-items: center !important;\n    gap: 0.5rem !important;\n    font-size: 0.9rem !important;\n    font-weight: 400 !important;\n    cursor: pointer !important;\n    margin: 0 !important;\n    padding: 0.5rem 1rem !important;\n    width: auto !important;\n    color: var(--sswc-text) !important;\n    border: 2px solid var(--sswc-border) !important;\n    border-radius: 8px !important;\n    background: #fff !important;\n    float: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-radio-label:has(input:checked),\n.wp-block-html #seal-speed-wear-calculator .sswc-radio-label:has(input:checked),\n.elementor-widget-container #seal-speed-wear-calculator .sswc-radio-label:has(input:checked),\n#seal-speed-wear-calculator .sswc-radio-label:has(input:checked) {\n    border-color: var(--sswc-primary) !important;\n    background: #eff6ff !important;\n    color: var(--sswc-primary-dark) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-radio-label input,\n.wp-block-html #seal-speed-wear-calculator .sswc-radio-label input,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-radio-label input,\n#seal-speed-wear-calculator .sswc-radio-label input {\n    accent-color: var(--sswc-primary) !important;\n    margin: 0 !important;\n    width: auto !important;\n    height: auto !important;\n    padding: 0 !important;\n    border: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-tooltip,\n.wp-block-html #seal-speed-wear-calculator .sswc-tooltip,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-tooltip,\n#seal-speed-wear-calculator .sswc-tooltip {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 16px !important;\n    height: 16px !important;\n    border-radius: 50% !important;\n    background: var(--sswc-text-muted) !important;\n    color: #fff !important;\n    font-size: 0.65rem !important;\n    font-weight: 700 !important;\n    cursor: help !important;\n    position: relative !important;\n    flex-shrink: 0 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-tooltip::after,\n.wp-block-html #seal-speed-wear-calculator .sswc-tooltip::after,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-tooltip::after,\n#seal-speed-wear-calculator .sswc-tooltip::after {\n    content: attr(data-tip) !important;\n    position: absolute !important;\n    bottom: calc(100% + 6px) !important;\n    left: 50% !important;\n    transform: translateX(-50%) !important;\n    background: var(--sswc-text) !important;\n    color: #fff !important;\n    padding: 0.5rem 0.75rem !important;\n    border-radius: 6px !important;\n    font-size: 0.75rem !important;\n    font-weight: 400 !important;\n    white-space: normal !important;\n    width: max-content !important;\n    max-width: 260px !important;\n    opacity: 0 !important;\n    visibility: hidden !important;\n    transition: opacity 0.2s !important;\n    z-index: 100 !important;\n    pointer-events: none !important;\n    line-height: 1.4 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-tooltip:hover::after,\n.wp-block-html #seal-speed-wear-calculator .sswc-tooltip:hover::after,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-tooltip:hover::after,\n#seal-speed-wear-calculator .sswc-tooltip:hover::after {\n    opacity: 1 !important;\n    visibility: visible !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-error-msg,\n.wp-block-html #seal-speed-wear-calculator .sswc-error-msg,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-error-msg,\n#seal-speed-wear-calculator .sswc-error-msg {\n    display: block !important;\n    font-size: 0.78rem !important;\n    color: var(--sswc-danger) !important;\n    min-height: 1rem !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-range-hint,\n.wp-block-html #seal-speed-wear-calculator .sswc-range-hint,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-range-hint,\n#seal-speed-wear-calculator .sswc-range-hint {\n    font-size: 0.78rem !important;\n    color: var(--sswc-text-muted) !important;\n    margin: 0.25rem 0 0 0 !important;\n    padding: 0 !important;\n    font-style: italic !important;\n}\n\n#seal-speed-wear-calculator .sswc-js-store,\n#seal-speed-wear-calculator .sswc-js-chunk {\n    display: none !important;\n    visibility: hidden !important;\n    width: 0 !important;\n    height: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n    pointer-events: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-hidden,\n.entry-content #seal-speed-wear-calculator [data-sswc-hidden=\"true\"],\n.wp-block-html #seal-speed-wear-calculator .sswc-hidden,\n.wp-block-html #seal-speed-wear-calculator [data-sswc-hidden=\"true\"],\n.elementor-widget-container #seal-speed-wear-calculator .sswc-hidden,\n.elementor-widget-container #seal-speed-wear-calculator [data-sswc-hidden=\"true\"],\n#seal-speed-wear-calculator .sswc-hidden,\n#seal-speed-wear-calculator [data-sswc-hidden=\"true\"] {\n    display: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-warnings,\n.wp-block-html #seal-speed-wear-calculator .sswc-warnings,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-warnings,\n#seal-speed-wear-calculator .sswc-warnings {\n    margin-top: 1rem !important;\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-warning-item,\n.wp-block-html #seal-speed-wear-calculator .sswc-warning-item,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-warning-item,\n#seal-speed-wear-calculator .sswc-warning-item {\n    padding: 0.65rem 0.85rem !important;\n    background: #fef3c7 !important;\n    border: none !important;\n    border-left: 4px solid var(--sswc-warning) !important;\n    border-radius: 4px !important;\n    font-size: 0.85rem !important;\n    color: #92400e !important;\n    margin: 0 0 0.5rem 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-warning-item.sswc-warning-danger,\n.wp-block-html #seal-speed-wear-calculator .sswc-warning-item.sswc-warning-danger,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-warning-item.sswc-warning-danger,\n#seal-speed-wear-calculator .sswc-warning-item.sswc-warning-danger {\n    background: #fee2e2 !important;\n    border-left-color: var(--sswc-danger) !important;\n    color: #991b1b !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-btn-row,\n.wp-block-html #seal-speed-wear-calculator .sswc-btn-row,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-btn-row,\n#seal-speed-wear-calculator .sswc-btn-row {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 0.75rem !important;\n    justify-content: center !important;\n    align-items: center !important;\n    margin-top: 1.25rem !important;\n    padding-top: 1rem !important;\n    border-top: 1px solid var(--sswc-border) !important;\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator button,\n.wp-block-html #seal-speed-wear-calculator button,\n.elementor-widget-container #seal-speed-wear-calculator button,\n#seal-speed-wear-calculator button {\n    display: inline-block !important;\n    padding: 0.75rem 1.5rem !important;\n    border: none !important;\n    border-radius: 8px !important;\n    font-size: 0.95rem !important;\n    font-weight: 600 !important;\n    font-family: inherit !important;\n    line-height: normal !important;\n    cursor: pointer !important;\n    transition: background 0.2s, transform 0.2s, box-shadow 0.2s !important;\n    text-align: center !important;\n    text-decoration: none !important;\n    text-transform: none !important;\n    letter-spacing: normal !important;\n    margin: 0 !important;\n    width: auto !important;\n    min-width: 160px !important;\n    float: none !important;\n    box-shadow: none !important;\n    appearance: none !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-btn-primary,\n.wp-block-html #seal-speed-wear-calculator .sswc-btn-primary,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-btn-primary,\n#seal-speed-wear-calculator .sswc-btn-primary {\n    background: var(--sswc-primary) !important;\n    color: #fff !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-btn-primary:hover,\n.wp-block-html #seal-speed-wear-calculator .sswc-btn-primary:hover,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-btn-primary:hover,\n#seal-speed-wear-calculator .sswc-btn-primary:hover {\n    background: var(--sswc-primary-dark) !important;\n    color: #fff !important;\n    transform: translateY(-1px) !important;\n    box-shadow: 0 4px 12px rgba(30, 64, 175, 0.3) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner,\n#seal-speed-wear-calculator .sswc-status-banner {\n    display: flex !important;\n    align-items: center !important;\n    gap: 1rem !important;\n    padding: 1rem 1.25rem !important;\n    border-radius: 8px !important;\n    margin-bottom: 1.25rem !important;\n    background: #f1f5f9 !important;\n    border: none !important;\n    border-left: 4px solid var(--sswc-text-muted) !important;\n    width: 100% !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner.sswc-status-acceptable,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner.sswc-status-acceptable,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner.sswc-status-acceptable,\n#seal-speed-wear-calculator .sswc-status-banner.sswc-status-acceptable {\n    background: #dcfce7 !important;\n    border-left-color: var(--sswc-success) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner.sswc-status-caution,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner.sswc-status-caution,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner.sswc-status-caution,\n#seal-speed-wear-calculator .sswc-status-banner.sswc-status-caution {\n    background: #fef3c7 !important;\n    border-left-color: var(--sswc-warning) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner.sswc-status-review,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner.sswc-status-review,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner.sswc-status-review,\n#seal-speed-wear-calculator .sswc-status-banner.sswc-status-review {\n    background: #fee2e2 !important;\n    border-left-color: var(--sswc-danger) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-icon,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-icon,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-icon,\n#seal-speed-wear-calculator .sswc-status-icon {\n    font-size: 1.75rem !important;\n    line-height: 1 !important;\n    font-weight: 700 !important;\n    min-width: 1.75rem !important;\n    text-align: center !important;\n    flex-shrink: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner strong,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner strong,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner strong,\n#seal-speed-wear-calculator .sswc-status-banner strong {\n    display: block !important;\n    font-size: 1rem !important;\n    font-weight: 600 !important;\n    color: var(--sswc-text) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-status-banner p,\n.wp-block-html #seal-speed-wear-calculator .sswc-status-banner p,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-status-banner p,\n#seal-speed-wear-calculator .sswc-status-banner p {\n    font-size: 0.85rem !important;\n    color: var(--sswc-text-muted) !important;\n    margin: 0.15rem 0 0 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-results-grid,\n.wp-block-html #seal-speed-wear-calculator .sswc-results-grid,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-results-grid,\n#seal-speed-wear-calculator .sswc-results-grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 0.75rem !important;\n    width: 100% !important;\n}\n\n@media (max-width: 520px) {\n    .entry-content #seal-speed-wear-calculator .sswc-results-grid,\n    .wp-block-html #seal-speed-wear-calculator .sswc-results-grid,\n    .elementor-widget-container #seal-speed-wear-calculator .sswc-results-grid,\n    #seal-speed-wear-calculator .sswc-results-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-item,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-item,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-item,\n#seal-speed-wear-calculator .sswc-result-item {\n    padding: 0.85rem 1rem !important;\n    background: #f8fafc !important;\n    border-radius: 8px !important;\n    border: 1px solid var(--sswc-border) !important;\n    margin: 0 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-item.sswc-highlight,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-item.sswc-highlight,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-item.sswc-highlight,\n#seal-speed-wear-calculator .sswc-result-item.sswc-highlight {\n    grid-column: 1 \/ -1 !important;\n    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%) !important;\n    border-color: var(--sswc-primary-light) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-label,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-label,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-label,\n#seal-speed-wear-calculator .sswc-result-label {\n    display: block !important;\n    font-size: 0.78rem !important;\n    color: var(--sswc-text-muted) !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.03em !important;\n    margin-bottom: 0.25rem !important;\n    font-weight: 400 !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-value,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-value,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-value,\n#seal-speed-wear-calculator .sswc-result-value {\n    display: block !important;\n    font-size: 1.2rem !important;\n    font-weight: 700 !important;\n    color: var(--sswc-primary-dark) !important;\n    font-variant-numeric: tabular-nums !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-item.sswc-highlight .sswc-result-value,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-item.sswc-highlight .sswc-result-value,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-item.sswc-highlight .sswc-result-value,\n#seal-speed-wear-calculator .sswc-result-item.sswc-highlight .sswc-result-value {\n    font-size: 1.5rem !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-value.sswc-risk-low,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-value.sswc-risk-low,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-value.sswc-risk-low,\n#seal-speed-wear-calculator .sswc-result-value.sswc-risk-low {\n    color: var(--sswc-success) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-value.sswc-risk-moderate,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-value.sswc-risk-moderate,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-value.sswc-risk-moderate,\n#seal-speed-wear-calculator .sswc-result-value.sswc-risk-moderate {\n    color: var(--sswc-warning) !important;\n}\n\n.entry-content #seal-speed-wear-calculator .sswc-result-value.sswc-risk-high,\n.wp-block-html #seal-speed-wear-calculator .sswc-result-value.sswc-risk-high,\n.elementor-widget-container #seal-speed-wear-calculator .sswc-result-value.sswc-risk-high,\n#seal-speed-wear-calculator .sswc-result-value.sswc-risk-high {\n    color: var(--sswc-danger) !important;\n}\n\n<\/style>\n\n    <div id=\"seal-speed-wear-calculator\"><div class=\"sswc-js-store\" aria-hidden=\"true\" hidden><span class=\"sswc-js-chunk\">LyoqDQogKiBTZWFsIFN1cmZhY2UgU3BlZWQgYW5kIFdlYXIgQ2hlY2sgQ2FsY3VsYXRvcg0KICogU2NvcGVkIGZvciBXb3JkUHJlc3MgZW1iZWQg4oCUIGFsbCBxdWVyaWVzIGxpbWl0ZWQgdG8gI3NlYWwtc3BlZWQtd2Vhci1jYWxjdWxhdG9yDQogKi8NCg0KKGZ1bmN0aW9uICgpIHsNCiAgICAndXNlIHN0cmljdCc7DQoNCiAgICBjb25zdCBST09UX0lEID0gJ3NlYWwtc3BlZWQtd2Vhci1jYWxjdWxhdG9yJzsNCiAgICBjb25zdCBNTV9UT19JTkNIID0gMSAvIDI1LjQ7DQogICAgY29uc3QgSU5DSF9UT19NTSA9IDI1LjQ7DQogICAgY29uc3QgTV9UT19GVCA9IDMuMjgwODQ7DQogICAgY29uc3QgRlRfVE9fTSA9IDEgLyBNX1RPX0ZUOw0KICAgIGNvbnN0IE1QU19UT19GVFBTID0gTV9UT19GVDsNCiAgICBjb25zdCBNUFNfVE9fRlRQTSA9IE1fVE9fRlQgKiA2MDsNCiAgICBjb25zdCBNUEFfVE9fUFNJID0gMTQ1LjAzODsNCiAgICBjb25zdCBNUEFfVE9fQkFSID0gMTA7DQogICAgY29uc3QgUFNJX1RPX01QQSA9IDEgLyBNUEFfVE9fUFNJOw0KICAgIGNvbnN0IEJBUl9UT19NUEEgPSAwLjE7DQogICAgY29uc3QgTl9UT19MQkYgPSAwLjIyNDgwOTsNCiAgICBjb25zdCBMQkZfVE9fTiA9IDEgLyBOX1RPX0xCRjsNCg0KICAgIGNvbnN0IE1BVEVSSUFMX0RBVEEgPSB7DQogICAgICAgIE5CUjogeyBtYXhTcGVlZDogNi4wLCBtYXhUZW1wOiAxMDAsIHB2TGltaXQ6IDAuNSwgd2VhckZhY3RvcjogMS4wIH0sDQogICAgICAgIEZLTTogeyBtYXhTcGVlZDogMTAuMCwgbWF4VGVtcDogMjAwLCBwdkxpbWl0OiAxLjAsIHdlYXJGYWN0b3I6IDAuNyB9LA0KICAgICAgICBFUERNOiB7IG1heFNwZWVkOiA4LjAsIG1heFRlbXA6IDE1MCwgcHZMaW1pdDogMC40LCB3ZWFyRmFjdG9yOiAxLjEgfSwNCiAgICAgICAgSE5CUjogeyBtYXhTcGVlZDogOC4wLCBtYXhUZW1wOiAxNTAsIHB2TGltaXQ6IDAuOCwgd2VhckZhY3RvcjogMC43NSB9LA0KICAgICAgICBQVEZFOiB7IG1heFNwZWVkOiAxNS4wLCBtYXhUZW1wOiAyNjAsIHB2TGltaXQ6IDIuNSwgd2VhckZhY3RvcjogMC41IH0sDQogICAgICAgIFBvbHl1cmV0aGFuZTogeyBtYXhTcGVlZDogOC4wLCBtYXhUZW1wOiA4MCwgcHZMaW1pdDogMC44LCB3ZWFyRmFjdG9yOiAxLjAgfSwNCiAgICAgICAgU2lsaWNvbmU6IHsgbWF4U3BlZWQ6IDQuMCwgbWF4VGVtcDogMjAwLCBwdkxpbWl0OiAwLjMsIHdlYXJGYWN0b3I6IDEuMyB9LA0KICAgICAgICBDdXN0b206IHsgbWF4U3BlZWQ6IDEwLjAsIG1heFRlbXA6IDE1MCwgcHZMaW1pdDogMS4wLCB3ZWFyRmFjdG9yOiAxLjAgfQ0KICAgIH07DQoNCiAgICBjb25zdCBMVUJFX0ZBQ1RPUlMgPSB7DQogICAgICAgIGV4Y2VsbGVudDogMC42LA0KICAgICAgICBnb29kOiAwLjgsDQogICAgICAgIGxpbWl0ZWQ6IDEuMCwNCiAgICAgICAgcG9vcjogMS4zLA0KICAgICAgICBkcnk6IDEuOA0KICAgIH07DQoNCiAgICBsZXQgcm9vdCA9IG51bGw7DQogICAgbGV0IHVuaXRTeXN0ZW0gPSAnbWV0cmljJzsNCiAgICBsZXQgYWxsb3dTcGVlZE1hbnVhbCA9IGZhbHNlOw0KICAgIGxldCBhbGxvd1BWTWFudWFsID0gZmFsc2U7DQogICAgbGV0IGVscyA9IHt9Ow0KDQogICAgZnVuY3Rpb24gJChpZCkgew0KICAgICAgICByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKSB8fA0KICAgICAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zc3djPSInICsgaWQgKyAnIl0nKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzZXRWaXNpYmxlKG5vZGVzLCBzaG93KSB7DQogICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7DQogICAgICAgICAgICBlbC5jbGFzc0xpc3QudG9nZ2xlKCdzc3djLWhpZGRlbicsICFzaG93KTsNCiAgICAgICAgICAgIGlmIChzaG93KSB7DQogICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNzd2MtaGlkZGVuJyk7DQogICAgICAgICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICcnOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3N3Yy1oaWRkZW4nLCAndHJ1ZScpOw0KICAgICAgICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNldFRleHQoZWwsIHRleHQpIHsNCiAgICAgICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9IHRleHQ7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0Q2xhc3MoZWwsIGNsYXNzTmFtZSkgew0KICAgICAgICBpZiAoZWwpIGVsLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBiaW5kRWxlbWVudHMoKSB7DQogICAgICAgIGVscyA9IHsNCiAgICAgICAgICAgIHVuaXRSYWRpb3M6IHJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0ic3N3Yy11bml0U3lzdGVtIl0nKSwNCiAgICAgICAgICAgIG1vdGlvblR5cGU6ICQoJ3Nzd2MtbW90aW9uVHlwZScpLA0KICAgICAgICAgICAgc2VhbFR5cGU6ICQoJ3Nzd2Mtc2VhbFR5cGUnKSwNCiAgICAgICAgICAgIGRpYW1ldGVyOiAkKCdzc3djLWRpYW1ldGVyJyksDQogICAgICAgICAgICBycG06ICQoJ3Nzd2MtcnBtJyksDQogICAgICAgICAgICBzdHJva2U6ICQoJ3Nzd2Mtc3Ryb2tlJyksDQogICAgICAgICAgICBmcmVxdWVuY3k6ICQoJ3Nzd2MtZnJlcXVlbmN5JyksDQogICAgICAgICAgICBmcmVxdWVuY3lVbml0OiAkKCdzc3djLWZyZXF1ZW5jeVVuaXQnKSwNCiAgICAgICAgICAgIG9zY0FuZ2xlOiAkKCdzc3djLW9zY0FuZ2xlJyksDQogICAgICAgICAgICBjdXN0b21TcGVlZDogJCgnc3N3Yy1jdXN0b21TcGVlZCcpLA0KICAgICAgICAgICAgcHJlc3N1cmU6ICQoJ3Nzd2MtcHJlc3N1cmUnKSwNCiAgICAgICAgICAgIHByZXNzdXJlVW5pdDogJCgnc3N3Yy1wcmVzc3VyZVVuaXQnKSwNCiAgICAgICAgICAgIHRlbXBlcmF0dXJlOiAkKCdzc3djLXRlbXBlcmF0dXJlJyksDQogICAgICAgICAgICBtYXRlcmlhbDogJCgnc3N3Yy1tYXRlcmlhbCcpLA0KICAgICAgICAgICAgbHVicmljYXRpb246ICQoJ3Nzd2MtbHVicmljYXRpb24nKSwNCiAgICAgICAgICAgIHN1cmZhY2VGaW5pc2g6ICQoJ3Nzd2Mtc3VyZmFjZUZpbmlzaCcpLA0KICAgICAgICAgICAgZmluaXNoVW5pdDogJCgnc3N3Yy1maW5pc2hVbml0JyksDQogICAgICAgICAgICBhbGxvd1NwZWVkOiAkKCdzc3djLWFsbG93U3BlZWQnKSwNCiAgICAgICAgICAgIGFsbG93UFY6ICQoJ3Nzd2MtYWxsb3dQVicpLA0KICAgICAgICAgICAgZnJpY3Rpb25Db2VmZjogJCgnc3N3Yy1mcmljdGlvbkNvZWZmJyksDQogICAgICAgICAgICBub3JtYWxGb3JjZTogJCgnc3N3Yy1ub3JtYWxGb3JjZScpLA0KICAgICAgICAgICAgb3BlcmF0aW5nVGltZTogJCgnc3N3Yy1vcGVyYXRpbmdUaW1lJyksDQogICAgICAgICAgICB0b3RhbEN5Y2xlczogJCgnc3N3Yy10b3RhbEN5Y2xlcycpLA0KICAgICAgICAgICAgY2FsY3VsYXRlQnRuOiAkKCdzc3djLWNhbGN1bGF0ZUJ0bicpLA0KICAgICAgICAgICAgd2FybmluZ3M6ICQoJ3Nzd2Mtd2FybmluZ3MnKSwNCiAgICAgICAgICAgIG1hdGVyaWFsU3BlZWRIaW50OiAkKCdzc3djLW1hdGVyaWFsU3BlZWRIaW50JyksDQogICAgICAgICAgICBkaWFtZXRlckVycm9yOiAkKCdzc3djLWRpYW1ldGVyRXJyb3InKSwNCiAgICAgICAgICAgIHJwbUVycm9yOiAkKCdzc3djLXJwbUVycm9yJyksDQogICAgICAgICAgICBzdHJva2VFcnJvcjogJCgnc3N3Yy1zdHJva2VFcnJvcicpLA0KICAgICAgICAgICAgZnJlcXVlbmN5RXJyb3I6ICQoJ3Nzd2MtZnJlcXVlbmN5RXJyb3InKSwNCiAgICAgICAgICAgIGFsbG93U3BlZWRFcnJvcjogJCgnc3N3Yy1hbGxvd1NwZWVkRXJyb3InKSwNCiAgICAgICAgICAgIGFsbG93UFZFcnJvcjogJCgnc3N3Yy1hbGxvd1BWRXJyb3InKSwNCiAgICAgICAgICAgIHJlc3VsdHNTZWN0aW9uOiAkKCdzc3djLXJlc3VsdHNTZWN0aW9uJyksDQogICAgICAgICAgICBzdGF0dXNCYW5uZXI6ICQoJ3Nzd2Mtc3RhdHVzQmFubmVyJyksDQogICAgICAgICAgICBzdGF0dXNJY29uOiAkKCdzc3djLXN0YXR1c0ljb24nKSwNCiAgICAgICAgICAgIHN0YXR1c1RpdGxlOiAkKCdzc3djLXN0YXR1c1RpdGxlJyksDQogICAgICAgICAgICBzdGF0dXNTdWI6ICQoJ3Nzd2Mtc3RhdHVzU3ViJyksDQogICAgICAgICAgICByZXN1bHRTdXJmYWNlU3BlZWQ6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXN1cmZhY2Utc3BlZWQnKSwNCiAgICAgICAgICAgIHJlc3VsdEF2Z1NwZWVkOiByb290LnF1ZXJ5U2VsZWN0b3IoJy5zc3djLW91dC1hdmctc3BlZWQnKSwNCiAgICAgICAgICAgIHJlc3VsdFBlYWtTcGVlZDogcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3N3Yy1vdXQtcGVhay1zcGVlZCcpLA0KICAgICAgICAgICAgcmVzdWx0QWxsb3dTcGVlZDogcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3N3Yy1vdXQtYWxsb3ctc3Bl<\/span><span class=\"sswc-js-chunk\">ZWQnKSwNCiAgICAgICAgICAgIHJlc3VsdFNwZWVkVXRpbDogcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3N3Yy1vdXQtc3BlZWQtdXRpbCcpLA0KICAgICAgICAgICAgcmVzdWx0UFY6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXB2JyksDQogICAgICAgICAgICByZXN1bHRQVlV0aWw6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXB2LXV0aWwnKSwNCiAgICAgICAgICAgIHJlc3VsdERpc3RhbmNlOiByb290LnF1ZXJ5U2VsZWN0b3IoJy5zc3djLW91dC1kaXN0YW5jZScpLA0KICAgICAgICAgICAgcmVzdWx0RnJpY3Rpb25Qb3dlcjogcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3N3Yy1vdXQtZnJpY3Rpb24tcG93ZXInKSwNCiAgICAgICAgICAgIHJlc3VsdFdlYXJJbmRleDogcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3N3Yy1vdXQtd2Vhci1pbmRleCcpLA0KICAgICAgICAgICAgcmVzdWx0V2VhclJpc2s6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXdlYXItcmlzaycpLA0KICAgICAgICAgICAgcmVzdWx0VGhlcm1hbFJpc2s6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXRoZXJtYWwtcmlzaycpLA0KICAgICAgICAgICAgcmVzdWx0U2VydmljZUxpZmU6IHJvb3QucXVlcnlTZWxlY3RvcignLnNzd2Mtb3V0LXNlcnZpY2UtbGlmZScpLA0KICAgICAgICAgICAgcmVzdWx0T3BlcmF0aW5nU3RhdHVzOiByb290LnF1ZXJ5U2VsZWN0b3IoJy5zc3djLW91dC1vcGVyYXRpbmctc3RhdHVzJykNCiAgICAgICAgfTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBwYXJzZU51bSh2YWx1ZSkgew0KICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsOw0KICAgICAgICBjb25zdCBuID0gcGFyc2VGbG9hdCh2YWx1ZSk7DQogICAgICAgIHJldHVybiBpc05hTihuKSA\/IG51bGwgOiBuOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldExlbmd0aFVuaXQoKSB7DQogICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/ICdtbScgOiAnaW4nOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldFNwZWVkVW5pdCgpIHsNCiAgICAgICAgcmV0dXJuIHVuaXRTeXN0ZW0gPT09ICdtZXRyaWMnID8gJ20vcycgOiAnZnQvbWluJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRUZW1wVW5pdCgpIHsNCiAgICAgICAgcmV0dXJuIHVuaXRTeXN0ZW0gPT09ICdtZXRyaWMnID8gJ1x1MDBCMEMnIDogJ1x1MDBCMEYnOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldEZvcmNlVW5pdCgpIHsNCiAgICAgICAgcmV0dXJuIHVuaXRTeXN0ZW0gPT09ICdtZXRyaWMnID8gJ04nIDogJ2xiZic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0UFZVbml0KCkgew0KICAgICAgICByZXR1cm4gdW5pdFN5c3RlbSA9PT0gJ21ldHJpYycgPyAnTVBhXHUwMEI3bS9zJyA6ICdwc2lcdTAwQjdmdC9taW4nOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljTGVuZ3RoKHZhbHVlKSB7DQogICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJyA\/IHZhbHVlIDogdmFsdWUgKiBJTkNIX1RPX01NOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNMZW5ndGgodmFsdWVNbSkgew0KICAgICAgICByZXR1cm4gdW5pdFN5c3RlbSA9PT0gJ21ldHJpYycgPyB2YWx1ZU1tIDogdmFsdWVNbSAqIE1NX1RPX0lOQ0g7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdG9NZXRyaWNTcGVlZCh2YWx1ZSkgew0KICAgICAgICBpZiAodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycpIHJldHVybiB2YWx1ZTsNCiAgICAgICAgcmV0dXJuIHZhbHVlICogRlRfVE9fTSAvIDYwOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNTcGVlZCh2YWx1ZU1wcykgew0KICAgICAgICBpZiAodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycpIHJldHVybiB2YWx1ZU1wczsNCiAgICAgICAgcmV0dXJuIHZhbHVlTXBzICogTVBTX1RPX0ZUUE07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdG9NZXRyaWNQcmVzc3VyZSh2YWx1ZSwgdW5pdCkgew0KICAgICAgICBpZiAodW5pdCA9PT0gJ01QYScpIHJldHVybiB2YWx1ZTsNCiAgICAgICAgaWYgKHVuaXQgPT09ICdiYXInKSByZXR1cm4gdmFsdWUgKiBCQVJfVE9fTVBBOw0KICAgICAgICByZXR1cm4gdmFsdWUgKiBQU0lfVE9fTVBBOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNQcmVzc3VyZSh2YWx1ZU1wYSwgdW5pdCkgew0KICAgICAgICBpZiAodW5pdCA9PT0gJ01QYScpIHJldHVybiB2YWx1ZU1wYTsNCiAgICAgICAgaWYgKHVuaXQgPT09ICdiYXInKSByZXR1cm4gdmFsdWVNcGEgLyBCQVJfVE9fTVBBOw0KICAgICAgICByZXR1cm4gdmFsdWVNcGEgKiBNUEFfVE9fUFNJOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljVGVtcCh2YWx1ZSkgew0KICAgICAgICBpZiAodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycpIHJldHVybiB2YWx1ZTsNCiAgICAgICAgcmV0dXJuICh2YWx1ZSAtIDMyKSAqIDUgLyA5Ow0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljRm9yY2UodmFsdWUpIHsNCiAgICAgICAgcmV0dXJuIHVuaXRTeXN0ZW0gPT09ICdtZXRyaWMnID8gdmFsdWUgOiB2YWx1ZSAqIExCRl9UT19OOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljRmluaXNoKHZhbHVlLCB1bml0KSB7DQogICAgICAgIGlmICh1bml0ID09PSAndW0nKSByZXR1cm4gdmFsdWU7DQogICAgICAgIHJldHVybiB2YWx1ZSAqIDAuMDI1NDsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmb3JtYXRTcGVlZCh2YWx1ZU1wcykgew0KICAgICAgICBpZiAodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZU1wcy50b0ZpeGVkKDMpICsgJyBtL3MgKCcgKw0KICAgICAgICAgICAgICAgICh2YWx1ZU1wcyAqIE1QU19UT19GVFBTKS50b0ZpeGVkKDIpICsgJyBmdC9zKSc7DQogICAgICAgIH0NCiAgICAgICAgY29uc3QgZnRNaW4gPSBmcm9tTWV0cmljU3BlZWQodmFsdWVNcHMpOw0KICAgICAgICByZXR1cm4gZnRNaW4udG9GaXhlZCgxKSArICcgZnQvbWluICgnICsNCiAgICAgICAgICAgICh2YWx1ZU1wcykudG9GaXhlZCgzKSArICcgbS9zKSc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZm9ybWF0RGlzdGFuY2UodmFsdWVNKSB7DQogICAgICAgIGlmICh1bml0U3lzdGVtID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgaWYgKHZhbHVlTSA+PSAxMDAwKSByZXR1cm4gKHZhbHVlTSAvIDEwMDApLnRvRml4ZWQoMikgKyAnIGttJzsNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZU0udG9GaXhlZCgyKSArICcgbSc7DQogICAgICAgIH0NCiAgICAgICAgY29uc3QgZnQgPSB2YWx1ZU0gKiBNX1RPX0ZUOw0KICAgICAgICBpZiAoZnQgPj0gNTI4MCkgcmV0dXJuIChmdCAvIDUyODApLnRvRml4ZWQoMikgKyAnIG1pJzsNCiAgICAgICAgcmV0dXJuIGZ0LnRvRml4ZWQoMSkgKyAnIGZ0JzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmb3JtYXRQb3dlcih2YWx1ZVcpIHsNCiAgICAgICAgaWYgKHZhbHVlVyA+PSAxMDAwKSByZXR1cm4gKHZhbHVlVyAvIDEwMDApLnRvRml4ZWQoMykgKyAnIGtXJzsNCiAgICAgICAgcmV0dXJuIHZhbHVlVy50b0ZpeGVkKDIpICsgJyBXJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmb3JtYXRQVkxpbWl0KG1hdCkgew0KICAgICAgICBpZiAodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycpIHJldHVybiBtYXQucHZMaW1pdC50b0ZpeGVkKDIpOw0KICAgICAgICByZXR1cm4gKG1hdC5wdkxpbWl0ICogTVBBX1RPX1BTSSAqIE1QU19UT19GVFBNKS50b0ZpeGVkKDEpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNvbnZlcnRJbnB1dHNPblVuaXRDaGFuZ2UoZnJvbVN5c3RlbSwgdG9TeXN0ZW0pIHsNCiAgICAgICAgaWYgKGZyb21TeXN0ZW0gPT09IHRvU3lzdGVtKSByZXR1cm47DQoNCiAgICAgICAgZnVuY3Rpb24gY29udmVydExlbmd0aChpbnB1dCkgew0KICAgICAgICAgICAgY29uc3QgdiA9IHBhcnNlTnVtKGlucHV0ICYmIGlucHV0LnZhbHVlKTsNCiAgICAgICAgICAgIGlmICh2ID09PSBudWxsIHx8ICFpbnB1dCkgcmV0dXJuOw0KICAgICAgICAgICAgaW5wdXQudmFsdWUgPSAodG9TeXN0ZW0gPT09ICdtZXRyaWMnID8gdiAqIElOQ0hfVE9fTU0gOiB2ICogTU1fVE9fSU5DSCkNCiAgICAgICAgICAgICAgICAudG9GaXhlZCh0b1N5c3RlbSA9PT0gJ21ldHJpYycgPyAyIDogNCk7DQogICAgICAgIH0NCg0KICAgICAgICBjb252ZXJ0TGVuZ3RoKGVscy5kaWFtZXRlcik7DQogICAgICAgIGNvbnZlcnRMZW5ndGgoZWxzLnN0cm9rZSk7DQoNCiAgICAgICAgY29uc3QgdGVtcCA9IHBhcnNlTnVtKGVscy50ZW1wZXJhdHVyZS52YWx1ZSk7DQogICAgICAgIGlmICh0ZW1wICE9PSBudWxsKSB7DQogICAgICAgICAgICBpZiAoZnJvbVN5c3RlbSA9PT0gJ21ldHJpYycgJiYgdG9TeXN0ZW0gPT09ICdpbXBlcmlhbCcpIHsNCiAgICAgICAgICAgICAgICBlbHMudGVt<\/span><span class=\"sswc-js-chunk\">cGVyYXR1cmUudmFsdWUgPSAodGVtcCAqIDkgLyA1ICsgMzIpLnRvRml4ZWQoMSk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGZyb21TeXN0ZW0gPT09ICdpbXBlcmlhbCcgJiYgdG9TeXN0ZW0gPT09ICdtZXRyaWMnKSB7DQogICAgICAgICAgICAgICAgZWxzLnRlbXBlcmF0dXJlLnZhbHVlID0gKCh0ZW1wIC0gMzIpICogNSAvIDkpLnRvRml4ZWQoMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBjb25zdCBjdXN0b21TcGVlZCA9IHBhcnNlTnVtKGVscy5jdXN0b21TcGVlZC52YWx1ZSk7DQogICAgICAgIGlmIChjdXN0b21TcGVlZCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgZWxzLmN1c3RvbVNwZWVkLnZhbHVlID0gKHRvU3lzdGVtID09PSAnbWV0cmljJw0KICAgICAgICAgICAgICAgID8gY3VzdG9tU3BlZWQgLyBNUFNfVE9fRlRQTQ0KICAgICAgICAgICAgICAgIDogY3VzdG9tU3BlZWQgKiBNUFNfVE9fRlRQTSkudG9GaXhlZCh0b1N5c3RlbSA9PT0gJ21ldHJpYycgPyAzIDogMSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYWxsb3dTcGVlZE1hbnVhbCkgew0KICAgICAgICAgICAgY29uc3QgYWxsb3dTcGVlZCA9IHBhcnNlTnVtKGVscy5hbGxvd1NwZWVkLnZhbHVlKTsNCiAgICAgICAgICAgIGlmIChhbGxvd1NwZWVkICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgZWxzLmFsbG93U3BlZWQudmFsdWUgPSAodG9TeXN0ZW0gPT09ICdtZXRyaWMnDQogICAgICAgICAgICAgICAgICAgID8gYWxsb3dTcGVlZCAvIE1QU19UT19GVFBNDQogICAgICAgICAgICAgICAgICAgIDogYWxsb3dTcGVlZCAqIE1QU19UT19GVFBNKS50b0ZpeGVkKHRvU3lzdGVtID09PSAnbWV0cmljJyA\/IDIgOiAxKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChhbGxvd1BWTWFudWFsKSB7DQogICAgICAgICAgICBjb25zdCBhbGxvd1BWID0gcGFyc2VOdW0oZWxzLmFsbG93UFYudmFsdWUpOw0KICAgICAgICAgICAgaWYgKGFsbG93UFYgIT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICBlbHMuYWxsb3dQVi52YWx1ZSA9ICh0b1N5c3RlbSA9PT0gJ21ldHJpYycNCiAgICAgICAgICAgICAgICAgICAgPyBhbGxvd1BWIC8gKE1QQV9UT19QU0kgKiBNUFNfVE9fRlRQTSkNCiAgICAgICAgICAgICAgICAgICAgOiBhbGxvd1BWICogTVBBX1RPX1BTSSAqIE1QU19UT19GVFBNKS50b0ZpeGVkKHRvU3lzdGVtID09PSAnbWV0cmljJyA\/IDIgOiAxKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGZvcmNlID0gcGFyc2VOdW0oZWxzLm5vcm1hbEZvcmNlLnZhbHVlKTsNCiAgICAgICAgaWYgKGZvcmNlICE9PSBudWxsKSB7DQogICAgICAgICAgICBlbHMubm9ybWFsRm9yY2UudmFsdWUgPSAodG9TeXN0ZW0gPT09ICdtZXRyaWMnDQogICAgICAgICAgICAgICAgPyBmb3JjZSAqIExCRl9UT19ODQogICAgICAgICAgICAgICAgOiBmb3JjZSAqIE5fVE9fTEJGKS50b0ZpeGVkKDIpOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgZmluaXNoID0gcGFyc2VOdW0oZWxzLnN1cmZhY2VGaW5pc2gudmFsdWUpOw0KICAgICAgICBpZiAoZmluaXNoICE9PSBudWxsKSB7DQogICAgICAgICAgICBpZiAoZWxzLmZpbmlzaFVuaXQudmFsdWUgPT09ICd1bScgJiYgdG9TeXN0ZW0gPT09ICdpbXBlcmlhbCcpIHsNCiAgICAgICAgICAgICAgICBlbHMuZmluaXNoVW5pdC52YWx1ZSA9ICd1aW4nOw0KICAgICAgICAgICAgICAgIGVscy5zdXJmYWNlRmluaXNoLnZhbHVlID0gKGZpbmlzaCAqIDM5LjM3MDEpLnRvRml4ZWQoMSk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGVscy5maW5pc2hVbml0LnZhbHVlID09PSAndWluJyAmJiB0b1N5c3RlbSA9PT0gJ21ldHJpYycpIHsNCiAgICAgICAgICAgICAgICBlbHMuZmluaXNoVW5pdC52YWx1ZSA9ICd1bSc7DQogICAgICAgICAgICAgICAgZWxzLnN1cmZhY2VGaW5pc2gudmFsdWUgPSAoZmluaXNoICogMC4wMjU0KS50b0ZpeGVkKDIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0UFZMaW1pdE1ldHJpYyhhbGxvd1BWLCBtYXQpIHsNCiAgICAgICAgaWYgKGFsbG93UFYgIT09IG51bGwpIHsNCiAgICAgICAgICAgIHJldHVybiB1bml0U3lzdGVtID09PSAnbWV0cmljJw0KICAgICAgICAgICAgICAgID8gYWxsb3dQVg0KICAgICAgICAgICAgICAgIDogYWxsb3dQViAvIChNUEFfVE9fUFNJICogTVBTX1RPX0ZUUE0pOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBtYXQucHZMaW1pdDsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRGcmVxdWVuY3lIeigpIHsNCiAgICAgICAgY29uc3QgZiA9IHBhcnNlTnVtKGVscy5mcmVxdWVuY3kudmFsdWUpOw0KICAgICAgICBpZiAoZiA9PT0gbnVsbCkgcmV0dXJuIG51bGw7DQogICAgICAgIHJldHVybiBlbHMuZnJlcXVlbmN5VW5pdC52YWx1ZSA9PT0gJ0h6JyA\/IGYgOiBmIC8gNjA7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0TWF0ZXJpYWxEYXRhKCkgew0KICAgICAgICByZXR1cm4gTUFURVJJQUxfREFUQVtlbHMubWF0ZXJpYWwudmFsdWVdIHx8IE1BVEVSSUFMX0RBVEEuQ3VzdG9tOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHVwZGF0ZVVuaXRMYWJlbHMoKSB7DQogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdW5pdD0ibGVuZ3RoIl0nKS5mb3JFYWNoKGVsID0+IHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0TGVuZ3RoVW5pdCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS11bml0PSJzcGVlZCJdJykuZm9yRWFjaChlbCA9PiB7DQogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IGdldFNwZWVkVW5pdCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS11bml0PSJ0ZW1wZXJhdHVyZSJdJykuZm9yRWFjaChlbCA9PiB7DQogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IGdldFRlbXBVbml0KCk7DQogICAgICAgIH0pOw0KICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXVuaXQ9ImZvcmNlIl0nKS5mb3JFYWNoKGVsID0+IHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0Rm9yY2VVbml0KCk7DQogICAgICAgIH0pOw0KICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXVuaXQ9InB2Il0nKS5mb3JFYWNoKGVsID0+IHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0UFZVbml0KCk7DQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHVwZGF0ZU1vdGlvblZpc2liaWxpdHkoKSB7DQogICAgICAgIGNvbnN0IG1vdGlvbiA9IGVscy5tb3Rpb25UeXBlLnZhbHVlOw0KICAgICAgICBzZXRWaXNpYmxlKHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnNzd2MtbW90aW9uLXJvdGFyeScpLCBtb3Rpb24gPT09ICdyb3RhcnknKTsNCiAgICAgICAgc2V0VmlzaWJsZShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zc3djLW1vdGlvbi1yZWNpcCcpLA0KICAgICAgICAgICAgbW90aW9uID09PSAncmVjaXByb2NhdGluZycgfHwgbW90aW9uID09PSAnb3NjaWxsYXRpbmcnKTsNCiAgICAgICAgc2V0VmlzaWJsZShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zc3djLW1vdGlvbi1vc2NpbGxhdGluZycpLCBtb3Rpb24gPT09ICdvc2NpbGxhdGluZycpOw0KICAgICAgICBzZXRWaXNpYmxlKHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnNzd2MtbW90aW9uLWN1c3RvbScpLCBtb3Rpb24gPT09ICdjdXN0b20nKTsNCiAgICAgICAgc2V0VmlzaWJsZShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zc3djLW1vdGlvbi1yZWNpcC1maWVsZCcpLA0KICAgICAgICAgICAgbW90aW9uICE9PSAncm90YXJ5JyAmJiBtb3Rpb24gIT09ICdjdXN0b20nKTsNCg0KICAgICAgICBjb25zdCBpc1JlY2lwID0gbW90aW9uID09PSAncmVjaXByb2NhdGluZycgfHwgbW90aW9uID09PSAnb3NjaWxsYXRpbmcnOw0KICAgICAgICBzZXRWaXNpYmxlKHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnNzd2MtcmVjaXAtb25seScpLCBpc1JlY2lwKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGVNYXRlcmlhbERlZmF1bHRzKCkgew0KICAgICAgICBjb25zdCBtYXQgPSBnZXRNYXRlcmlhbERhdGEoKTsNCiAgICAgICAgZWxzLm1hdGVyaWFsU3BlZWRIaW50LnRleHRDb250ZW50ID0NCiAgICAgICAgICAgICdSZWZlcmVuY2UgbWF4IHNwZWVkIGZvciAnICsgZWxzLm1hdGVyaWFsLnZhbHVlICsgJzogJyArDQogICAgICAgICAgICBmcm9tTWV0cmljU3BlZWQobWF0Lm1heFNwZWVkKS50b0ZpeGVkKDIpICsgJyAnICsgZ2V0U3BlZWRVbml0KCkgKw0KICAgICAgICAgICAgJyAobm90IGEgdW5pdmVyc2FsIGxpbWl0KSc7DQoNCiAgICAgICAgaWYgKCFhbGxvd1NwZWVkTWFudWFsKSB7DQogICAgICAgICAgICBlbHMuYWxsb3dTcGVlZC52YWx1ZSA9IGZyb21NZXRyaWNTcGVlZChtYXQubWF4<\/span><span class=\"sswc-js-chunk\">U3BlZWQpLnRvRml4ZWQodW5pdFN5c3RlbSA9PT0gJ21ldHJpYycgPyAyIDogMSk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCFhbGxvd1BWTWFudWFsKSB7DQogICAgICAgICAgICBlbHMuYWxsb3dQVi52YWx1ZSA9IGZvcm1hdFBWTGltaXQobWF0KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3JzKCkgew0KICAgICAgICBbJ2RpYW1ldGVyJywgJ3JwbScsICdzdHJva2UnLCAnZnJlcXVlbmN5JywgJ2FsbG93U3BlZWQnLCAnYWxsb3dQViddLmZvckVhY2goa2V5ID0+IHsNCiAgICAgICAgICAgIGNvbnN0IGVyckVsID0gZWxzW2tleSArICdFcnJvciddOw0KICAgICAgICAgICAgY29uc3QgaW5wdXRFbCA9IGVsc1trZXldOw0KICAgICAgICAgICAgaWYgKGVyckVsKSBlcnJFbC50ZXh0Q29udGVudCA9ICcnOw0KICAgICAgICAgICAgaWYgKGlucHV0RWwpIGlucHV0RWwuY2xhc3NMaXN0LnJlbW92ZSgnc3N3Yy1lcnJvcicpOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0cygpIHsNCiAgICAgICAgY2xlYXJFcnJvcnMoKTsNCiAgICAgICAgY29uc3Qgd2FybmluZ3MgPSBbXTsNCiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTsNCiAgICAgICAgY29uc3QgbW90aW9uID0gZWxzLm1vdGlvblR5cGUudmFsdWU7DQoNCiAgICAgICAgY29uc3QgZGlhbWV0ZXIgPSBwYXJzZU51bShlbHMuZGlhbWV0ZXIudmFsdWUpOw0KICAgICAgICBpZiAoZGlhbWV0ZXIgPT09IG51bGwgfHwgZGlhbWV0ZXIgPD0gMCkgew0KICAgICAgICAgICAgZWxzLmRpYW1ldGVyRXJyb3IudGV4dENvbnRlbnQgPSAnRGlhbWV0ZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLmRpYW1ldGVyLmNsYXNzTGlzdC5hZGQoJ3Nzd2MtZXJyb3InKTsNCiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAobW90aW9uID09PSAncm90YXJ5Jykgew0KICAgICAgICAgICAgY29uc3QgcnBtID0gcGFyc2VOdW0oZWxzLnJwbS52YWx1ZSk7DQogICAgICAgICAgICBpZiAocnBtID09PSBudWxsIHx8IHJwbSA8IDApIHsNCiAgICAgICAgICAgICAgICBlbHMucnBtRXJyb3IudGV4dENvbnRlbnQgPSAnU3BlZWQgY2Fubm90IGJlIG5lZ2F0aXZlLic7DQogICAgICAgICAgICAgICAgZWxzLnJwbS5jbGFzc0xpc3QuYWRkKCdzc3djLWVycm9yJyk7DQogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChtb3Rpb24gPT09ICdyZWNpcHJvY2F0aW5nJyB8fCBtb3Rpb24gPT09ICdvc2NpbGxhdGluZycpIHsNCiAgICAgICAgICAgIGNvbnN0IHN0cm9rZSA9IHBhcnNlTnVtKGVscy5zdHJva2UudmFsdWUpOw0KICAgICAgICAgICAgaWYgKHN0cm9rZSA9PT0gbnVsbCB8fCBzdHJva2UgPD0gMCkgew0KICAgICAgICAgICAgICAgIGVscy5zdHJva2VFcnJvci50ZXh0Q29udGVudCA9ICdTdHJva2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgICAgIGVscy5zdHJva2UuY2xhc3NMaXN0LmFkZCgnc3N3Yy1lcnJvcicpOw0KICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjb25zdCBmcmVxID0gcGFyc2VOdW0oZWxzLmZyZXF1ZW5jeS52YWx1ZSk7DQogICAgICAgICAgICBpZiAoZnJlcSA9PT0gbnVsbCB8fCBmcmVxIDwgMCkgew0KICAgICAgICAgICAgICAgIGVscy5mcmVxdWVuY3lFcnJvci50ZXh0Q29udGVudCA9ICdGcmVxdWVuY3kgY2Fubm90IGJlIG5lZ2F0aXZlLic7DQogICAgICAgICAgICAgICAgZWxzLmZyZXF1ZW5jeS5jbGFzc0xpc3QuYWRkKCdzc3djLWVycm9yJyk7DQogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGFsbG93U3BlZWQgPSBwYXJzZU51bShlbHMuYWxsb3dTcGVlZC52YWx1ZSk7DQogICAgICAgIGlmIChhbGxvd1NwZWVkID09PSBudWxsIHx8IGFsbG93U3BlZWQgPD0gMCkgew0KICAgICAgICAgICAgZWxzLmFsbG93U3BlZWRFcnJvci50ZXh0Q29udGVudCA9ICdBbGxvd2FibGUgc3BlZWQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLmFsbG93U3BlZWQuY2xhc3NMaXN0LmFkZCgnc3N3Yy1lcnJvcicpOw0KICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IGFsbG93UFYgPSBwYXJzZU51bShlbHMuYWxsb3dQVi52YWx1ZSk7DQogICAgICAgIGlmIChhbGxvd1BWICE9PSBudWxsICYmIGFsbG93UFYgPD0gMCkgew0KICAgICAgICAgICAgZWxzLmFsbG93UFZFcnJvci50ZXh0Q29udGVudCA9ICdBbGxvd2FibGUgUFYgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLmFsbG93UFYuY2xhc3NMaXN0LmFkZCgnc3N3Yy1lcnJvcicpOw0KICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghdmFsaWQpIHJldHVybiB7IHZhbGlkLCB3YXJuaW5ncywgcmVzdWx0czogbnVsbCB9Ow0KDQogICAgICAgIGNvbnN0IERtbSA9IHRvTWV0cmljTGVuZ3RoKGRpYW1ldGVyKTsNCiAgICAgICAgY29uc3QgRG0gPSBEbW0gLyAxMDAwOw0KICAgICAgICBsZXQgc3VyZmFjZVNwZWVkID0gMDsNCiAgICAgICAgbGV0IGF2Z1NwZWVkID0gMDsNCiAgICAgICAgbGV0IHBlYWtTcGVlZCA9IDA7DQoNCiAgICAgICAgaWYgKG1vdGlvbiA9PT0gJ3JvdGFyeScpIHsNCiAgICAgICAgICAgIGNvbnN0IHJwbSA9IHBhcnNlTnVtKGVscy5ycG0udmFsdWUpIHx8IDA7DQogICAgICAgICAgICBzdXJmYWNlU3BlZWQgPSBNYXRoLlBJICogRG0gKiBycG0gLyA2MDsNCiAgICAgICAgICAgIGF2Z1NwZWVkID0gc3VyZmFjZVNwZWVkOw0KICAgICAgICAgICAgcGVha1NwZWVkID0gc3VyZmFjZVNwZWVkOw0KICAgICAgICB9IGVsc2UgaWYgKG1vdGlvbiA9PT0gJ3JlY2lwcm9jYXRpbmcnKSB7DQogICAgICAgICAgICBjb25zdCBMbSA9IHRvTWV0cmljTGVuZ3RoKHBhcnNlTnVtKGVscy5zdHJva2UudmFsdWUpKSAvIDEwMDA7DQogICAgICAgICAgICBjb25zdCBmID0gZ2V0RnJlcXVlbmN5SHooKSB8fCAwOw0KICAgICAgICAgICAgYXZnU3BlZWQgPSAyICogTG0gKiBmOw0KICAgICAgICAgICAgcGVha1NwZWVkID0gTWF0aC5QSSAqIExtICogZjsNCiAgICAgICAgICAgIHN1cmZhY2VTcGVlZCA9IHBlYWtTcGVlZDsNCiAgICAgICAgfSBlbHNlIGlmIChtb3Rpb24gPT09ICdvc2NpbGxhdGluZycpIHsNCiAgICAgICAgICAgIGNvbnN0IGFuZ2xlRGVnID0gcGFyc2VOdW0oZWxzLm9zY0FuZ2xlLnZhbHVlKSB8fCA0NTsNCiAgICAgICAgICAgIGNvbnN0IGFuZ2xlUmFkID0gYW5nbGVEZWcgKiBNYXRoLlBJIC8gMTgwOw0KICAgICAgICAgICAgY29uc3QgTG0gPSBEbSAqIGFuZ2xlUmFkOw0KICAgICAgICAgICAgY29uc3QgZiA9IGdldEZyZXF1ZW5jeUh6KCkgfHwgMDsNCiAgICAgICAgICAgIGF2Z1NwZWVkID0gMiAqIExtICogZjsNCiAgICAgICAgICAgIHBlYWtTcGVlZCA9IE1hdGguUEkgKiBMbSAqIGY7DQogICAgICAgICAgICBzdXJmYWNlU3BlZWQgPSBwZWFrU3BlZWQ7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBzdXJmYWNlU3BlZWQgPSB0b01ldHJpY1NwZWVkKHBhcnNlTnVtKGVscy5jdXN0b21TcGVlZC52YWx1ZSkgfHwgMCk7DQogICAgICAgICAgICBhdmdTcGVlZCA9IHN1cmZhY2VTcGVlZDsNCiAgICAgICAgICAgIHBlYWtTcGVlZCA9IHN1cmZhY2VTcGVlZDsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IHByZXNzdXJlTXBhID0gdG9NZXRyaWNQcmVzc3VyZSgNCiAgICAgICAgICAgIHBhcnNlTnVtKGVscy5wcmVzc3VyZS52YWx1ZSkgfHwgMCwNCiAgICAgICAgICAgIGVscy5wcmVzc3VyZVVuaXQudmFsdWUNCiAgICAgICAgKTsNCiAgICAgICAgY29uc3QgdGVtcEMgPSB0b01ldHJpY1RlbXAocGFyc2VOdW0oZWxzLnRlbXBlcmF0dXJlLnZhbHVlKSB8fCAyMCk7DQogICAgICAgIGNvbnN0IG1hdCA9IGdldE1hdGVyaWFsRGF0YSgpOw0KICAgICAgICBjb25zdCBhbGxvd1NwZWVkTXBzID0gdG9NZXRyaWNTcGVlZChhbGxvd1NwZWVkKTsNCiAgICAgICAgY29uc3QgcHZWYWx1ZSA9IHByZXNzdXJlTXBhICogc3VyZmFjZVNwZWVkOw0KICAgICAgICBjb25zdCBwdkxpbWl0TWV0cmljID0gZ2V0UFZMaW1pdE1ldHJpYyhhbGxvd1BWLCBtYXQpOw0KDQogICAgICAgIGNvbnN0IHNwZWVkVXRpbCA9IGFsbG93U3BlZWRNcHMgPiAwID8gKHN1cmZhY2VTcGVlZCAvIGFsbG93U3BlZWRNcHMpICogMTAwIDogMDsNCiAgICAgICAgY29uc3QgcHZVdGlsID0gcHZMaW1pdE1ldHJpYyA+IDAgPyAocHZWYWx1ZSAvIHB2TGltaXRNZXRyaWMpICogMTAwIDogbnVsbDsNCg0KICAgICAgICBjb25zdCBzcGVlZEZhY3RvciA9IGFsbG93U3BlZWRNcHMgPiAw<\/span><span class=\"sswc-js-chunk\">ID8gc3VyZmFjZVNwZWVkIC8gYWxsb3dTcGVlZE1wcyA6IDE7DQogICAgICAgIGNvbnN0IHByZXNzdXJlRmFjdG9yID0gTWF0aC5taW4oMi4wLCAxICsgKHByZXNzdXJlTXBhIC8gMC41KSAqIDAuMjUpOw0KICAgICAgICBjb25zdCB0ZW1wUmF0aW8gPSB0ZW1wQyAvIG1hdC5tYXhUZW1wOw0KICAgICAgICBsZXQgdGVtcEZhY3RvciA9IDAuODU7DQogICAgICAgIGlmICh0ZW1wUmF0aW8gPiAxKSB0ZW1wRmFjdG9yID0gMS44Ow0KICAgICAgICBlbHNlIGlmICh0ZW1wUmF0aW8gPiAwLjg1KSB0ZW1wRmFjdG9yID0gMS4zOw0KICAgICAgICBlbHNlIGlmICh0ZW1wUmF0aW8gPiAwLjcpIHRlbXBGYWN0b3IgPSAxLjA7DQogICAgICAgIGVsc2UgdGVtcEZhY3RvciA9IDAuODU7DQoNCiAgICAgICAgY29uc3QgbHViZUZhY3RvciA9IExVQkVfRkFDVE9SU1tlbHMubHVicmljYXRpb24udmFsdWVdIHx8IDEuMDsNCiAgICAgICAgY29uc3QgbWF0ZXJpYWxGYWN0b3IgPSBtYXQud2VhckZhY3RvcjsNCg0KICAgICAgICBsZXQgZmluaXNoRmFjdG9yID0gMS4wOw0KICAgICAgICBjb25zdCBmaW5pc2ggPSBwYXJzZU51bShlbHMuc3VyZmFjZUZpbmlzaC52YWx1ZSk7DQogICAgICAgIGlmIChmaW5pc2ggIT09IG51bGwgJiYgZmluaXNoID4gMCkgew0KICAgICAgICAgICAgY29uc3QgcmFVbSA9IHRvTWV0cmljRmluaXNoKGZpbmlzaCwgZWxzLmZpbmlzaFVuaXQudmFsdWUpOw0KICAgICAgICAgICAgaWYgKHJhVW0gPiAxLjYpIGZpbmlzaEZhY3RvciA9IDEuMjsNCiAgICAgICAgICAgIGVsc2UgaWYgKHJhVW0gPiAwLjgpIGZpbmlzaEZhY3RvciA9IDEuMDU7DQogICAgICAgICAgICBlbHNlIGlmIChyYVVtIDw9IDAuNCkgZmluaXNoRmFjdG9yID0gMC45NTsNCiAgICAgICAgfQ0KDQogICAgICAgIGNvbnN0IHdlYXJJbmRleCA9IHNwZWVkRmFjdG9yICogcHJlc3N1cmVGYWN0b3IgKiB0ZW1wRmFjdG9yICogbHViZUZhY3RvciAqIG1hdGVyaWFsRmFjdG9yICogZmluaXNoRmFjdG9yOw0KDQogICAgICAgIGxldCBzbGlkaW5nRGlzdGFuY2UgPSBudWxsOw0KICAgICAgICBjb25zdCBvcFRpbWUgPSBwYXJzZU51bShlbHMub3BlcmF0aW5nVGltZS52YWx1ZSk7DQogICAgICAgIGNvbnN0IHRvdGFsQ3ljbGVzID0gcGFyc2VOdW0oZWxzLnRvdGFsQ3ljbGVzLnZhbHVlKTsNCg0KICAgICAgICBpZiAob3BUaW1lICE9PSBudWxsICYmIG9wVGltZSA+IDApIHsNCiAgICAgICAgICAgIHNsaWRpbmdEaXN0YW5jZSA9IGF2Z1NwZWVkICogb3BUaW1lICogMzYwMDsNCiAgICAgICAgfSBlbHNlIGlmICh0b3RhbEN5Y2xlcyAhPT0gbnVsbCAmJiB0b3RhbEN5Y2xlcyA+IDAgJiYNCiAgICAgICAgICAgIChtb3Rpb24gPT09ICdyZWNpcHJvY2F0aW5nJyB8fCBtb3Rpb24gPT09ICdvc2NpbGxhdGluZycpKSB7DQogICAgICAgICAgICBsZXQgTG07DQogICAgICAgICAgICBpZiAobW90aW9uID09PSAncmVjaXByb2NhdGluZycpIHsNCiAgICAgICAgICAgICAgICBMbSA9IHRvTWV0cmljTGVuZ3RoKHBhcnNlTnVtKGVscy5zdHJva2UudmFsdWUpKSAvIDEwMDA7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGNvbnN0IGFuZ2xlUmFkID0gKHBhcnNlTnVtKGVscy5vc2NBbmdsZS52YWx1ZSkgfHwgNDUpICogTWF0aC5QSSAvIDE4MDsNCiAgICAgICAgICAgICAgICBMbSA9IERtICogYW5nbGVSYWQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzbGlkaW5nRGlzdGFuY2UgPSAyICogTG0gKiB0b3RhbEN5Y2xlczsNCiAgICAgICAgfQ0KDQogICAgICAgIGxldCBmcmljdGlvblBvd2VyID0gbnVsbDsNCiAgICAgICAgY29uc3QgbXUgPSBwYXJzZU51bShlbHMuZnJpY3Rpb25Db2VmZi52YWx1ZSk7DQogICAgICAgIGNvbnN0IG5vcm1hbEZvcmNlID0gcGFyc2VOdW0oZWxzLm5vcm1hbEZvcmNlLnZhbHVlKTsNCiAgICAgICAgaWYgKG11ICE9PSBudWxsICYmIG5vcm1hbEZvcmNlICE9PSBudWxsICYmIG11ID4gMCAmJiBub3JtYWxGb3JjZSA+IDApIHsNCiAgICAgICAgICAgIGNvbnN0IGZvcmNlTiA9IHRvTWV0cmljRm9yY2Uobm9ybWFsRm9yY2UpOw0KICAgICAgICAgICAgZnJpY3Rpb25Qb3dlciA9IG11ICogZm9yY2VOICogc3VyZmFjZVNwZWVkOw0KICAgICAgICB9DQoNCiAgICAgICAgbGV0IHdlYXJSaXNrID0gJ0xvdyc7DQogICAgICAgIGlmICh3ZWFySW5kZXggPj0gMS44IHx8IHNwZWVkVXRpbCA+IDEwMCB8fCAocHZVdGlsICE9PSBudWxsICYmIHB2VXRpbCA+IDEwMCkpIHsNCiAgICAgICAgICAgIHdlYXJSaXNrID0gJ0hpZ2gnOw0KICAgICAgICB9IGVsc2UgaWYgKHdlYXJJbmRleCA+PSAxLjAgfHwgc3BlZWRVdGlsID49IDgwIHx8IChwdlV0aWwgIT09IG51bGwgJiYgcHZVdGlsID49IDgwKSkgew0KICAgICAgICAgICAgd2VhclJpc2sgPSAnTW9kZXJhdGUnOw0KICAgICAgICB9DQoNCiAgICAgICAgbGV0IHRoZXJtYWxTY29yZSA9IDA7DQogICAgICAgIGlmIChzcGVlZFV0aWwgPiA3MCkgdGhlcm1hbFNjb3JlICs9IDI7DQogICAgICAgIGVsc2UgaWYgKHNwZWVkVXRpbCA+IDQwKSB0aGVybWFsU2NvcmUgKz0gMTsNCiAgICAgICAgaWYgKHByZXNzdXJlTXBhID4gMC41KSB0aGVybWFsU2NvcmUgKz0gMTsNCiAgICAgICAgaWYgKHByZXNzdXJlTXBhID4gMikgdGhlcm1hbFNjb3JlICs9IDE7DQogICAgICAgIGlmIChsdWJlRmFjdG9yID49IDEuMykgdGhlcm1hbFNjb3JlICs9IDI7DQogICAgICAgIGlmIChsdWJlRmFjdG9yID49IDEuOCkgdGhlcm1hbFNjb3JlICs9IDI7DQogICAgICAgIGlmICh0ZW1wUmF0aW8gPiAwLjg1KSB0aGVybWFsU2NvcmUgKz0gMTsNCiAgICAgICAgaWYgKHRlbXBSYXRpbyA+IDEpIHRoZXJtYWxTY29yZSArPSAyOw0KICAgICAgICBpZiAoZnJpY3Rpb25Qb3dlciAhPT0gbnVsbCAmJiBmcmljdGlvblBvd2VyID4gNTAwKSB0aGVybWFsU2NvcmUgKz0gMTsNCg0KICAgICAgICBsZXQgdGhlcm1hbFJpc2sgPSAnTG93JzsNCiAgICAgICAgaWYgKHRoZXJtYWxTY29yZSA+PSA1KSB0aGVybWFsUmlzayA9ICdIaWdoJzsNCiAgICAgICAgZWxzZSBpZiAodGhlcm1hbFNjb3JlID49IDMpIHRoZXJtYWxSaXNrID0gJ01vZGVyYXRlJzsNCg0KICAgICAgICBsZXQgc2VydmljZUxpZmUgPSAnRmF2b3JhYmxlJzsNCiAgICAgICAgaWYgKHdlYXJSaXNrID09PSAnSGlnaCcgfHwgdGhlcm1hbFJpc2sgPT09ICdIaWdoJykgc2VydmljZUxpZmUgPSAnUmVkdWNlZCBMaWZlIEV4cGVjdGVkJzsNCiAgICAgICAgZWxzZSBpZiAod2VhclJpc2sgPT09ICdNb2RlcmF0ZScgfHwgdGhlcm1hbFJpc2sgPT09ICdNb2RlcmF0ZScpIHNlcnZpY2VMaWZlID0gJ01vbml0b3InOw0KDQogICAgICAgIGxldCBvcGVyYXRpbmdTdGF0dXMgPSAnQWNjZXB0YWJsZSc7DQogICAgICAgIGlmICh3ZWFyUmlzayA9PT0gJ0hpZ2gnIHx8IHRoZXJtYWxSaXNrID09PSAnSGlnaCcgfHwgc3BlZWRVdGlsID4gMTAwKSB7DQogICAgICAgICAgICBvcGVyYXRpbmdTdGF0dXMgPSAnUmV2aWV3IFJlcXVpcmVkJzsNCiAgICAgICAgfSBlbHNlIGlmICh3ZWFyUmlzayA9PT0gJ01vZGVyYXRlJyB8fCBzcGVlZFV0aWwgPj0gODApIHsNCiAgICAgICAgICAgIG9wZXJhdGluZ1N0YXR1cyA9ICdDYXV0aW9uJzsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChzcGVlZFV0aWwgPiAxMDApIHsNCiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goew0KICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLA0KICAgICAgICAgICAgICAgIHRleHQ6ICdBY3R1YWwgc3VyZmFjZSBzcGVlZCBleGNlZWRzIHRoZSBhbGxvd2FibGUgbGltaXQuIFJlZHVjZSBzcGVlZCBvciBzZWxlY3QgYSBoaWdoZXItc3BlZWQgc2VhbCBtYXRlcmlhbC4nDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAocHZVdGlsICE9PSBudWxsICYmIHB2VXRpbCA+IDEwMCkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsDQogICAgICAgICAgICAgICAgdGV4dDogJ0NhbGN1bGF0ZWQgUFYgZXhjZWVkcyB0aGUgYWxsb3dhYmxlIFBWIGxpbWl0LiBWZXJpZnkgd2l0aCBtYW51ZmFjdHVyZXIgZGF0YS4nDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZWxzLmx1YnJpY2F0aW9uLnZhbHVlID09PSAnZHJ5JyAmJiBzdXJmYWNlU3BlZWQgPiAwLjUpIHsNCiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goew0KICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLA0KICAgICAgICAgICAgICAgIHRleHQ6ICdEcnkgcnVubmluZyBhdCBlbGV2YXRlZCBzdXJmYWNlIHNwZWVkIHNpZ25pZmljYW50bHkgaW5jcmVhc2VzIHdlYXIgYW5kIHRoZXJtYWwgcmlzay4nDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGVtcEMgPiBtYXQubWF4VGVtcCkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsDQogICAgICAgICAg<\/span><span class=\"sswc-js-chunk\">ICAgICAgdGV4dDogJ09wZXJhdGluZyB0ZW1wZXJhdHVyZSBleGNlZWRzIHR5cGljYWwgY29udGludW91cyBsaW1pdCBmb3IgJyArIGVscy5tYXRlcmlhbC52YWx1ZSArICcgKCcgKyBtYXQubWF4VGVtcCArICcgXHUwMEIwQykuJw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0gZWxzZSBpZiAodGVtcFJhdGlvID4gMC44NSkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm4nLA0KICAgICAgICAgICAgICAgIHRleHQ6ICdPcGVyYXRpbmcgdGVtcGVyYXR1cmUgaXMgYXBwcm9hY2hpbmcgdGhlIG1hdGVyaWFsIHRlbXBlcmF0dXJlIGxpbWl0LicNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIGlmIChzcGVlZFV0aWwgPj0gODAgJiYgc3BlZWRVdGlsIDw9IDEwMCkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm4nLA0KICAgICAgICAgICAgICAgIHRleHQ6ICdTcGVlZCB1dGlsaXphdGlvbiBpcyBhcHByb2FjaGluZyB0aGUgcmVjb21tZW5kZWQgbGltaXQuJw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgdmFsaWQsDQogICAgICAgICAgICB3YXJuaW5ncywNCiAgICAgICAgICAgIHJlc3VsdHM6IHsNCiAgICAgICAgICAgICAgICBzdXJmYWNlU3BlZWQsDQogICAgICAgICAgICAgICAgYXZnU3BlZWQsDQogICAgICAgICAgICAgICAgcGVha1NwZWVkLA0KICAgICAgICAgICAgICAgIGFsbG93U3BlZWRNcHMsDQogICAgICAgICAgICAgICAgc3BlZWRVdGlsLA0KICAgICAgICAgICAgICAgIHByZXNzdXJlTXBhLA0KICAgICAgICAgICAgICAgIHB2VmFsdWUsDQogICAgICAgICAgICAgICAgcHZMaW1pdE1ldHJpYywNCiAgICAgICAgICAgICAgICBwdlV0aWwsDQogICAgICAgICAgICAgICAgd2VhckluZGV4LA0KICAgICAgICAgICAgICAgIHNsaWRpbmdEaXN0YW5jZSwNCiAgICAgICAgICAgICAgICBmcmljdGlvblBvd2VyLA0KICAgICAgICAgICAgICAgIHdlYXJSaXNrLA0KICAgICAgICAgICAgICAgIHRoZXJtYWxSaXNrLA0KICAgICAgICAgICAgICAgIHRoZXJtYWxTY29yZSwNCiAgICAgICAgICAgICAgICBzZXJ2aWNlTGlmZSwNCiAgICAgICAgICAgICAgICBvcGVyYXRpbmdTdGF0dXMsDQogICAgICAgICAgICAgICAgdGVtcEMsDQogICAgICAgICAgICAgICAgbWF0LA0KICAgICAgICAgICAgICAgIG1vdGlvbiwNCiAgICAgICAgICAgICAgICBpc1JlY2lwOiBtb3Rpb24gPT09ICdyZWNpcHJvY2F0aW5nJyB8fCBtb3Rpb24gPT09ICdvc2NpbGxhdGluZycNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiByaXNrQ2xhc3MobGV2ZWwpIHsNCiAgICAgICAgaWYgKGxldmVsID09PSAnTG93JyB8fCBsZXZlbCA9PT0gJ0FjY2VwdGFibGUnIHx8IGxldmVsID09PSAnRmF2b3JhYmxlJykgcmV0dXJuICdzc3djLXJpc2stbG93JzsNCiAgICAgICAgaWYgKGxldmVsID09PSAnTW9kZXJhdGUnIHx8IGxldmVsID09PSAnQ2F1dGlvbicgfHwgbGV2ZWwgPT09ICdNb25pdG9yJykgcmV0dXJuICdzc3djLXJpc2stbW9kZXJhdGUnOw0KICAgICAgICByZXR1cm4gJ3Nzd2Mtcmlzay1oaWdoJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzdGF0dXNCYW5uZXJDbGFzcyhzdGF0dXMpIHsNCiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0FjY2VwdGFibGUnKSByZXR1cm4gJ3Nzd2Mtc3RhdHVzLWFjY2VwdGFibGUnOw0KICAgICAgICBpZiAoc3RhdHVzID09PSAnQ2F1dGlvbicpIHJldHVybiAnc3N3Yy1zdGF0dXMtY2F1dGlvbic7DQogICAgICAgIHJldHVybiAnc3N3Yy1zdGF0dXMtcmV2aWV3JzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzdGF0dXNJY29uKHN0YXR1cykgew0KICAgICAgICBpZiAoc3RhdHVzID09PSAnQWNjZXB0YWJsZScpIHJldHVybiAnXHUyNzEzJzsNCiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ0NhdXRpb24nKSByZXR1cm4gJyEnOw0KICAgICAgICByZXR1cm4gJ1x1MjcxNyc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZGlzcGxheVdhcm5pbmdzKHdhcm5pbmdzKSB7DQogICAgICAgIGlmICghZWxzLndhcm5pbmdzKSByZXR1cm47DQogICAgICAgIGVscy53YXJuaW5ncy5pbm5lckhUTUwgPSAnJzsNCiAgICAgICAgd2FybmluZ3MuZm9yRWFjaCh3ID0+IHsNCiAgICAgICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdzc3djLXdhcm5pbmctaXRlbScgKyAody50eXBlID09PSAnZGFuZ2VyJyA\/ICcgc3N3Yy13YXJuaW5nLWRhbmdlcicgOiAnJyk7DQogICAgICAgICAgICBkaXYudGV4dENvbnRlbnQgPSB3LnRleHQ7DQogICAgICAgICAgICBlbHMud2FybmluZ3MuYXBwZW5kQ2hpbGQoZGl2KTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2hvd1NlY3Rpb24oc2VjdGlvbikgew0KICAgICAgICBpZiAoIXNlY3Rpb24pIHJldHVybjsNCiAgICAgICAgc2VjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdzc3djLWhpZGRlbicpOw0KICAgICAgICBzZWN0aW9uLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zc3djLWhpZGRlbicpOw0KICAgICAgICBzZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBoaWRlU2VjdGlvbihzZWN0aW9uKSB7DQogICAgICAgIGlmICghc2VjdGlvbikgcmV0dXJuOw0KICAgICAgICBzZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ3Nzd2MtaGlkZGVuJyk7DQogICAgICAgIHNlY3Rpb24uc2V0QXR0cmlidXRlKCdkYXRhLXNzd2MtaGlkZGVuJywgJ3RydWUnKTsNCiAgICAgICAgc2VjdGlvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGRpc3BsYXlSZXN1bHRzKGRhdGEpIHsNCiAgICAgICAgZGlzcGxheVdhcm5pbmdzKGRhdGEud2FybmluZ3MpOw0KDQogICAgICAgIGlmICghZGF0YS52YWxpZCB8fCAhZGF0YS5yZXN1bHRzKSB7DQogICAgICAgICAgICBoaWRlU2VjdGlvbihlbHMucmVzdWx0c1NlY3Rpb24pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgY29uc3QgciA9IGRhdGEucmVzdWx0czsNCiAgICAgICAgdXBkYXRlTW90aW9uVmlzaWJpbGl0eSgpOw0KICAgICAgICBzaG93U2VjdGlvbihlbHMucmVzdWx0c1NlY3Rpb24pOw0KDQogICAgICAgIHNldFRleHQoZWxzLnJlc3VsdFN1cmZhY2VTcGVlZCwgZm9ybWF0U3BlZWQoci5zdXJmYWNlU3BlZWQpKTsNCiAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0QXZnU3BlZWQsIGZvcm1hdFNwZWVkKHIuYXZnU3BlZWQpKTsNCiAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0UGVha1NwZWVkLCBmb3JtYXRTcGVlZChyLnBlYWtTcGVlZCkpOw0KICAgICAgICBzZXRUZXh0KGVscy5yZXN1bHRBbGxvd1NwZWVkLCBmb3JtYXRTcGVlZChyLmFsbG93U3BlZWRNcHMpKTsNCiAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0U3BlZWRVdGlsLCByLnNwZWVkVXRpbC50b0ZpeGVkKDEpICsgJyUnKTsNCiAgICAgICAgc2V0Q2xhc3MoZWxzLnJlc3VsdFNwZWVkVXRpbCwgJ3Nzd2MtcmVzdWx0LXZhbHVlIHNzd2Mtb3V0LXNwZWVkLXV0aWwgJyArDQogICAgICAgICAgICAoci5zcGVlZFV0aWwgPiAxMDAgPyAnc3N3Yy1yaXNrLWhpZ2gnIDogci5zcGVlZFV0aWwgPj0gODAgPyAnc3N3Yy1yaXNrLW1vZGVyYXRlJyA6ICdzc3djLXJpc2stbG93JykpOw0KDQogICAgICAgIGlmICh1bml0U3lzdGVtID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0UFYsIHIucHZWYWx1ZS50b0ZpeGVkKDQpICsgJyBNUGFcdTAwQjdtL3MnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHNldFRleHQoZWxzLnJlc3VsdFBWLCAoci5wcmVzc3VyZU1wYSAqIE1QQV9UT19QU0kpLnRvRml4ZWQoMikgKyAnIHBzaSBcdTAwRDcgJyArDQogICAgICAgICAgICAgICAgZnJvbU1ldHJpY1NwZWVkKHIuc3VyZmFjZVNwZWVkKS50b0ZpeGVkKDEpICsgJyBmdC9taW4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChyLnB2VXRpbCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0UFZVdGlsLCByLnB2VXRpbC50b0ZpeGVkKDEpICsgJyUnKTsNCiAgICAgICAgICAgIHNldENsYXNzKGVscy5yZXN1bHRQVlV0aWwsICdzc3djLXJlc3VsdC12YWx1ZSBzc3djLW91dC1wdi11dGlsICcgKw0KICAgICAgICAgICAgICAgIChyLnB2VXRpbCA+IDEwMCA\/ICdzc3djLXJpc2staGlnaCcgOiByLnB2VXRpbCA+PSA4MCA\/ICdzc3djLXJpc2stbW9kZXJhdGUnIDogJ3Nzd2Mtcmlzay1sb3cnKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBzZXRUZXh0KGVscy5yZXN1bHRQVlV0aWwsICdOL0EnKTsNCiAgICAgICAgICAgIHNldENsYXNzKGVscy5yZXN1bHRQVlV0aWwsICdzc3djLXJlc3VsdC12YWx1<\/span><span class=\"sswc-js-chunk\">ZSBzc3djLW91dC1wdi11dGlsJyk7DQogICAgICAgIH0NCg0KICAgICAgICBzZXRUZXh0KGVscy5yZXN1bHREaXN0YW5jZSwgci5zbGlkaW5nRGlzdGFuY2UgIT09IG51bGwgPw0KICAgICAgICAgICAgZm9ybWF0RGlzdGFuY2Uoci5zbGlkaW5nRGlzdGFuY2UpIDogJ04vQSAoZW50ZXIgdGltZSBvciBjeWNsZXMpJyk7DQogICAgICAgIHNldFRleHQoZWxzLnJlc3VsdEZyaWN0aW9uUG93ZXIsIHIuZnJpY3Rpb25Qb3dlciAhPT0gbnVsbCA\/DQogICAgICAgICAgICBmb3JtYXRQb3dlcihyLmZyaWN0aW9uUG93ZXIpIDogJ04vQSAoZW50ZXIgXHUwM0JDIGFuZCBub3JtYWwgZm9yY2UpJyk7DQogICAgICAgIHNldFRleHQoZWxzLnJlc3VsdFdlYXJJbmRleCwgci53ZWFySW5kZXgudG9GaXhlZCgyKSk7DQogICAgICAgIHNldFRleHQoZWxzLnJlc3VsdFdlYXJSaXNrLCByLndlYXJSaXNrKTsNCiAgICAgICAgc2V0Q2xhc3MoZWxzLnJlc3VsdFdlYXJSaXNrLCAnc3N3Yy1yZXN1bHQtdmFsdWUgc3N3Yy1vdXQtd2Vhci1yaXNrICcgKyByaXNrQ2xhc3Moci53ZWFyUmlzaykpOw0KICAgICAgICBzZXRUZXh0KGVscy5yZXN1bHRUaGVybWFsUmlzaywgci50aGVybWFsUmlzayk7DQogICAgICAgIHNldENsYXNzKGVscy5yZXN1bHRUaGVybWFsUmlzaywgJ3Nzd2MtcmVzdWx0LXZhbHVlIHNzd2Mtb3V0LXRoZXJtYWwtcmlzayAnICsgcmlza0NsYXNzKHIudGhlcm1hbFJpc2spKTsNCiAgICAgICAgc2V0VGV4dChlbHMucmVzdWx0U2VydmljZUxpZmUsIHIuc2VydmljZUxpZmUpOw0KICAgICAgICBzZXRDbGFzcyhlbHMucmVzdWx0U2VydmljZUxpZmUsICdzc3djLXJlc3VsdC12YWx1ZSBzc3djLW91dC1zZXJ2aWNlLWxpZmUgJyArIHJpc2tDbGFzcyhyLnNlcnZpY2VMaWZlKSk7DQogICAgICAgIHNldFRleHQoZWxzLnJlc3VsdE9wZXJhdGluZ1N0YXR1cywgci5vcGVyYXRpbmdTdGF0dXMpOw0KICAgICAgICBzZXRDbGFzcyhlbHMucmVzdWx0T3BlcmF0aW5nU3RhdHVzLCAnc3N3Yy1yZXN1bHQtdmFsdWUgc3N3Yy1vdXQtb3BlcmF0aW5nLXN0YXR1cyAnICsgcmlza0NsYXNzKHIub3BlcmF0aW5nU3RhdHVzKSk7DQoNCiAgICAgICAgaWYgKGVscy5zdGF0dXNCYW5uZXIpIHsNCiAgICAgICAgICAgIGVscy5zdGF0dXNCYW5uZXIuY2xhc3NOYW1lID0gJ3Nzd2Mtc3RhdHVzLWJhbm5lciAnICsgc3RhdHVzQmFubmVyQ2xhc3Moci5vcGVyYXRpbmdTdGF0dXMpOw0KICAgICAgICB9DQogICAgICAgIHNldFRleHQoZWxzLnN0YXR1c0ljb24sIHN0YXR1c0ljb24oci5vcGVyYXRpbmdTdGF0dXMpKTsNCiAgICAgICAgc2V0VGV4dChlbHMuc3RhdHVzVGl0bGUsICdTZWFsIE9wZXJhdGluZyBTdGF0dXM6ICcgKyByLm9wZXJhdGluZ1N0YXR1cyk7DQogICAgICAgIHNldFRleHQoZWxzLnN0YXR1c1N1Yiwgci53ZWFyUmlzayArICcgd2VhciByaXNrIHwgJyArIHIudGhlcm1hbFJpc2sgKw0KICAgICAgICAgICAgJyB0aGVybWFsIHJpc2sgfCBTZXJ2aWNlIGxpZmU6ICcgKyByLnNlcnZpY2VMaWZlKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7DQogICAgICAgIGRpc3BsYXlSZXN1bHRzKHZhbGlkYXRlSW5wdXRzKCkpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7DQogICAgICAgIGVscy51bml0UmFkaW9zLmZvckVhY2gocmFkaW8gPT4gew0KICAgICAgICAgICAgcmFkaW8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U3lzdGVtID0gdGhpcy52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgY29udmVydElucHV0c09uVW5pdENoYW5nZSh1bml0U3lzdGVtLCBuZXdTeXN0ZW0pOw0KICAgICAgICAgICAgICAgICAgICB1bml0U3lzdGVtID0gbmV3U3lzdGVtOw0KICAgICAgICAgICAgICAgICAgICB1cGRhdGVVbml0TGFiZWxzKCk7DQogICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1hdGVyaWFsRGVmYXVsdHMoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQoNCiAgICAgICAgZWxzLm1vdGlvblR5cGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdXBkYXRlTW90aW9uVmlzaWJpbGl0eSgpOw0KICAgICAgICB9KTsNCg0KICAgICAgICBlbHMubWF0ZXJpYWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgYWxsb3dTcGVlZE1hbnVhbCA9IGZhbHNlOw0KICAgICAgICAgICAgYWxsb3dQVk1hbnVhbCA9IGZhbHNlOw0KICAgICAgICAgICAgdXBkYXRlTWF0ZXJpYWxEZWZhdWx0cygpOw0KICAgICAgICB9KTsNCg0KICAgICAgICBlbHMuYWxsb3dTcGVlZC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGFsbG93U3BlZWRNYW51YWwgPSB0cnVlOw0KICAgICAgICB9KTsNCg0KICAgICAgICBlbHMuYWxsb3dQVi5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIGFsbG93UFZNYW51YWwgPSBlbHMuYWxsb3dQVi52YWx1ZSAhPT0gJyc7DQogICAgICAgIH0pOw0KDQogICAgICAgIGVscy5jYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGluaXQoKSB7DQogICAgICAgIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChST09UX0lEKTsNCiAgICAgICAgaWYgKCFyb290KSByZXR1cm47DQogICAgICAgIGJpbmRFbGVtZW50cygpOw0KICAgICAgICBiaW5kRXZlbnRzKCk7DQogICAgICAgIHVwZGF0ZVVuaXRMYWJlbHMoKTsNCiAgICAgICAgdXBkYXRlTW90aW9uVmlzaWJpbGl0eSgpOw0KICAgICAgICB1cGRhdGVNYXRlcmlhbERlZmF1bHRzKCk7DQogICAgfQ0KDQogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgew0KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdCk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgaW5pdCgpOw0KICAgIH0NCn0pKCk7DQo=<\/span><\/div>\n        <div class=\"sswc-container\">\n            <div class=\"sswc-layout\">\n                <section class=\"sswc-card sswc-input-section\">\n                    <h2>Input Parameters<\/h2>\n\n                    <h3 class=\"sswc-subsection-title\">General Settings<\/h3>\n                    <div class=\"sswc-input-grid\">\n                        <div class=\"sswc-form-group sswc-full-width\">\n                            <label>Unit System<\/label>\n                            <div class=\"sswc-unit-toggle\">\n                                <label class=\"sswc-radio-label\">\n                                    <input type=\"radio\" name=\"sswc-unitSystem\" value=\"metric\" checked>\n                                    <span>Metric (mm, MPa, &deg;C, m\/s)<\/span>\n                                <\/label>\n                                <label class=\"sswc-radio-label\">\n                                    <input type=\"radio\" name=\"sswc-unitSystem\" value=\"imperial\">\n                                    <span>Imperial (inch, psi, &deg;F, ft\/min)<\/span>\n                                <\/label>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-motionType\">\n                                Motion Type\n                                <span class=\"sswc-tooltip\" data-tip=\"Select rotary shaft, reciprocating rod, oscillating, or custom sliding motion.\">?<\/span>\n                            <\/label>\n                            <select id=\"sswc-motionType\">\n                                <option value=\"rotary\" selected>Rotary Shaft Seal<\/option>\n                                <option value=\"reciprocating\">Reciprocating Rod Seal<\/option>\n                                <option value=\"oscillating\">Oscillating Seal<\/option>\n                                <option value=\"custom\">Custom Sliding Seal<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-sealType\">Seal Type<\/label>\n                            <select id=\"sswc-sealType\">\n                                <option value=\"rotary-shaft\" selected>Rotary Shaft Seal<\/option>\n                                <option value=\"o-ring\">O-Ring<\/option>\n                                <option value=\"lip-seal\">Lip Seal<\/option>\n                                <option value=\"hydraulic-rod\">Hydraulic Rod Seal<\/option>\n                                <option value=\"piston\">Piston Seal<\/option>\n                                <option value=\"ptfe\">PTFE Seal<\/option>\n                                <option value=\"custom\">Custom<\/option>\n                            <\/select>\n                        <\/div>\n                    <\/div>\n\n                    <h3 class=\"sswc-subsection-title\">Motion Parameters<\/h3>\n                    <div class=\"sswc-input-grid\">\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-diameter\">\n                                Shaft \/ Rod Diameter\n                                <span class=\"sswc-tooltip\" data-tip=\"Nominal sealing diameter. Used for rotary surface speed: v = pi x D x n \/ 60.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-diameter\" value=\"50\" step=\"any\" min=\"0.001\">\n                                <span class=\"sswc-unit-label\" data-unit=\"length\">mm<\/span>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-diameterError\"><\/span>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-motion-rotary\">\n                            <label for=\"sswc-rpm\">\n                                Rotational Speed\n                                <span class=\"sswc-tooltip\" data-tip=\"Shaft rotational speed in revolutions per minute (rpm).\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-rpm\" value=\"1500\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\">rpm<\/span>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-rpmError\"><\/span>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-motion-recip sswc-hidden\" style=\"display:none\">\n                            <label for=\"sswc-stroke\">\n                                Stroke Length\n                                <span class=\"sswc-tooltip\" data-tip=\"Full reciprocating stroke length. Peak speed assumes approximately sinusoidal motion.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-stroke\" value=\"200\" step=\"any\" min=\"0.001\">\n                                <span class=\"sswc-unit-label\" data-unit=\"length\">mm<\/span>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-strokeError\"><\/span>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-motion-recip sswc-hidden\" style=\"display:none\">\n                            <label for=\"sswc-frequency\">\n                                Cycle Frequency\n                                <span class=\"sswc-tooltip\" data-tip=\"Reciprocating or oscillating cycles per second or per minute.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-frequency\" value=\"2\" step=\"any\" min=\"0\">\n                                <select id=\"sswc-frequencyUnit\" aria-label=\"Frequency unit\">\n                                    <option value=\"Hz\" selected>Hz<\/option>\n                                    <option value=\"cpm\">cycles\/min<\/option>\n                                <\/select>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-frequencyError\"><\/span>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-motion-oscillating sswc-hidden\" style=\"display:none\">\n                            <label for=\"sswc-oscAngle\">\n                                Oscillation Angle\n                                <span class=\"sswc-tooltip\" data-tip=\"Total oscillation angle in degrees. Arc stroke L = D x angle (radians).\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-oscAngle\" value=\"45\" step=\"any\" min=\"0.1\" max=\"360\">\n                                <span class=\"sswc-unit-label\">&deg;<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-motion-custom sswc-hidden\" style=\"display:none\">\n                            <label for=\"sswc-customSpeed\">\n                                Custom Sliding Speed\n                                <span class=\"sswc-tooltip\" data-tip=\"Direct entry of surface or sliding speed for custom applications.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-customSpeed\" value=\"1\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\" data-unit=\"speed\">m\/s<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <h3 class=\"sswc-subsection-title\">Seal &amp; Operating Conditions<\/h3>\n                    <div class=\"sswc-input-grid\">\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-pressure\">\n                                Operating Pressure\n                                <span class=\"sswc-tooltip\" data-tip=\"Contact or system operating pressure for PV calculation: PV = P x v.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-pressure\" value=\"0.2\" step=\"any\" min=\"0\">\n                                <select id=\"sswc-pressureUnit\" aria-label=\"Pressure unit\">\n                                    <option value=\"MPa\" selected>MPa<\/option>\n                                    <option value=\"bar\">bar<\/option>\n                                    <option value=\"psi\">psi<\/option>\n                                <\/select>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-temperature\">\n                                Operating Temperature\n                                <span class=\"sswc-tooltip\" data-tip=\"Fluid or ambient temperature at the seal contact zone.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-temperature\" value=\"80\" step=\"any\">\n                                <span class=\"sswc-unit-label\" data-unit=\"temperature\">&deg;C<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-material\">Seal Material<\/label>\n                            <select id=\"sswc-material\">\n                                <option value=\"NBR\">NBR<\/option>\n                                <option value=\"FKM\" selected>FKM<\/option>\n                                <option value=\"EPDM\">EPDM<\/option>\n                                <option value=\"HNBR\">HNBR<\/option>\n                                <option value=\"PTFE\">PTFE<\/option>\n                                <option value=\"Polyurethane\">Polyurethane<\/option>\n                                <option value=\"Silicone\">Silicone<\/option>\n                                <option value=\"Custom\">Custom<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-lubrication\">Lubrication Condition<\/label>\n                            <select id=\"sswc-lubrication\">\n                                <option value=\"excellent\">Excellent<\/option>\n                                <option value=\"good\" selected>Good<\/option>\n                                <option value=\"limited\">Limited<\/option>\n                                <option value=\"poor\">Poor<\/option>\n                                <option value=\"dry\">Dry Running<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional\">\n                            <label for=\"sswc-surfaceFinish\">\n                                Surface Finish (Ra)\n                                <span class=\"sswc-tooltip\" data-tip=\"Shaft or rod surface roughness. Lower Ra generally reduces seal wear.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-surfaceFinish\" value=\"0.4\" step=\"any\" min=\"0\">\n                                <select id=\"sswc-finishUnit\" aria-label=\"Surface finish unit\">\n                                    <option value=\"um\" selected>um Ra<\/option>\n                                    <option value=\"uin\">uin Ra<\/option>\n                                <\/select>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <h3 class=\"sswc-subsection-title\">Allowable Limits &amp; Optional Inputs<\/h3>\n                    <div class=\"sswc-input-grid\">\n                        <div class=\"sswc-form-group\">\n                            <label for=\"sswc-allowSpeed\">\n                                Allowable Surface Speed\n                                <span class=\"sswc-tooltip\" data-tip=\"Maximum recommended surface speed. Auto-filled from material reference; override with manufacturer data.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-allowSpeed\" value=\"10\" step=\"any\" min=\"0.001\">\n                                <span class=\"sswc-unit-label\" data-unit=\"speed\">m\/s<\/span>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-allowSpeedError\"><\/span>\n                            <p class=\"sswc-range-hint\" id=\"sswc-materialSpeedHint\"><\/p>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional\">\n                            <label for=\"sswc-allowPV\">\n                                Allowable PV Value\n                                <span class=\"sswc-tooltip\" data-tip=\"Optional manufacturer PV limit. Actual limits depend on material, geometry, and lubrication.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-allowPV\" placeholder=\"Optional\" step=\"any\" min=\"0.001\">\n                                <span class=\"sswc-unit-label\" data-unit=\"pv\">MPa&middot;m\/s<\/span>\n                            <\/div>\n                            <span class=\"sswc-error-msg\" id=\"sswc-allowPVError\"><\/span>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional\">\n                            <label for=\"sswc-frictionCoeff\">\n                                Friction Coefficient (mu)\n                                <span class=\"sswc-tooltip\" data-tip=\"Approximate friction coefficient for F = mu x N.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-frictionCoeff\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\">&mdash;<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional\">\n                            <label for=\"sswc-normalForce\">\n                                Estimated Normal Force\n                                <span class=\"sswc-tooltip\" data-tip=\"Approximate sealing contact force for friction power estimation.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-normalForce\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\" data-unit=\"force\">N<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional\">\n                            <label for=\"sswc-operatingTime\">\n                                Operating Time\n                                <span class=\"sswc-tooltip\" data-tip=\"Total operating hours for cumulative sliding distance.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-operatingTime\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\">hours<\/span>\n                            <\/div>\n                        <\/div>\n\n                        <div class=\"sswc-form-group sswc-optional sswc-motion-recip-field sswc-hidden\" style=\"display:none\">\n                            <label for=\"sswc-totalCycles\">\n                                Total Operating Cycles\n                                <span class=\"sswc-tooltip\" data-tip=\"For reciprocating wear: S = 2 x L x N.\">?<\/span>\n                            <\/label>\n                            <div class=\"sswc-input-with-unit\">\n                                <input type=\"number\" id=\"sswc-totalCycles\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                                <span class=\"sswc-unit-label\">cycles<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sswc-warnings\" id=\"sswc-warnings\" aria-live=\"polite\"><\/div>\n\n                    <div class=\"sswc-btn-row\">\n                        <button type=\"button\" id=\"sswc-calculateBtn\" class=\"sswc-btn sswc-btn-primary\">Calculate<\/button>\n                    <\/div>\n                <\/section>\n\n                <section class=\"sswc-card sswc-hidden\" id=\"sswc-resultsSection\" style=\"display:none\">\n                    <h2>Calculation Results<\/h2>\n\n                    <div class=\"sswc-status-banner\" id=\"sswc-statusBanner\">\n                        <span class=\"sswc-status-icon\" id=\"sswc-statusIcon\">&mdash;<\/span>\n                        <div>\n                            <strong id=\"sswc-statusTitle\">Seal Operating Status<\/strong>\n                            <p id=\"sswc-statusSub\">Enter values and calculate<\/p>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sswc-results-grid\">\n                        <div class=\"sswc-result-item sswc-highlight\">\n                            <span class=\"sswc-result-label\">Surface Speed<\/span>\n                            <span class=\"sswc-result-value sswc-out-surface-speed\" id=\"sswc-resultSurfaceSpeed\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item sswc-recip-only sswc-hidden\" style=\"display:none\">\n                            <span class=\"sswc-result-label\">Average Sliding Speed<\/span>\n                            <span class=\"sswc-result-value sswc-out-avg-speed\" id=\"sswc-resultAvgSpeed\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item sswc-recip-only sswc-hidden\" style=\"display:none\">\n                            <span class=\"sswc-result-label\">Peak Sliding Speed<\/span>\n                            <span class=\"sswc-result-value sswc-out-peak-speed\" id=\"sswc-resultPeakSpeed\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Allowable Surface Speed<\/span>\n                            <span class=\"sswc-result-value sswc-out-allow-speed\" id=\"sswc-resultAllowSpeed\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Speed Utilization<\/span>\n                            <span class=\"sswc-result-value sswc-out-speed-util\" id=\"sswc-resultSpeedUtil\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">PV Value<\/span>\n                            <span class=\"sswc-result-value sswc-out-pv\" id=\"sswc-resultPV\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">PV Utilization<\/span>\n                            <span class=\"sswc-result-value sswc-out-pv-util\" id=\"sswc-resultPVUtil\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Total Sliding Distance<\/span>\n                            <span class=\"sswc-result-value sswc-out-distance\" id=\"sswc-resultDistance\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Estimated Friction Power<\/span>\n                            <span class=\"sswc-result-value sswc-out-friction-power\" id=\"sswc-resultFrictionPower\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Wear Index<\/span>\n                            <span class=\"sswc-result-value sswc-out-wear-index\" id=\"sswc-resultWearIndex\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Wear Risk Level<\/span>\n                            <span class=\"sswc-result-value sswc-out-wear-risk\" id=\"sswc-resultWearRisk\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Thermal Risk<\/span>\n                            <span class=\"sswc-result-value sswc-out-thermal-risk\" id=\"sswc-resultThermalRisk\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Service Life Indicator<\/span>\n                            <span class=\"sswc-result-value sswc-out-service-life\" id=\"sswc-resultServiceLife\">&mdash;<\/span>\n                        <\/div>\n                        <div class=\"sswc-result-item\">\n                            <span class=\"sswc-result-label\">Seal Operating Status<\/span>\n                            <span class=\"sswc-result-value sswc-out-operating-status\" id=\"sswc-resultOperatingStatus\">&mdash;<\/span>\n                        <\/div>\n                    <\/div>\n                <\/section>\n            <\/div>\n        <\/div>\n    <\/div>\n\n<script type=\"text\/javascript\">(function(){var r=document.getElementById(\"seal-speed-wear-calculator\");if(!r)return;var p=r.querySelectorAll(\".sswc-js-chunk\"),b=\"\",i;for(i=0;i<p.length;i++)b+=p[i].textContent;if(!b)return;try{(new Function(atob(b)))();}catch(e){console.error(\"Seal Speed Wear Calculator failed:\",e);}})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The Seal Surface Speed and Wear Check Calculator is a practical engineering tool designed to calculate seal surface speed and evaluate potential wear under rotary&#8230;<\/p>","protected":false},"author":2,"featured_media":24747,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8520],"tags":[8637,8636,8635,8471],"class_list":["post-24746","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-seal-analysis","tag-seal-speed","tag-seal-wear","tag-surface-speed","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Seal-Surface-Speed-and-Wear-Check-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/comments?post=24746"}],"version-history":[{"count":6,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24746\/revisions"}],"predecessor-version":[{"id":24753,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24746\/revisions\/24753"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media\/24747"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media?parent=24746"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/categories?post=24746"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/tags?post=24746"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}