{"id":24767,"date":"2026-08-28T06:20:44","date_gmt":"2026-08-28T06:20:44","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24767"},"modified":"2026-08-28T06:20:47","modified_gmt":"2026-08-28T06:20:47","slug":"tensile-strength-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/es\/tensile-strength-calculator\/","title":{"rendered":"Tensile Strength Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Tensile Strength Calculator<\/strong> is a practical engineering tool designed to calculate tensile stress, allowable load, ultimate tensile capacity, required cross-sectional area, and safety factor for components under axial tension. By entering material strength, applied load, and component dimensions, users can quickly evaluate structural performance and potential failure risks. The Tensile Strength Calculator is ideal for rods, bars, plates, wires, and other mechanical components, helping engineers optimize material selection, component sizing, and design safety.<\/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<!-- All CSS\/JS scoped to #tensile-strength-calculator. Will NOT affect theme header, footer, menus, or other page content. -->\n<style>\n\/* Scoped to #tensile-strength-calculator \u2014 safe for WordPress embed *\/\n#tensile-strength-calculator {\n    all: revert;\n    --tsc-primary: #0c4a6e;\n    --tsc-primary-dark: #082f49;\n    --tsc-primary-bg: #e0f2fe;\n    --tsc-accent: #0369a1;\n    --tsc-success: #059669;\n    --tsc-success-bg: #ecfdf5;\n    --tsc-warning: #d97706;\n    --tsc-warning-bg: #fffbeb;\n    --tsc-danger: #dc2626;\n    --tsc-danger-bg: #fef2f2;\n    --tsc-text: #0f172a;\n    --tsc-text-muted: #64748b;\n    --tsc-border: #cbd5e1;\n    --tsc-card-bg: #ffffff;\n    --tsc-radius: 10px;\n    --tsc-shadow: 0 2px 12px rgba(12, 74, 110, 0.08);\n    --tsc-font: 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n\n    box-sizing: border-box;\n    display: block;\n    isolation: isolate;\n    contain: layout style;\n    float: none;\n    position: relative;\n    z-index: auto;\n    font-family: var(--tsc-font);\n    font-size: 16px;\n    font-weight: 400;\n    line-height: 1.6;\n    color: var(--tsc-text);\n    background: transparent;\n    text-align: left;\n    letter-spacing: normal;\n    text-transform: none;\n    max-width: 1000px;\n    width: 100%;\n    margin: 0 auto;\n    padding: 24px 16px 48px;\n}\n\n#tensile-strength-calculator *,\n#tensile-strength-calculator *::before,\n#tensile-strength-calculator *::after {\n    box-sizing: border-box;\n}\n\n#tensile-strength-calculator h1,\n#tensile-strength-calculator h2,\n#tensile-strength-calculator h3,\n#tensile-strength-calculator h4,\n#tensile-strength-calculator p,\n#tensile-strength-calculator ul,\n#tensile-strength-calculator ol,\n#tensile-strength-calculator li,\n#tensile-strength-calculator section,\n#tensile-strength-calculator div,\n#tensile-strength-calculator span,\n#tensile-strength-calculator strong,\n#tensile-strength-calculator em,\n#tensile-strength-calculator sub,\n#tensile-strength-calculator sup {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n    box-shadow: none;\n    font-family: inherit;\n    font-size: inherit;\n    font-weight: inherit;\n    font-style: inherit;\n    line-height: inherit;\n    color: inherit;\n    letter-spacing: inherit;\n    text-transform: none;\n    text-decoration: none;\n    float: none;\n}\n\n#tensile-strength-calculator button,\n#tensile-strength-calculator input,\n#tensile-strength-calculator select,\n#tensile-strength-calculator label {\n    font: inherit;\n    color: inherit;\n    margin: 0;\n    max-width: none;\n    min-width: 0;\n    float: none;\n}\n\n#tensile-strength-calculator button {\n    cursor: pointer;\n    background: transparent;\n    border: none;\n    padding: 0;\n    box-shadow: none;\n    text-decoration: none;\n    appearance: none;\n    -webkit-appearance: none;\n}\n\n#tensile-strength-calculator svg {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n\n#tensile-strength-calculator sub,\n#tensile-strength-calculator sup {\n    font-size: 75%;\n    line-height: 0;\n    position: relative;\n    vertical-align: baseline;\n}\n\n#tensile-strength-calculator sub {\n    bottom: -0.2em;\n}\n\n#tensile-strength-calculator sup {\n    top: -0.45em;\n}\n\n#tensile-strength-calculator .tsc-layout {\n    display: flex;\n    flex-direction: column;\n    gap: 1.25rem;\n}\n\n#tensile-strength-calculator .tsc-card {\n    background: var(--tsc-card-bg);\n    border: 1px solid var(--tsc-border);\n    border-radius: var(--tsc-radius);\n    box-shadow: var(--tsc-shadow);\n    padding: 1.5rem;\n    border-top: 3px solid var(--tsc-accent);\n}\n\n#tensile-strength-calculator .tsc-card h2 {\n    font-size: 1.1rem;\n    font-weight: 700;\n    color: var(--tsc-primary);\n    margin: 0 0 1rem;\n    padding-bottom: 0.5rem;\n    border-bottom: 2px solid var(--tsc-primary-bg);\n}\n\n#tensile-strength-calculator .tsc-subsection-title {\n    font-size: 0.78rem;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.06em;\n    color: var(--tsc-text-muted);\n    margin: 1rem 0 0.65rem;\n}\n\n#tensile-strength-calculator .tsc-input-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 0.85rem 1rem;\n}\n\n@media (max-width: 640px) {\n    #tensile-strength-calculator .tsc-input-grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n#tensile-strength-calculator .tsc-full-width {\n    grid-column: 1 \/ -1;\n}\n\n#tensile-strength-calculator .tsc-form-group {\n    display: flex;\n    flex-direction: column;\n    gap: 0.35rem;\n}\n\n#tensile-strength-calculator .tsc-form-group label {\n    font-size: 0.85rem;\n    font-weight: 600;\n    display: flex;\n    align-items: center;\n    gap: 0.35rem;\n    flex-wrap: wrap;\n}\n\n#tensile-strength-calculator .tsc-tooltip {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 1.1rem;\n    height: 1.1rem;\n    border-radius: 50%;\n    background: var(--tsc-primary-bg);\n    color: var(--tsc-accent);\n    font-size: 0.7rem;\n    font-weight: 700;\n    cursor: help;\n    position: relative;\n}\n\n#tensile-strength-calculator .tsc-tooltip::after {\n    content: attr(data-tip);\n    position: absolute;\n    bottom: calc(100% + 6px);\n    left: 50%;\n    transform: translateX(-50%);\n    width: max-content;\n    max-width: 260px;\n    padding: 0.5rem 0.65rem;\n    background: #1e293b;\n    color: #fff;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1.4;\n    border-radius: 6px;\n    opacity: 0;\n    visibility: hidden;\n    pointer-events: none;\n    transition: opacity 0.15s;\n    z-index: 100;\n}\n\n#tensile-strength-calculator .tsc-tooltip:hover::after {\n    opacity: 1;\n    visibility: visible;\n}\n\n#tensile-strength-calculator input[type=\"number\"],\n#tensile-strength-calculator select {\n    width: 100%;\n    padding: 0.55rem 0.65rem;\n    border: 1px solid var(--tsc-border);\n    border-radius: 6px;\n    font-size: 0.9rem;\n    font-family: inherit;\n    background: #fff;\n    appearance: none;\n    -webkit-appearance: none;\n    box-shadow: none;\n    outline: none;\n    min-height: 0;\n    height: auto;\n}\n\n#tensile-strength-calculator input.tsc-error,\n#tensile-strength-calculator select.tsc-error {\n    border-color: var(--tsc-danger);\n    background: var(--tsc-danger-bg);\n}\n\n#tensile-strength-calculator .tsc-input-with-unit {\n    display: grid;\n    grid-template-columns: 1fr auto;\n    gap: 0.35rem;\n}\n\n#tensile-strength-calculator .tsc-input-with-unit select {\n    min-width: 4.5rem;\n}\n\n#tensile-strength-calculator .tsc-hidden {\n    display: none !important;\n}\n\n#tensile-strength-calculator .tsc-field-error {\n    font-size: 0.75rem;\n    color: var(--tsc-danger);\n    min-height: 1rem;\n}\n\n#tensile-strength-calculator .tsc-actions {\n    display: flex;\n    justify-content: center;\n    gap: 0.75rem;\n    margin-top: 1.25rem;\n    flex-wrap: wrap;\n}\n\n#tensile-strength-calculator .tsc-btn {\n    padding: 0.65rem 1.5rem;\n    border: none;\n    border-radius: 8px;\n    font-size: 0.95rem;\n    font-weight: 600;\n    font-family: inherit;\n    cursor: pointer;\n    transition: background 0.2s, transform 0.1s;\n    appearance: none;\n    -webkit-appearance: none;\n    box-shadow: none;\n    text-decoration: none;\n    line-height: 1.4;\n}\n\n#tensile-strength-calculator .tsc-btn-primary {\n    background: var(--tsc-accent);\n    color: #fff;\n    min-width: 220px;\n}\n\n#tensile-strength-calculator .tsc-btn-primary:hover {\n    background: var(--tsc-primary);\n}\n\n#tensile-strength-calculator .tsc-btn-secondary {\n    background: #fff;\n    color: var(--tsc-text);\n    border: 1px solid var(--tsc-border);\n    min-width: 100px;\n}\n\n#tensile-strength-calculator .tsc-btn-secondary:hover {\n    background: var(--tsc-primary-bg);\n}\n\n#tensile-strength-calculator .tsc-results-hero {\n    text-align: center;\n    padding: 1.25rem;\n    border-radius: var(--tsc-radius);\n    margin-bottom: 1rem;\n}\n\n#tensile-strength-calculator .tsc-results-hero.tsc-safe {\n    background: var(--tsc-success-bg);\n    border: 1px solid var(--tsc-success);\n}\n\n#tensile-strength-calculator .tsc-results-hero.tsc-caution {\n    background: var(--tsc-warning-bg);\n    border: 1px solid var(--tsc-warning);\n}\n\n#tensile-strength-calculator .tsc-results-hero.tsc-unsafe {\n    background: var(--tsc-danger-bg);\n    border: 1px solid var(--tsc-danger);\n}\n\n#tensile-strength-calculator .tsc-hero-value {\n    font-size: 2.2rem;\n    font-weight: 800;\n    line-height: 1.1;\n}\n\n#tensile-strength-calculator .tsc-hero-label {\n    font-size: 0.85rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: var(--tsc-text-muted);\n    margin-top: 0.25rem;\n}\n\n#tensile-strength-calculator .tsc-status-badge {\n    display: inline-block;\n    margin-top: 0.5rem;\n    padding: 0.25rem 0.85rem;\n    border-radius: 999px;\n    font-size: 0.8rem;\n    font-weight: 700;\n    text-transform: uppercase;\n}\n\n#tensile-strength-calculator .tsc-safe .tsc-status-badge {\n    background: var(--tsc-success);\n    color: #fff;\n}\n\n#tensile-strength-calculator .tsc-caution .tsc-status-badge {\n    background: var(--tsc-warning);\n    color: #fff;\n}\n\n#tensile-strength-calculator .tsc-unsafe .tsc-status-badge {\n    background: var(--tsc-danger);\n    color: #fff;\n}\n\n#tensile-strength-calculator .tsc-result-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 0.65rem 1rem;\n}\n\n@media (max-width: 640px) {\n    #tensile-strength-calculator .tsc-result-grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n#tensile-strength-calculator .tsc-result-item {\n    padding: 0.65rem 0.75rem;\n    background: #f8fafc;\n    border-radius: 6px;\n    border: 1px solid var(--tsc-border);\n}\n\n#tensile-strength-calculator .tsc-result-label {\n    font-size: 0.72rem;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.04em;\n    color: var(--tsc-text-muted);\n}\n\n#tensile-strength-calculator .tsc-result-value {\n    font-size: 1rem;\n    font-weight: 700;\n    margin-top: 0.15rem;\n}\n\n#tensile-strength-calculator .tsc-util-bar-wrap {\n    margin: 1rem 0;\n}\n\n#tensile-strength-calculator .tsc-util-bar-label {\n    display: flex;\n    justify-content: space-between;\n    font-size: 0.8rem;\n    font-weight: 600;\n    margin-bottom: 0.35rem;\n}\n\n#tensile-strength-calculator .tsc-util-bar {\n    height: 12px;\n    background: #e2e8f0;\n    border-radius: 999px;\n    overflow: hidden;\n}\n\n#tensile-strength-calculator .tsc-util-bar-fill {\n    height: 100%;\n    border-radius: 999px;\n    transition: width 0.3s, background 0.3s;\n    max-width: 100%;\n}\n\n#tensile-strength-calculator .tsc-viz-row {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 1rem;\n    margin-top: 1rem;\n}\n\n@media (max-width: 640px) {\n    #tensile-strength-calculator .tsc-viz-row {\n        grid-template-columns: 1fr;\n    }\n}\n\n#tensile-strength-calculator .tsc-viz-box {\n    background: #f8fafc;\n    border: 1px solid var(--tsc-border);\n    border-radius: var(--tsc-radius);\n    padding: 0.75rem;\n    text-align: center;\n}\n\n#tensile-strength-calculator .tsc-viz-box h4 {\n    font-size: 0.75rem;\n    font-weight: 700;\n    text-transform: uppercase;\n    color: var(--tsc-text-muted);\n    margin: 0 0 0.5rem;\n}\n\n#tensile-strength-calculator .tsc-viz-box svg {\n    max-width: 100%;\n    height: auto;\n    margin: 0 auto;\n    display: block;\n}\n\n#tensile-strength-calculator .tsc-warnings {\n    margin-top: 1rem;\n}\n\n#tensile-strength-calculator .tsc-warning-item {\n    padding: 0.65rem 0.85rem;\n    border-radius: 6px;\n    font-size: 0.85rem;\n    margin-bottom: 0.5rem;\n    border-left: 3px solid;\n}\n\n#tensile-strength-calculator .tsc-warn-info {\n    background: #eff6ff;\n    border-color: #2563eb;\n    color: #1e40af;\n}\n\n#tensile-strength-calculator .tsc-warn-caution {\n    background: var(--tsc-warning-bg);\n    border-color: var(--tsc-warning);\n    color: #92400e;\n}\n\n#tensile-strength-calculator .tsc-warn-danger {\n    background: var(--tsc-danger-bg);\n    border-color: var(--tsc-danger);\n    color: #991b1b;\n}\n\n#tensile-strength-calculator .tsc-recommendations ul {\n    margin: 0.5rem 0 0;\n    padding-left: 1.25rem;\n    font-size: 0.88rem;\n}\n\n#tensile-strength-calculator .tsc-recommendations li {\n    margin-bottom: 0.35rem;\n}\n\n#tensile-strength-calculator .tsc-js-store,\n#tensile-strength-calculator .tsc-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<\/style>\n\n<div id=\"tensile-strength-calculator\"><div class=\"tsc-js-store\" aria-hidden=\"true\" hidden><span class=\"tsc-js-chunk\">KGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICB2YXIgUk9PVF9JRCA9ICd0ZW5zaWxlLXN0cmVuZ3RoLWNhbGN1bGF0b3InOwoKICAgIHZhciBNQVRFUklBTFMgPSB7CiAgICAgICAgJ3N0cnVjdHVyYWwtc3RlZWwnOiB7IHN5OiAzNTUsIHN1OiA1MTAsIGU6IDIwMCwgbGFiZWw6ICdTdHJ1Y3R1cmFsIFN0ZWVsJyB9LAogICAgICAgICdjYXJib24tc3RlZWwnOiB7IHN5OiAyNTAsIHN1OiA0MDAsIGU6IDIwMCwgbGFiZWw6ICdDYXJib24gU3RlZWwnIH0sCiAgICAgICAgJ2FsbG95LXN0ZWVsJzogeyBzeTogNjkwLCBzdTogODYwLCBlOiAyMDUsIGxhYmVsOiAnQWxsb3kgU3RlZWwnIH0sCiAgICAgICAgJ3N0YWlubGVzcy1zdGVlbCc6IHsgc3k6IDIwNSwgc3U6IDUxNSwgZTogMTkzLCBsYWJlbDogJ1N0YWlubGVzcyBTdGVlbCcgfSwKICAgICAgICAnYWx1bWludW0tYWxsb3knOiB7IHN5OiAyNzYsIHN1OiAzMTAsIGU6IDY5LCBsYWJlbDogJ0FsdW1pbnVtIEFsbG95JyB9LAogICAgICAgICd0aXRhbml1bS1hbGxveSc6IHsgc3k6IDg4MCwgc3U6IDk1MCwgZTogMTE0LCBsYWJlbDogJ1RpdGFuaXVtIEFsbG95JyB9LAogICAgICAgIGJyYXNzOiB7IHN5OiAxMjQsIHN1OiAzMzgsIGU6IDk3LCBsYWJlbDogJ0JyYXNzJyB9LAogICAgICAgIGNvcHBlcjogeyBzeTogNzAsIHN1OiAyMjAsIGU6IDExNywgbGFiZWw6ICdDb3BwZXInIH0sCiAgICAgICAgY3VzdG9tOiB7IHN5OiBudWxsLCBzdTogbnVsbCwgZTogbnVsbCwgbGFiZWw6ICdDdXN0b20gTWF0ZXJpYWwnIH0KICAgIH07CgogICAgdmFyIENPTVBPTkVOVF9TRUNUSU9OID0gewogICAgICAgICdyb3VuZC1yb2QnOiAnc29saWQtcm91bmQnLAogICAgICAgICdob2xsb3ctdHViZSc6ICdob2xsb3ctcm91bmQnLAogICAgICAgICdyZWN0YW5ndWxhci1iYXInOiAncmVjdGFuZ2xlJywKICAgICAgICAnZmxhdC1wbGF0ZSc6ICdyZWN0YW5nbGUnLAogICAgICAgIHdpcmU6ICdzb2xpZC1yb3VuZCcsCiAgICAgICAgJ2N1c3RvbS1zZWN0aW9uJzogJ2N1c3RvbS1hcmVhJwogICAgfTsKCiAgICB2YXIgREVGQVVMVFMgPSB7CiAgICAgICAgdW5pdFN5c3RlbTogJ21ldHJpYycsCiAgICAgICAgY2FsY01vZGU6ICdzdHJlc3MtY2hlY2snLAogICAgICAgIGNvbXBvbmVudFR5cGU6ICdyb3VuZC1yb2QnLAogICAgICAgIHNlY3Rpb25UeXBlOiAnc29saWQtcm91bmQnLAogICAgICAgIGRpYW1ldGVyOiAyMCwKICAgICAgICBvdXRlckRpYW1ldGVyOiAyNSwKICAgICAgICBpbm5lckRpYW1ldGVyOiAyMCwKICAgICAgICB3aWR0aDogNDAsCiAgICAgICAgdGhpY2tuZXNzOiAxMCwKICAgICAgICBjdXN0b21BcmVhOiAnJywKICAgICAgICBuZXRBcmVhOiAnJywKICAgICAgICBhcHBsaWVkTG9hZDogNTAsCiAgICAgICAgbG9hZFVuaXQ6ICdrTicsCiAgICAgICAgbWF0ZXJpYWw6ICdzdHJ1Y3R1cmFsLXN0ZWVsJywKICAgICAgICB5aWVsZFN0cmVuZ3RoOiAzNTUsCiAgICAgICAgdWx0aW1hdGVTdHJlbmd0aDogNTEwLAogICAgICAgIHN0cmVuZ3RoUmVmOiAneWllbGQnLAogICAgICAgIGN1c3RvbUFsbG93YWJsZTogJycsCiAgICAgICAgZGVzaWduU2Y6IDIuMCwKICAgICAgICBrdDogMS4wLAogICAgICAgIHlvdW5nc01vZHVsdXM6IDIwMCwKICAgICAgICBtb2R1bHVzVW5pdDogJ0dQYScsCiAgICAgICAgZ2F1Z2VMZW5ndGg6ICcnLAogICAgICAgIGdhdWdlVW5pdDogJ21tJwogICAgfTsKCiAgICB2YXIgTVBBX1RPX1BTSSA9IDE0NS4wMzc3MzgwMDc7CiAgICB2YXIgUFNJX1RPX01QQSA9IDEgLyBNUEFfVE9fUFNJOwogICAgdmFyIEtOX1RPX04gPSAxMDAwOwogICAgdmFyIExCRl9UT19OID0gNC40NDgyMjE2MTUzOwogICAgdmFyIElOMl9UT19NTTIgPSA2NDUuMTY7CiAgICB2YXIgR1BBX1RPX01QQSA9IDEwMDA7CgogICAgdmFyIHJvb3QsIGVscywgbWFudWFsTWF0ZXJpYWxFZGl0OwoKICAgIGZ1bmN0aW9uICQoaWQpIHsKICAgICAgICByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZU51bSh2KSB7CiAgICAgICAgaWYgKHYgPT09ICcnIHx8IHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgbiA9IHBhcnNlRmxvYXQoU3RyaW5nKHYpLnJlcGxhY2UoJywnLCAnLicpKTsKICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjsKICAgIH0KCiAgICB2YXIgRU1QVFkgPSAnLSc7CgogICAgZnVuY3Rpb24gZm10KHYsIGQpIHsKICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgIWlzRmluaXRlKHYpKSByZXR1cm4gRU1QVFk7CiAgICAgICAgcmV0dXJuIHYudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgewogICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsCiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogZCAhPT0gdW5kZWZpbmVkID8gZCA6IDIKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc01ldHJpYygpIHsKICAgICAgICByZXR1cm4gZWxzLnVuaXRTeXN0ZW0udmFsdWUgPT09ICdtZXRyaWMnOwogICAgfQoKICAgIGZ1bmN0aW9uIHRvTWV0cmljTGVuZ3RoKHYsIHVuaXQpIHsKICAgICAgICByZXR1cm4gdW5pdCA9PT0gJ21tJyA\/IHYgOiB2ICogMjUuNDsKICAgIH0KCiAgICBmdW5jdGlvbiBmcm9tTWV0cmljTGVuZ3RoKHYsIHVuaXQpIHsKICAgICAgICByZXR1cm4gdW5pdCA9PT0gJ21tJyA\/IHYgOiB2IC8gMjUuNDsKICAgIH0KCiAgICBmdW5jdGlvbiBpc01ldHJpY0FyZWFVbml0KHVuaXQpIHsKICAgICAgICByZXR1cm4gdW5pdCA9PT0gJ21tMicgfHwgdW5pdCA9PT0gJ21tXHUwMGIyJzsKICAgIH0KCiAgICBmdW5jdGlvbiB0b01ldHJpY0FyZWEodiwgdW5pdCkgewogICAgICAgIHJldHVybiBpc01ldHJpY0FyZWFVbml0KHVuaXQpID8gdiA6IHYgKiBJTjJfVE9fTU0yOwogICAgfQoKICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNBcmVhKHYsIHVuaXQpIHsKICAgICAgICByZXR1cm4gaXNNZXRyaWNBcmVhVW5pdCh1bml0KSA\/IHYgOiB2IC8gSU4yX1RPX01NMjsKICAgIH0KCiAgICBmdW5jdGlvbiB0b01ldHJpY0ZvcmNlKHYsIHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gJ04nKSByZXR1cm4gdjsKICAgICAgICBpZiAodW5pdCA9PT0gJ2tOJykgcmV0dXJuIHYgKiBLTl9UT19OOwogICAgICAgIHJldHVybiB2ICogTEJGX1RPX047CiAgICB9CgogICAgZnVuY3Rpb24gZnJvbU1ldHJpY0ZvcmNlKHYsIHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gJ04nKSByZXR1cm4gdjsKICAgICAgICBpZiAodW5pdCA9PT0gJ2tOJykgcmV0dXJuIHYgLyBLTl9UT19OOwogICAgICAgIHJldHVybiB2IC8gTEJGX1RPX047CiAgICB9CgogICAgZnVuY3Rpb24gdG9NZXRyaWNTdHJlc3ModiwgdW5pdCkgewogICAgICAgIHJldHVybiB1bml0ID09PSAnTVBhJyA\/IHYgOiB2ICogUFNJX1RPX01QQTsKICAgIH0KCiAgICBmdW5jdGlvbiBmcm9tTWV0cmljU3RyZXNzKHYsIHVuaXQpIHsKICAgICAgICByZXR1cm4gdW5pdCA9PT0gJ01QYScgPyB2IDogdiAqIE1QQV9UT19QU0k7CiAgICB9CgogICAgZnVuY3Rpb24gdG9NZXRyaWNNb2R1bHVzKHYsIHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gJ0dQYScpIHJldHVybiB2ICogR1BBX1RPX01QQTsKICAgICAgICBpZiAodW5pdCA9PT0gJ01QYScpIHJldHVybiB2OwogICAgICAgIHJldHVybiB2ICogUFNJX1RPX01QQTsKICAgIH0KCiAgICBmdW5jdGlvbiBkaXNwbGF5U3RyZXNzKG1wYSkgewogICAgICAgIHJldHVybiBpc01ldHJpYygpID8gbXBhIDogbXBhICogTVBBX1RPX1BTSTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdHJlc3NVbml0TGFiZWwoKSB7CiAgICAgICAgcmV0dXJuIGlzTWV0cmljKCkgPyAnTVBhJyA6ICdwc2knOwogICAgfQoKICAgIGZ1bmN0aW9uIGFyZWFVbml0TGFiZWwoKSB7CiAgICAgICAgcmV0dXJuIGlzTWV0cmljKCkgPyAnbW0yJyA6ICdpbjInOwogICAgfQoKICAgIGZ1bmN0aW9uIGxlbmd0aFVuaXRMYWJlbCgpIHsKICAgICAgICByZXR1cm4gaXNNZXRyaWMoKSA\/ICdtbScgOiAnaW4nOwogICAgfQoKICAgIGZ1bmN0aW9uIGZvcmNlVW5pdExhYmVsKCkgewogICAgICAgIHJldHVybiBlbHMubG9hZFVuaXQudmFsdWU7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0VmlzaWJsZShzZWxlY3Rvciwgc2hvdykgewogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnRvZ2dsZSgndHNjLWhpZGRlbicsICFzaG93KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBjbGVhckVycm9ycygpIHsKICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy50c2MtZXJyb3InKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCd0c2MtZXJyb3InKTsKICAgICAgICB9<\/span><span class=\"tsc-js-chunk\">KTsKICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy50c2MtZmllbGQtZXJyb3InKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9ICcnOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldEZpZWxkRXJyb3IoaW5wdXRJZCwgZXJySWQsIG1zZykgewogICAgICAgIHZhciBpbnB1dCA9ICQoaW5wdXRJZCk7CiAgICAgICAgdmFyIGVyciA9ICQoZXJySWQpOwogICAgICAgIGlmIChpbnB1dCkgaW5wdXQuY2xhc3NMaXN0LmFkZCgndHNjLWVycm9yJyk7CiAgICAgICAgaWYgKGVycikgZXJyLnRleHRDb250ZW50ID0gbXNnIHx8ICcnOwogICAgICAgIHJldHVybiAhIW1zZzsKICAgIH0KCiAgICBmdW5jdGlvbiBjYWxjU29saWRSb3VuZEFyZWEoZE1tKSB7CiAgICAgICAgcmV0dXJuIE1hdGguUEkgKiBkTW0gKiBkTW0gLyA0OwogICAgfQoKICAgIGZ1bmN0aW9uIGNhbGNIb2xsb3dSb3VuZEFyZWEob2RNbSwgaWRNbSkgewogICAgICAgIHJldHVybiBNYXRoLlBJICogKG9kTW0gKiBvZE1tIC0gaWRNbSAqIGlkTW0pIC8gNDsKICAgIH0KCiAgICBmdW5jdGlvbiBjYWxjUmVjdEFyZWEod01tLCB0TW0pIHsKICAgICAgICByZXR1cm4gd01tICogdE1tOwogICAgfQoKICAgIGZ1bmN0aW9uIGNhbGNSZXF1aXJlZERpYW1ldGVyKGFyZWFNbTIpIHsKICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KDQgKiBhcmVhTW0yIC8gTWF0aC5QSSk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0Q3Jvc3NTZWN0aW9uQXJlYSgpIHsKICAgICAgICB2YXIgc2VjdGlvbiA9IGVscy5zZWN0aW9uVHlwZS52YWx1ZTsKICAgICAgICB2YXIgbmV0ID0gcGFyc2VOdW0oZWxzLm5ldEFyZWEudmFsdWUpOwogICAgICAgIGlmIChuZXQgIT09IG51bGwgJiYgbmV0ID4gMCkgewogICAgICAgICAgICByZXR1cm4gdG9NZXRyaWNBcmVhKG5ldCwgZWxzLm5ldEFyZWFVbml0LnZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWN0aW9uID09PSAnY3VzdG9tLWFyZWEnKSB7CiAgICAgICAgICAgIHZhciBjYSA9IHBhcnNlTnVtKGVscy5jdXN0b21BcmVhLnZhbHVlKTsKICAgICAgICAgICAgaWYgKGNhID09PSBudWxsIHx8IGNhIDw9IDApIHJldHVybiBudWxsOwogICAgICAgICAgICByZXR1cm4gdG9NZXRyaWNBcmVhKGNhLCBlbHMuY3VzdG9tQXJlYVVuaXQudmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdzb2xpZC1yb3VuZCcpIHsKICAgICAgICAgICAgdmFyIGQgPSBwYXJzZU51bShlbHMuZGlhbWV0ZXIudmFsdWUpOwogICAgICAgICAgICBpZiAoZCA9PT0gbnVsbCB8fCBkIDw9IDApIHJldHVybiBudWxsOwogICAgICAgICAgICByZXR1cm4gY2FsY1NvbGlkUm91bmRBcmVhKHRvTWV0cmljTGVuZ3RoKGQsIGVscy5kaWFtZXRlclVuaXQudmFsdWUpKTsKICAgICAgICB9CgogICAgICAgIGlmIChzZWN0aW9uID09PSAnaG9sbG93LXJvdW5kJykgewogICAgICAgICAgICB2YXIgb2QgPSBwYXJzZU51bShlbHMub3V0ZXJEaWFtZXRlci52YWx1ZSk7CiAgICAgICAgICAgIHZhciBpZCA9IHBhcnNlTnVtKGVscy5pbm5lckRpYW1ldGVyLnZhbHVlKTsKICAgICAgICAgICAgaWYgKG9kID09PSBudWxsIHx8IG9kIDw9IDAgfHwgaWQgPT09IG51bGwgfHwgaWQgPCAwKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgdmFyIG9kTW0gPSB0b01ldHJpY0xlbmd0aChvZCwgZWxzLm91dGVyRGlhbWV0ZXJVbml0LnZhbHVlKTsKICAgICAgICAgICAgdmFyIGlkTW0gPSB0b01ldHJpY0xlbmd0aChpZCwgZWxzLmlubmVyRGlhbWV0ZXJVbml0LnZhbHVlKTsKICAgICAgICAgICAgaWYgKGlkTW0gPj0gb2RNbSkgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIHJldHVybiBjYWxjSG9sbG93Um91bmRBcmVhKG9kTW0sIGlkTW0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdyZWN0YW5nbGUnKSB7CiAgICAgICAgICAgIHZhciB3ID0gcGFyc2VOdW0oZWxzLndpZHRoLnZhbHVlKTsKICAgICAgICAgICAgdmFyIHQgPSBwYXJzZU51bShlbHMudGhpY2tuZXNzLnZhbHVlKTsKICAgICAgICAgICAgaWYgKHcgPT09IG51bGwgfHwgdyA8PSAwIHx8IHQgPT09IG51bGwgfHwgdCA8PSAwKSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgcmV0dXJuIGNhbGNSZWN0QXJlYSgKICAgICAgICAgICAgICAgIHRvTWV0cmljTGVuZ3RoKHcsIGVscy53aWR0aFVuaXQudmFsdWUpLAogICAgICAgICAgICAgICAgdG9NZXRyaWNMZW5ndGgodCwgZWxzLnRoaWNrbmVzc1VuaXQudmFsdWUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRSZWZlcmVuY2VTdHJlbmd0aE1wYShzeU1wYSwgc3VNcGEpIHsKICAgICAgICB2YXIgcmVmID0gZWxzLnN0cmVuZ3RoUmVmLnZhbHVlOwogICAgICAgIGlmIChyZWYgPT09ICd5aWVsZCcpIHJldHVybiBzeU1wYTsKICAgICAgICBpZiAocmVmID09PSAndWx0aW1hdGUnKSByZXR1cm4gc3VNcGE7CiAgICAgICAgdmFyIGN1c3RvbSA9IHBhcnNlTnVtKGVscy5jdXN0b21BbGxvd2FibGUudmFsdWUpOwogICAgICAgIGlmIChjdXN0b20gPT09IG51bGwgfHwgY3VzdG9tIDw9IDApIHJldHVybiBudWxsOwogICAgICAgIHJldHVybiB0b01ldHJpY1N0cmVzcyhjdXN0b20sIHN0cmVzc1VuaXRMYWJlbCgpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRTYWZldHlTdGF0dXModXRpbFBjdCwgc2ZBY3R1YWwsIGRlc2lnblNmLCBzaWdtYUFjdHVhbCwgc2lnbWFBbGxvdywgc3lNcGEsIHN1TXBhKSB7CiAgICAgICAgaWYgKHNpZ21hQWN0dWFsID4gc3VNcGEgfHwgdXRpbFBjdCA+IDEwMCB8fCBzZkFjdHVhbCA8IDEpIHJldHVybiAndW5zYWZlJzsKICAgICAgICBpZiAodXRpbFBjdCA+PSA4NSB8fCBzZkFjdHVhbCA8IGRlc2lnblNmIHx8IHNpZ21hQWN0dWFsID4gc3lNcGEpIHJldHVybiAnY2F1dGlvbic7CiAgICAgICAgaWYgKHV0aWxQY3QgPj0gNzAgfHwgc2ZBY3R1YWwgPCBkZXNpZ25TZiAqIDEuMSkgcmV0dXJuICdjYXV0aW9uJzsKICAgICAgICByZXR1cm4gJ3NhZmUnOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZUZpZWxkVmlzaWJpbGl0eSgpIHsKICAgICAgICB2YXIgc2VjdGlvbiA9IGVscy5zZWN0aW9uVHlwZS52YWx1ZTsKICAgICAgICB2YXIgbW9kZSA9IGVscy5jYWxjTW9kZS52YWx1ZTsKICAgICAgICB2YXIgc2l6aW5nTW9kZSA9IG1vZGUgPT09ICdyZXF1aXJlZC1hcmVhJyB8fCBtb2RlID09PSAncmVxdWlyZWQtZGlhbWV0ZXInOwogICAgICAgIHZhciBuZWVkc0dlb21ldHJ5ID0gbW9kZSA9PT0gJ3N0cmVzcy1jaGVjaycgfHwgbW9kZSA9PT0gJ21heC1sb2FkJyB8fCBtb2RlID09PSAnYWxsb3dhYmxlLWxvYWQnOwoKICAgICAgICBzZXRWaXNpYmxlKCcudHNjLWZpZWxkLXNvbGlkJywgbmVlZHNHZW9tZXRyeSAmJiBzZWN0aW9uID09PSAnc29saWQtcm91bmQnKTsKICAgICAgICBzZXRWaXNpYmxlKCcudHNjLWZpZWxkLWhvbGxvdycsIG5lZWRzR2VvbWV0cnkgJiYgc2VjdGlvbiA9PT0gJ2hvbGxvdy1yb3VuZCcpOwogICAgICAgIHNldFZpc2libGUoJy50c2MtZmllbGQtcmVjdCcsIG5lZWRzR2VvbWV0cnkgJiYgc2VjdGlvbiA9PT0gJ3JlY3RhbmdsZScpOwogICAgICAgIHNldFZpc2libGUoJy50c2MtZmllbGQtY3VzdG9tLWFyZWEnLCBuZWVkc0dlb21ldHJ5ICYmIHNlY3Rpb24gPT09ICdjdXN0b20tYXJlYScpOwogICAgICAgIHNldFZpc2libGUoJy50c2MtZmllbGQtbmV0LWFyZWEnLCBuZWVkc0dlb21ldHJ5KTsKICAgICAgICBzZXRWaXNpYmxlKCcudHNjLWZpZWxkLWxvYWQnLCBtb2RlICE9PSAnbWF4LWxvYWQnICYmIG1vZGUgIT09ICdhbGxvd2FibGUtbG9hZCcpOwogICAgICAgIHNldFZpc2libGUoJy50c2MtZmllbGQtY3VzdG9tLWFsbG93JywgZWxzLnN0cmVuZ3RoUmVmLnZhbHVlID09PSAnY3VzdG9tJyk7CiAgICAgICAgc2V0VmlzaWJsZSgnLnRzYy1maWVsZC1lbG9uZ2F0aW9uJywgbW9kZSA9PT0gJ3N0cmVzcy1jaGVjaycpOwoKICAgICAgICBlbHMuZ2VvbWV0cnlTZWN0aW9uLmNsYXNzTGlzdC50b2dnbGUoJ3RzYy1oaWRkZW4nLCBzaXppbmdNb2RlKTsKICAgICAgICBlbHMuc2VjdGlvblJvdy5jbGFzc0xpc3QudG9nZ2xlKCd0c2MtaGlkZGVuJywgc2l6aW5nTW9kZSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3luY0NvbXBvbmVudFRvU2VjdGlvbigpIHsKICAgICAgICB2YXIgY29tcCA9IGVscy5jb21wb25lbnRUeXBlLnZhbHVlOwogICAgICAgIHZhciBtYXBwZWQgPSBDT01QT05FTlRfU0VDVElPTltjb21wXTsKICAgICAgICBpZiAobWFwcGVkICYmIGVscy5zZWN0aW9uVHlwZS52YWx1ZSAhPT0gbWFwcGVkKSB7CiAgICAgICAgICAgIGVscy5zZWN0aW9uVHlwZS52YWx1ZSA9IG1hcHBlZDsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHlNYXRlcmlhbFByZXNldCgpIHsKICAgICAgICBpZiAobWFudWFsTWF0ZXJpYWxFZGl0KSByZXR1cm47CiAgICAg<\/span><span class=\"tsc-js-chunk\">ICAgdmFyIG1hdCA9IE1BVEVSSUFMU1tlbHMubWF0ZXJpYWwudmFsdWVdOwogICAgICAgIGlmICghbWF0IHx8IG1hdC5zeSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICAgIGVscy55aWVsZFN0cmVuZ3RoLnZhbHVlID0gZm10KGRpc3BsYXlTdHJlc3MobWF0LnN5KSwgMSk7CiAgICAgICAgZWxzLnVsdGltYXRlU3RyZW5ndGgudmFsdWUgPSBmbXQoZGlzcGxheVN0cmVzcyhtYXQuc3UpLCAxKTsKICAgICAgICBpZiAobWF0LmUgIT09IG51bGwpIHsKICAgICAgICAgICAgaWYgKGlzTWV0cmljKCkpIHsKICAgICAgICAgICAgICAgIGVscy55b3VuZ3NNb2R1bHVzLnZhbHVlID0gbWF0LmU7CiAgICAgICAgICAgICAgICBlbHMubW9kdWx1c1VuaXQudmFsdWUgPSAnR1BhJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVscy55b3VuZ3NNb2R1bHVzLnZhbHVlID0gZm10KG1hdC5lICogTVBBX1RPX1BTSSwgMCk7CiAgICAgICAgICAgICAgICBlbHMubW9kdWx1c1VuaXQudmFsdWUgPSAncHNpJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVVbml0TGFiZWxzKCkgewogICAgICAgIHZhciBzdSA9IHN0cmVzc1VuaXRMYWJlbCgpOwogICAgICAgIHZhciBhdSA9IGFyZWFVbml0TGFiZWwoKTsKICAgICAgICB2YXIgbHUgPSBsZW5ndGhVbml0TGFiZWwoKTsKCiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10c2MtdW5pdD0ic3RyZXNzIl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IHN1OwogICAgICAgIH0pOwogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdHNjLXVuaXQ9ImFyZWEiXScpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gYXU7CiAgICAgICAgfSk7CiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10c2MtdW5pdD0ibGVuZ3RoIl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IGx1OwogICAgICAgIH0pOwoKICAgICAgICBpZiAoaXNNZXRyaWMoKSkgewogICAgICAgICAgICBlbHMuZGlhbWV0ZXJVbml0LnZhbHVlID0gJ21tJzsKICAgICAgICAgICAgZWxzLm91dGVyRGlhbWV0ZXJVbml0LnZhbHVlID0gJ21tJzsKICAgICAgICAgICAgZWxzLmlubmVyRGlhbWV0ZXJVbml0LnZhbHVlID0gJ21tJzsKICAgICAgICAgICAgZWxzLndpZHRoVW5pdC52YWx1ZSA9ICdtbSc7CiAgICAgICAgICAgIGVscy50aGlja25lc3NVbml0LnZhbHVlID0gJ21tJzsKICAgICAgICAgICAgZWxzLmN1c3RvbUFyZWFVbml0LnZhbHVlID0gJ21tMic7CiAgICAgICAgICAgIGVscy5uZXRBcmVhVW5pdC52YWx1ZSA9ICdtbTInOwogICAgICAgICAgICBlbHMuZ2F1Z2VVbml0LnZhbHVlID0gJ21tJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbHMuZGlhbWV0ZXJVbml0LnZhbHVlID0gJ2luJzsKICAgICAgICAgICAgZWxzLm91dGVyRGlhbWV0ZXJVbml0LnZhbHVlID0gJ2luJzsKICAgICAgICAgICAgZWxzLmlubmVyRGlhbWV0ZXJVbml0LnZhbHVlID0gJ2luJzsKICAgICAgICAgICAgZWxzLndpZHRoVW5pdC52YWx1ZSA9ICdpbic7CiAgICAgICAgICAgIGVscy50aGlja25lc3NVbml0LnZhbHVlID0gJ2luJzsKICAgICAgICAgICAgZWxzLmN1c3RvbUFyZWFVbml0LnZhbHVlID0gJ2luMic7CiAgICAgICAgICAgIGVscy5uZXRBcmVhVW5pdC52YWx1ZSA9ICdpbjInOwogICAgICAgICAgICBlbHMuZ2F1Z2VVbml0LnZhbHVlID0gJ2luJzsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gY29udmVydFZhbHVlc09uVW5pdENoYW5nZSgpIHsKICAgICAgICB2YXIgd2FzTWV0cmljID0gcm9vdC5kYXRhc2V0LnByZXZVbml0ICE9PSAnaW1wZXJpYWwnOwogICAgICAgIHZhciBub3dNZXRyaWMgPSBpc01ldHJpYygpOwogICAgICAgIGlmICh3YXNNZXRyaWMgPT09IG5vd01ldHJpYykgcmV0dXJuOwoKICAgICAgICBmdW5jdGlvbiBjb252TGVuZ3RoKHZhbCwgZWwpIHsKICAgICAgICAgICAgdmFyIG4gPSBwYXJzZU51bSh2YWwpOwogICAgICAgICAgICBpZiAobiA9PT0gbnVsbCkgcmV0dXJuOwogICAgICAgICAgICBlbC52YWx1ZSA9IGZtdChub3dNZXRyaWMgPyBuICogMjUuNCA6IG4gLyAyNS40LCAzKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNvbnZBcmVhKHZhbCwgZWwpIHsKICAgICAgICAgICAgdmFyIG4gPSBwYXJzZU51bSh2YWwpOwogICAgICAgICAgICBpZiAobiA9PT0gbnVsbCkgcmV0dXJuOwogICAgICAgICAgICBlbC52YWx1ZSA9IGZtdChub3dNZXRyaWMgPyBuICogSU4yX1RPX01NMiA6IG4gLyBJTjJfVE9fTU0yLCA0KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNvbnZTdHJlc3ModmFsLCBlbCkgewogICAgICAgICAgICB2YXIgbiA9IHBhcnNlTnVtKHZhbCk7CiAgICAgICAgICAgIGlmIChuID09PSBudWxsKSByZXR1cm47CiAgICAgICAgICAgIGVsLnZhbHVlID0gZm10KG5vd01ldHJpYyA\/IG4gKiBQU0lfVE9fTVBBIDogbiAqIE1QQV9UT19QU0ksIDEpOwogICAgICAgIH0KCiAgICAgICAgY29udkxlbmd0aChlbHMuZGlhbWV0ZXIudmFsdWUsIGVscy5kaWFtZXRlcik7CiAgICAgICAgY29udkxlbmd0aChlbHMub3V0ZXJEaWFtZXRlci52YWx1ZSwgZWxzLm91dGVyRGlhbWV0ZXIpOwogICAgICAgIGNvbnZMZW5ndGgoZWxzLmlubmVyRGlhbWV0ZXIudmFsdWUsIGVscy5pbm5lckRpYW1ldGVyKTsKICAgICAgICBjb252TGVuZ3RoKGVscy53aWR0aC52YWx1ZSwgZWxzLndpZHRoKTsKICAgICAgICBjb252TGVuZ3RoKGVscy50aGlja25lc3MudmFsdWUsIGVscy50aGlja25lc3MpOwogICAgICAgIGNvbnZBcmVhKGVscy5jdXN0b21BcmVhLnZhbHVlLCBlbHMuY3VzdG9tQXJlYSk7CiAgICAgICAgY29udkFyZWEoZWxzLm5ldEFyZWEudmFsdWUsIGVscy5uZXRBcmVhKTsKICAgICAgICBjb252U3RyZXNzKGVscy55aWVsZFN0cmVuZ3RoLnZhbHVlLCBlbHMueWllbGRTdHJlbmd0aCk7CiAgICAgICAgY29udlN0cmVzcyhlbHMudWx0aW1hdGVTdHJlbmd0aC52YWx1ZSwgZWxzLnVsdGltYXRlU3RyZW5ndGgpOwogICAgICAgIGNvbnZTdHJlc3MoZWxzLmN1c3RvbUFsbG93YWJsZS52YWx1ZSwgZWxzLmN1c3RvbUFsbG93YWJsZSk7CiAgICAgICAgY29udkxlbmd0aChlbHMuZ2F1Z2VMZW5ndGgudmFsdWUsIGVscy5nYXVnZUxlbmd0aCk7CgogICAgICAgIHJvb3QuZGF0YXNldC5wcmV2VW5pdCA9IG5vd01ldHJpYyA\/ICdtZXRyaWMnIDogJ2ltcGVyaWFsJzsKICAgIH0KCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0cygpIHsKICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgIHZhciBoYXNFcnJvciA9IGZhbHNlOwogICAgICAgIHZhciBtb2RlID0gZWxzLmNhbGNNb2RlLnZhbHVlOwogICAgICAgIHZhciBzZWN0aW9uID0gZWxzLnNlY3Rpb25UeXBlLnZhbHVlOwoKICAgICAgICB2YXIgc3kgPSBwYXJzZU51bShlbHMueWllbGRTdHJlbmd0aC52YWx1ZSk7CiAgICAgICAgdmFyIHN1ID0gcGFyc2VOdW0oZWxzLnVsdGltYXRlU3RyZW5ndGgudmFsdWUpOwogICAgICAgIHZhciBzZiA9IHBhcnNlTnVtKGVscy5kZXNpZ25TZi52YWx1ZSk7CiAgICAgICAgdmFyIGt0ID0gcGFyc2VOdW0oZWxzLmt0LnZhbHVlKTsKCiAgICAgICAgaWYgKHN5ID09PSBudWxsIHx8IHN5IDw9IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjWWllbGRTdHJlbmd0aCcsICd0c2NZaWVsZEVycicsICdFbnRlciBhIHBvc2l0aXZlIHlpZWxkIHN0cmVuZ3RoLicpOwogICAgICAgIGlmIChzdSA9PT0gbnVsbCB8fCBzdSA8PSAwKSBoYXNFcnJvciA9IHNldEZpZWxkRXJyb3IoJ3RzY1VsdGltYXRlU3RyZW5ndGgnLCAndHNjVWx0aW1hdGVFcnInLCAnRW50ZXIgYSBwb3NpdGl2ZSB1bHRpbWF0ZSBzdHJlbmd0aC4nKSB8fCBoYXNFcnJvcjsKICAgICAgICBpZiAoc2YgPT09IG51bGwgfHwgc2YgPD0gMCkgaGFzRXJyb3IgPSBzZXRGaWVsZEVycm9yKCd0c2NEZXNpZ25TZicsICd0c2NEZXNpZ25TZkVycicsICdTYWZldHkgZmFjdG9yIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJykgfHwgaGFzRXJyb3I7CiAgICAgICAgaWYgKGt0ID09PSBudWxsIHx8IGt0IDw9IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjS3QnLCAndHNjS3RFcnInLCAnS3QgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nKSB8fCBoYXNFcnJvcjsKCiAgICAgICAgaWYgKGVscy5zdHJlbmd0aFJlZi52YWx1ZSA9PT0gJ2N1c3RvbScpIHsKICAgICAgICAgICAgdmFyIGNhID0gcGFyc2VOdW0oZWxzLmN1c3RvbUFsbG93YWJsZS52YWx1ZSk7CiAgICAgICAgICAgIGlmIChjYSA9PT0gbnVsbCB8fCBjYSA8PSAwKSB7CiAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHNldEZpZWxkRXJyb3IoJ3RzY0N1c3RvbUFsbG93YWJsZScsICd0c2NDdXN0b21BbGxvd0VycicsICdFbnRlciBh<\/span><span class=\"tsc-js-chunk\">IHBvc2l0aXZlIGN1c3RvbSBhbGxvd2FibGUgc3RyZXNzLicpIHx8IGhhc0Vycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgbmVlZHNHZW9tZXRyeSA9IG1vZGUgPT09ICdzdHJlc3MtY2hlY2snIHx8IG1vZGUgPT09ICdtYXgtbG9hZCcgfHwgbW9kZSA9PT0gJ2FsbG93YWJsZS1sb2FkJzsKCiAgICAgICAgaWYgKG5lZWRzR2VvbWV0cnkgJiYgc2VjdGlvbiA9PT0gJ3NvbGlkLXJvdW5kJykgewogICAgICAgICAgICB2YXIgZCA9IHBhcnNlTnVtKGVscy5kaWFtZXRlci52YWx1ZSk7CiAgICAgICAgICAgIGlmIChkID09PSBudWxsIHx8IGQgPD0gMCkgaGFzRXJyb3IgPSBzZXRGaWVsZEVycm9yKCd0c2NEaWFtZXRlcicsICd0c2NEaWFtZXRlckVycicsICdEaWFtZXRlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLicpIHx8IGhhc0Vycm9yOwogICAgICAgIH0gZWxzZSBpZiAobmVlZHNHZW9tZXRyeSAmJiBzZWN0aW9uID09PSAnaG9sbG93LXJvdW5kJykgewogICAgICAgICAgICB2YXIgb2QgPSBwYXJzZU51bShlbHMub3V0ZXJEaWFtZXRlci52YWx1ZSk7CiAgICAgICAgICAgIHZhciBpZCA9IHBhcnNlTnVtKGVscy5pbm5lckRpYW1ldGVyLnZhbHVlKTsKICAgICAgICAgICAgaWYgKG9kID09PSBudWxsIHx8IG9kIDw9IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjT3V0ZXJEaWFtZXRlcicsICd0c2NPdXRlckRpYW1ldGVyRXJyJywgJ091dGVyIGRpYW1ldGVyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJykgfHwgaGFzRXJyb3I7CiAgICAgICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA8IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjSW5uZXJEaWFtZXRlcicsICd0c2NJbm5lckRpYW1ldGVyRXJyJywgJ0lubmVyIGRpYW1ldGVyIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKSB8fCBoYXNFcnJvcjsKICAgICAgICAgICAgaWYgKG9kICE9PSBudWxsICYmIGlkICE9PSBudWxsICYmIGlkID49IG9kKSB7CiAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHNldEZpZWxkRXJyb3IoJ3RzY0lubmVyRGlhbWV0ZXInLCAndHNjSW5uZXJEaWFtZXRlckVycicsICdJbm5lciBkaWFtZXRlciBtdXN0IGJlIGxlc3MgdGhhbiBvdXRlciBkaWFtZXRlci4nKSB8fCBoYXNFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAobmVlZHNHZW9tZXRyeSAmJiBzZWN0aW9uID09PSAncmVjdGFuZ2xlJykgewogICAgICAgICAgICB2YXIgdyA9IHBhcnNlTnVtKGVscy53aWR0aC52YWx1ZSk7CiAgICAgICAgICAgIHZhciB0ID0gcGFyc2VOdW0oZWxzLnRoaWNrbmVzcy52YWx1ZSk7CiAgICAgICAgICAgIGlmICh3ID09PSBudWxsIHx8IHcgPD0gMCkgaGFzRXJyb3IgPSBzZXRGaWVsZEVycm9yKCd0c2NXaWR0aCcsICd0c2NXaWR0aEVycicsICdXaWR0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLicpIHx8IGhhc0Vycm9yOwogICAgICAgICAgICBpZiAodCA9PT0gbnVsbCB8fCB0IDw9IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjVGhpY2tuZXNzJywgJ3RzY1RoaWNrbmVzc0VycicsICdUaGlja25lc3MgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nKSB8fCBoYXNFcnJvcjsKICAgICAgICB9IGVsc2UgaWYgKG5lZWRzR2VvbWV0cnkgJiYgc2VjdGlvbiA9PT0gJ2N1c3RvbS1hcmVhJykgewogICAgICAgICAgICB2YXIgY3VzdG9tQSA9IHBhcnNlTnVtKGVscy5jdXN0b21BcmVhLnZhbHVlKTsKICAgICAgICAgICAgaWYgKGN1c3RvbUEgPT09IG51bGwgfHwgY3VzdG9tQSA8PSAwKSBoYXNFcnJvciA9IHNldEZpZWxkRXJyb3IoJ3RzY0N1c3RvbUFyZWEnLCAndHNjQ3VzdG9tQXJlYUVycicsICdFbnRlciBhIHBvc2l0aXZlIGNyb3NzLXNlY3Rpb25hbCBhcmVhLicpIHx8IGhhc0Vycm9yOwogICAgICAgIH0KCiAgICAgICAgaWYgKG5lZWRzR2VvbWV0cnkpIHsKICAgICAgICAgICAgdmFyIG5ldCA9IHBhcnNlTnVtKGVscy5uZXRBcmVhLnZhbHVlKTsKICAgICAgICAgICAgaWYgKG5ldCAhPT0gbnVsbCAmJiBuZXQgPD0gMCkgaGFzRXJyb3IgPSBzZXRGaWVsZEVycm9yKCd0c2NOZXRBcmVhJywgJ3RzY05ldEFyZWFFcnInLCAnTmV0IGFyZWEgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nKSB8fCBoYXNFcnJvcjsKICAgICAgICB9CgogICAgICAgIGlmIChtb2RlICE9PSAnbWF4LWxvYWQnICYmIG1vZGUgIT09ICdhbGxvd2FibGUtbG9hZCcpIHsKICAgICAgICAgICAgdmFyIGxvYWQgPSBwYXJzZU51bShlbHMuYXBwbGllZExvYWQudmFsdWUpOwogICAgICAgICAgICBpZiAobG9hZCA9PT0gbnVsbCB8fCBsb2FkIDw9IDApIGhhc0Vycm9yID0gc2V0RmllbGRFcnJvcigndHNjQXBwbGllZExvYWQnLCAndHNjQXBwbGllZExvYWRFcnInLCAnQXBwbGllZCBsb2FkIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJykgfHwgaGFzRXJyb3I7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gIWhhc0Vycm9yOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1aWxkUmVjb21tZW5kYXRpb25zKHIpIHsKICAgICAgICB2YXIgaXRlbXMgPSBbXTsKICAgICAgICBpZiAoci5zdGF0dXMgPT09ICd1bnNhZmUnKSB7CiAgICAgICAgICAgIGl0ZW1zLnB1c2goJ0luY3JlYXNlIHRoZSBjcm9zcy1zZWN0aW9uYWwgYXJlYSB0byByZWR1Y2UgdGVuc2lsZSBzdHJlc3MgYmVsb3cgdGhlIGFsbG93YWJsZSBsaW1pdC4nKTsKICAgICAgICAgICAgaWYgKGVscy5zZWN0aW9uVHlwZS52YWx1ZSA9PT0gJ3NvbGlkLXJvdW5kJyB8fCBlbHMuY2FsY01vZGUudmFsdWUgPT09ICdyZXF1aXJlZC1kaWFtZXRlcicpIHsKICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goJ0luY3JlYXNlIHRoZSByb2Qgb3Igd2lyZSBkaWFtZXRlciBmb3Igcm91bmQgY29tcG9uZW50cy4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpdGVtcy5wdXNoKCdDb25zaWRlciBhIGhpZ2hlci1zdHJlbmd0aCBtYXRlcmlhbCBpZiBnZW9tZXRyeSBjYW5ub3QgYmUgY2hhbmdlZC4nKTsKICAgICAgICAgICAgaXRlbXMucHVzaCgnUmVkdWNlIHRoZSBhcHBsaWVkIHRlbnNpbGUgbG9hZCBpZiBvcGVyYXRpb25hbGx5IGZlYXNpYmxlLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci5zaWdtYUFjdHVhbE1wYSA+IHIuc3lNcGEpIHsKICAgICAgICAgICAgaXRlbXMucHVzaCgnQWN0dWFsIHN0cmVzcyBleGNlZWRzIHlpZWxkIHN0cmVuZ3RoIOKAlCBwZXJtYW5lbnQgZGVmb3JtYXRpb24gbWF5IG9jY3VyLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci5zaWdtYUxvY2FsTXBhID4gci5zeU1wYSAmJiByLmt0ID4gMSkgewogICAgICAgICAgICBpdGVtcy5wdXNoKCdSZWR1Y2Ugc3RyZXNzIGNvbmNlbnRyYXRpb25zIGFyb3VuZCBob2xlcywgdGhyZWFkcywgbm90Y2hlcywgb3IgZmlsbGV0IHJhZGlpLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci5rdCA+PSAyKSB7CiAgICAgICAgICAgIGl0ZW1zLnB1c2goJ1N0cmVzcyBjb25jZW50cmF0aW9uIGZhY3RvciBpcyBzaWduaWZpY2FudCDigJQgdmVyaWZ5IGxvY2FsIHN0cmVzcyB3aXRoIHN0cmVzcyBjb25jZW50cmF0aW9uIGNoYXJ0cyBvciBGRUEuJyk7CiAgICAgICAgfQogICAgICAgIGlmIChwYXJzZU51bShlbHMubmV0QXJlYS52YWx1ZSkgPT09IG51bGwgJiYgKGVscy5zZWN0aW9uVHlwZS52YWx1ZSAhPT0gJ2N1c3RvbS1hcmVhJykpIHsKICAgICAgICAgICAgaXRlbXMucHVzaCgnVXNlIG5ldCBzZWN0aW9uIGFyZWEgd2hlbiBib2x0IGhvbGVzLCBzbG90cywgb3IgdGhyZWFkcyByZWR1Y2UgdGhlIGxvYWQtYmVhcmluZyBzZWN0aW9uLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci5zdGF0dXMgPT09ICdjYXV0aW9uJykgewogICAgICAgICAgICBpdGVtcy5wdXNoKCdTdHJlc3MgYXBwcm9hY2hlcyB0aGUgYWxsb3dhYmxlIGxpbWl0IOKAlCBjb25zaWRlciBpbmNyZWFzaW5nIHRoZSBkZXNpZ24gc2FmZXR5IGZhY3RvciBmb3IgY3JpdGljYWwgYXBwbGljYXRpb25zLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci51dGlsUGN0ID4gNTAgJiYgci51dGlsUGN0IDw9IDg1KSB7CiAgICAgICAgICAgIGl0ZW1zLnB1c2goJ01vbml0b3IgbG9hZGluZyBjb25kaXRpb25zOyByZXBlYXRlZCB0ZW5zaWxlIGN5Y2xlcyBtYXkgcmVxdWlyZSBmYXRpZ3VlIGFuYWx5c2lzLicpOwogICAgICAgIH0KICAgICAgICBpZiAoci5lbG9uZ2F0aW9uQmV5b25kWWllbGQpIHsKICAgICAgICAgICAgaXRlbXMucHVzaCgnRWxhc3RpYyBlbG9uZ2F0aW9uIGVzdGltYXRlIGV4Y2VlZHMgeWllbGQgcmVnaW9uIOKAlCByZXN1bHQgaXMgbm90IHZhbGlkIGZvciBwbGFzdGljIGRlZm9ybWF0aW9uLicpOwogICAgICAgIH0KICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGl0ZW1zLnB1c2goJ0N1cnJlbnQgZGVzaWduIGFwcGVhcnMgYWRlcXVhdGUgZm9yIHRoZSBzcGVjaWZpZWQgdGVuc2lsZSBsb2FkIGFuZCBzYWZldHkgZmFjdG9yLicpOwogICAgICAgICAgICBpdGVtcy5wdXNo<\/span><span class=\"tsc-js-chunk\">KCdWZXJpZnkgY29ubmVjdGlvbiBkZXRhaWxzLCBsb2FkIHBhdGhzLCBhbmQgYXBwbGljYWJsZSBkZXNpZ24gY29kZXMgZm9yIGZpbmFsIGFwcHJvdmFsLicpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaXRlbXM7CiAgICB9CgogICAgZnVuY3Rpb24gZHJhd1RlbnNpbGVEaWFncmFtKHN2ZywgbG9hZE4pIHsKICAgICAgICB2YXIgbWF4QXJyb3cgPSA0MDsKICAgICAgICB2YXIgc2NhbGUgPSBNYXRoLm1pbihtYXhBcnJvdywgTWF0aC5tYXgoMTgsIE1hdGguc3FydChsb2FkTiAvIDEwMDApICogNCkpOwogICAgICAgIHN2Zy5pbm5lckhUTUwgPQogICAgICAgICAgICAnPHJlY3QgeD0iNTAiIHk9IjU1IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjE4IiByeD0iMyIgZmlsbD0iI2NiZDVlMSIgc3Ryb2tlPSIjNjQ3NDhiIiBzdHJva2Utd2lkdGg9IjEuNSIvPicgKwogICAgICAgICAgICAnPGxpbmUgeDE9IjMwIiB5MT0iNjQiIHgyPSI1MCIgeTI9IjY0IiBzdHJva2U9IiMwMzY5YTEiIHN0cm9rZS13aWR0aD0iMiIvPicgKwogICAgICAgICAgICAnPHBvbHlnb24gcG9pbnRzPSInICsgKDMwIC0gc2NhbGUpICsgJyw2NCAzMCwnICsgKDY0IC0gc2NhbGUgKiAwLjM1KSArICcgMzAsJyArICg2NCArIHNjYWxlICogMC4zNSkgKyAnIiBmaWxsPSIjMDM2OWExIi8+JyArCiAgICAgICAgICAgICc8bGluZSB4MT0iMTcwIiB5MT0iNjQiIHgyPSIxOTAiIHkyPSI2NCIgc3Ryb2tlPSIjMDM2OWExIiBzdHJva2Utd2lkdGg9IjIiLz4nICsKICAgICAgICAgICAgJzxwb2x5Z29uIHBvaW50cz0iJyArICgxOTAgKyBzY2FsZSkgKyAnLDY0IDE5MCwnICsgKDY0IC0gc2NhbGUgKiAwLjM1KSArICcgMTkwLCcgKyAoNjQgKyBzY2FsZSAqIDAuMzUpICsgJyIgZmlsbD0iIzAzNjlhMSIvPicgKwogICAgICAgICAgICAnPHRleHQgeD0iMTEwIiB5PSI0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMCIgZmlsbD0iIzMzNDE1NSI+QXhpYWwgVGVuc2lvbjwvdGV4dD4nICsKICAgICAgICAgICAgJzx0ZXh0IHg9IjIyIiB5PSI2OCIgdGV4dC1hbmNob3I9ImVuZCIgZm9udC1zaXplPSI5IiBmaWxsPSIjMDM2OWExIj5GPC90ZXh0PicgKwogICAgICAgICAgICAnPHRleHQgeD0iMTk4IiB5PSI2OCIgZm9udC1zaXplPSI5IiBmaWxsPSIjMDM2OWExIj5GPC90ZXh0Pic7CiAgICB9CgogICAgZnVuY3Rpb24gZHJhd1NlY3Rpb25EaWFncmFtKHN2Zywgc2VjdGlvbikgewogICAgICAgIHZhciBpbm5lciA9ICcnOwogICAgICAgIGlmIChzZWN0aW9uID09PSAnc29saWQtcm91bmQnKSB7CiAgICAgICAgICAgIGlubmVyID0gJzxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIzNSIgZmlsbD0iI2UyZThmMCIgc3Ryb2tlPSIjNDc1NTY5IiBzdHJva2Utd2lkdGg9IjIiLz4nICsKICAgICAgICAgICAgICAgICc8bGluZSB4MT0iNjUiIHkxPSI3MCIgeDI9IjEzNSIgeTI9IjcwIiBzdHJva2U9IiNkYzI2MjYiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtZGFzaGFycmF5PSI0IDMiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSIxMDAiIHk9Ijc0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjkiIGZpbGw9IiNkYzI2MjYiPmQ8L3RleHQ+JzsKICAgICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdob2xsb3ctcm91bmQnKSB7CiAgICAgICAgICAgIGlubmVyID0gJzxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIzOCIgZmlsbD0iI2UyZThmMCIgc3Ryb2tlPSIjNDc1NTY5IiBzdHJva2Utd2lkdGg9IjIiLz4nICsKICAgICAgICAgICAgICAgICc8Y2lyY2xlIGN4PSIxMDAiIGN5PSI3MCIgcj0iMjIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iIzQ3NTU2OSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSIxMDAiIHk9IjMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjkiIGZpbGw9IiM0NzU1NjkiPkQgLyBkPC90ZXh0Pic7CiAgICAgICAgfSBlbHNlIGlmIChzZWN0aW9uID09PSAncmVjdGFuZ2xlJykgewogICAgICAgICAgICBpbm5lciA9ICc8cmVjdCB4PSI1NSIgeT0iNDAiIHdpZHRoPSI5MCIgaGVpZ2h0PSI1NSIgZmlsbD0iI2UyZThmMCIgc3Ryb2tlPSIjNDc1NTY5IiBzdHJva2Utd2lkdGg9IjIiLz4nICsKICAgICAgICAgICAgICAgICc8dGV4dCB4PSIxMDAiIHk9IjExNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSI5IiBmaWxsPSIjNDc1NTY5Ij5iIMOXIHQ8L3RleHQ+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbm5lciA9ICc8cmVjdCB4PSI2MCIgeT0iNDUiIHdpZHRoPSI4MCIgaGVpZ2h0PSI1MCIgZmlsbD0iI2YxZjVmOSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSAzIi8+JyArCiAgICAgICAgICAgICAgICAnPHRleHQgeD0iMTAwIiB5PSI3NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMCIgZmlsbD0iIzY0NzQ4YiI+Q3VzdG9tIEE8L3RleHQ+JzsKICAgICAgICB9CiAgICAgICAgc3ZnLmlubmVySFRNTCA9IGlubmVyOwogICAgfQoKICAgIGZ1bmN0aW9uIGRyYXdVdGlsR2F1Z2Uoc3ZnLCB1dGlsUGN0KSB7CiAgICAgICAgdmFyIHBjdCA9IE1hdGgubWluKE1hdGgubWF4KHV0aWxQY3QsIDApLCAxNTApOwogICAgICAgIHZhciBhbmdsZSA9IC0xODAgKyAocGN0IC8gMTAwKSAqIDE4MDsKICAgICAgICB2YXIgcmFkID0gKGFuZ2xlICogTWF0aC5QSSkgLyAxODA7CiAgICAgICAgdmFyIGN4ID0gMTAwLCBjeSA9IDk1LCByID0gNTU7CiAgICAgICAgdmFyIG54ID0gY3ggKyByICogTWF0aC5jb3MocmFkKTsKICAgICAgICB2YXIgbnkgPSBjeSArIHIgKiBNYXRoLnNpbihyYWQpOwogICAgICAgIHZhciBjb2xvciA9IHBjdCA+IDEwMCA\/ICcjZGMyNjI2JyA6IHBjdCA+IDg1ID8gJyNkOTc3MDYnIDogJyMwNTk2NjknOwogICAgICAgIHN2Zy5pbm5lckhUTUwgPQogICAgICAgICAgICAnPHBhdGggZD0iTSA0NSA5NSBBIDU1IDU1IDAgMCAxIDE1NSA5NSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4nICsKICAgICAgICAgICAgJzxwYXRoIGQ9Ik0gNDUgOTUgQSA1NSA1NSAwICcgKyAocGN0ID4gNTAgPyAnMScgOiAnMCcpICsgJyAxICcgKyBueCArICcgJyArIG55ICsgJyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSInICsgY29sb3IgKyAnIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4nICsKICAgICAgICAgICAgJzx0ZXh0IHg9IjEwMCIgeT0iODgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IicgKyBjb2xvciArICciPicgKyBmbXQocGN0LCAxKSArICclPC90ZXh0PicgKwogICAgICAgICAgICAnPHRleHQgeD0iMTAwIiB5PSIxMDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iOSIgZmlsbD0iIzY0NzQ4YiI+VXRpbGl6YXRpb248L3RleHQ+JzsKICAgIH0KCiAgICBmdW5jdGlvbiBkcmF3U3RyZW5ndGhDb21wYXJpc29uKHN2Zywgc2lnbWEsIHN5LCBzdSwgYWxsb3cpIHsKICAgICAgICB2YXIgbWF4VmFsID0gTWF0aC5tYXgoc3UgKiAxLjEsIHNpZ21hICogMS4xLCBhbGxvdyAqIDEuMSwgMSk7CiAgICAgICAgdmFyIGJhclcgPSAxNDA7CiAgICAgICAgdmFyIHgwID0gMzA7CiAgICAgICAgZnVuY3Rpb24gYncodikgeyByZXR1cm4gTWF0aC5tYXgoMiwgKHYgLyBtYXhWYWwpICogYmFyVyk7IH0KCiAgICAgICAgc3ZnLmlubmVySFRNTCA9CiAgICAgICAgICAgICc8dGV4dCB4PSInICsgKHgwICsgYmFyVyAvIDIpICsgJyIgeT0iMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iOSIgZmlsbD0iIzY0NzQ4YiI+U3RyZW5ndGggQ29tcGFyaXNvbjwvdGV4dD4nICsKICAgICAgICAgICAgZHJhd0Jhcih4MCwgMjIsIGJ3KHNpZ21hKSwgJyMwMzY5YTEnLCAnz4MgYWN0dWFsJykgKwogICAgICAgICAgICBkcmF3QmFyKHgwLCA0MiwgYncoYWxsb3cpLCAnIzA1OTY2OScsICfPgyBhbGxvdycpICsKICAgICAgICAgICAgZHJhd0Jhcih4MCwgNjIsIGJ3KHN5KSwgJyNkOTc3MDYnLCAnU3knKSArCiAgICAgICAgICAgIGRyYXdCYXIoeDAsIDgyLCBidyhzdSksICcjZGMyNjI2JywgJ1N1dCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRyYXdCYXIoeCwgeSwgdywgY29sb3IsIGxhYmVsKSB7CiAgICAgICAgcmV0dXJuICc8dGV4dCB4PSInICsgKHggLSA0KSArICciIHk9IicgKyAoeSArIDkpICsgJyIgdGV4dC1hbmNob3I9ImVuZCIgZm9udC1zaXplPSI4IiBmaWxsPSIjNDc1NTY5Ij4nICsgbGFiZWwgKyAnPC90ZXh0PicgKwogICAgICAgICAgICAnPHJlY3QgeD0iJyArIHggKyAnIiB5PSInICsgeSArICciIHdpZHRoPSInICsgdyArICciIGhlaWdodD0iMTIiIHJ4PSIyIiBmaWxsPSInICsgY29sb3IgKyAnIiBvcGFjaXR5PSIwLjg1Ii8+JzsKICAgIH0KCiAgICBmdW5jdGlvbiBj<\/span><span class=\"tsc-js-chunk\">YWxjdWxhdGUoKSB7CiAgICAgICAgaWYgKCF2YWxpZGF0ZUlucHV0cygpKSByZXR1cm47CgogICAgICAgIHZhciBtb2RlID0gZWxzLmNhbGNNb2RlLnZhbHVlOwogICAgICAgIHZhciBhcmVhTW0yID0gZ2V0Q3Jvc3NTZWN0aW9uQXJlYSgpOwogICAgICAgIHZhciBzeU1wYSA9IHRvTWV0cmljU3RyZXNzKHBhcnNlTnVtKGVscy55aWVsZFN0cmVuZ3RoLnZhbHVlKSwgc3RyZXNzVW5pdExhYmVsKCkpOwogICAgICAgIHZhciBzdU1wYSA9IHRvTWV0cmljU3RyZXNzKHBhcnNlTnVtKGVscy51bHRpbWF0ZVN0cmVuZ3RoLnZhbHVlKSwgc3RyZXNzVW5pdExhYmVsKCkpOwogICAgICAgIHZhciBzZiA9IHBhcnNlTnVtKGVscy5kZXNpZ25TZi52YWx1ZSk7CiAgICAgICAgdmFyIGt0ID0gcGFyc2VOdW0oZWxzLmt0LnZhbHVlKTsKICAgICAgICB2YXIgc3JlZk1wYSA9IGdldFJlZmVyZW5jZVN0cmVuZ3RoTXBhKHN5TXBhLCBzdU1wYSk7CiAgICAgICAgaWYgKHNyZWZNcGEgPT09IG51bGwpIHsKICAgICAgICAgICAgc2V0RmllbGRFcnJvcigndHNjQ3VzdG9tQWxsb3dhYmxlJywgJ3RzY0N1c3RvbUFsbG93RXJyJywgJ0VudGVyIGEgcG9zaXRpdmUgY3VzdG9tIGFsbG93YWJsZSBzdHJlc3MuJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBzaWdtYUFsbG93TXBhID0gc3JlZk1wYSAvIHNmOwogICAgICAgIHZhciBsb2FkTiA9IDA7CiAgICAgICAgdmFyIHNpZ21hQWN0dWFsTXBhID0gMDsKICAgICAgICB2YXIgYXJlYVJlc3VsdE1tMiA9IGFyZWFNbTI7CiAgICAgICAgdmFyIHJlcUFyZWFNbTIgPSBudWxsOwogICAgICAgIHZhciByZXFEaWFtZXRlck1tID0gbnVsbDsKICAgICAgICB2YXIgd2FybmluZ3MgPSBbXTsKCiAgICAgICAgaWYgKG1vZGUgPT09ICdzdHJlc3MtY2hlY2snKSB7CiAgICAgICAgICAgIGlmIChhcmVhTW0yID09PSBudWxsIHx8IGFyZWFNbTIgPD0gMCkgcmV0dXJuOwogICAgICAgICAgICBsb2FkTiA9IHRvTWV0cmljRm9yY2UocGFyc2VOdW0oZWxzLmFwcGxpZWRMb2FkLnZhbHVlKSwgZWxzLmxvYWRVbml0LnZhbHVlKTsKICAgICAgICAgICAgc2lnbWFBY3R1YWxNcGEgPSBsb2FkTiAvIGFyZWFNbTI7CiAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnbWF4LWxvYWQnKSB7CiAgICAgICAgICAgIGlmIChhcmVhTW0yID09PSBudWxsIHx8IGFyZWFNbTIgPD0gMCkgcmV0dXJuOwogICAgICAgICAgICBsb2FkTiA9IHN5TXBhICogYXJlYU1tMjsKICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdhbGxvd2FibGUtbG9hZCcpIHsKICAgICAgICAgICAgaWYgKGFyZWFNbTIgPT09IG51bGwgfHwgYXJlYU1tMiA8PSAwKSByZXR1cm47CiAgICAgICAgICAgIGxvYWROID0gc2lnbWFBbGxvd01wYSAqIGFyZWFNbTI7CiAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAncmVxdWlyZWQtYXJlYScpIHsKICAgICAgICAgICAgbG9hZE4gPSB0b01ldHJpY0ZvcmNlKHBhcnNlTnVtKGVscy5hcHBsaWVkTG9hZC52YWx1ZSksIGVscy5sb2FkVW5pdC52YWx1ZSk7CiAgICAgICAgICAgIHJlcUFyZWFNbTIgPSBsb2FkTiAvIHNpZ21hQWxsb3dNcGE7CiAgICAgICAgICAgIGFyZWFSZXN1bHRNbTIgPSByZXFBcmVhTW0yOwogICAgICAgICAgICBzaWdtYUFjdHVhbE1wYSA9IHNpZ21hQWxsb3dNcGE7CiAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAncmVxdWlyZWQtZGlhbWV0ZXInKSB7CiAgICAgICAgICAgIGxvYWROID0gdG9NZXRyaWNGb3JjZShwYXJzZU51bShlbHMuYXBwbGllZExvYWQudmFsdWUpLCBlbHMubG9hZFVuaXQudmFsdWUpOwogICAgICAgICAgICByZXFBcmVhTW0yID0gbG9hZE4gLyBzaWdtYUFsbG93TXBhOwogICAgICAgICAgICByZXFEaWFtZXRlck1tID0gY2FsY1JlcXVpcmVkRGlhbWV0ZXIocmVxQXJlYU1tMik7CiAgICAgICAgICAgIGFyZWFSZXN1bHRNbTIgPSByZXFBcmVhTW0yOwogICAgICAgICAgICBzaWdtYUFjdHVhbE1wYSA9IHNpZ21hQWxsb3dNcGE7CiAgICAgICAgfQoKICAgICAgICB2YXIgc2lnbWFMb2NhbE1wYSA9IHNpZ21hQWN0dWFsTXBhICoga3Q7CiAgICAgICAgdmFyIGV2YWxBcmVhID0gYXJlYU1tMiB8fCBhcmVhUmVzdWx0TW0yIHx8IDA7CiAgICAgICAgdmFyIGZ5TiA9IHN5TXBhICogZXZhbEFyZWE7CiAgICAgICAgdmFyIGZ1TiA9IHN1TXBhICogZXZhbEFyZWE7CiAgICAgICAgdmFyIGZBbGxvd04gPSBzaWdtYUFsbG93TXBhICogZXZhbEFyZWE7CiAgICAgICAgdmFyIHNmQWN0dWFsID0gc2lnbWFBY3R1YWxNcGEgPiAwID8gc3JlZk1wYSAvIHNpZ21hQWN0dWFsTXBhIDogbnVsbDsKICAgICAgICB2YXIgdXRpbFBjdCA9IHNpZ21hQWxsb3dNcGEgPiAwICYmIG1vZGUgPT09ICdzdHJlc3MtY2hlY2snID8gKHNpZ21hQWN0dWFsTXBhIC8gc2lnbWFBbGxvd01wYSkgKiAxMDAgOiAwOwogICAgICAgIHZhciBzdGF0dXMgPSBtb2RlID09PSAnc3RyZXNzLWNoZWNrJwogICAgICAgICAgICA\/IGdldFNhZmV0eVN0YXR1cyh1dGlsUGN0LCBzZkFjdHVhbCB8fCAwLCBzZiwgc2lnbWFBY3R1YWxNcGEsIHNpZ21hQWxsb3dNcGEsIHN5TXBhLCBzdU1wYSkKICAgICAgICAgICAgOiAnc2FmZSc7CgogICAgICAgIGlmIChzaWdtYUFjdHVhbE1wYSA+IHN5TXBhICYmIG1vZGUgPT09ICdzdHJlc3MtY2hlY2snKSB7CiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goeyB0eXBlOiAnY2F1dGlvbicsIHRleHQ6ICdBY3R1YWwgdGVuc2lsZSBzdHJlc3MgZXhjZWVkcyB5aWVsZCBzdHJlbmd0aCDigJQgZWxhc3RpYyBhc3N1bXB0aW9ucyBtYXkgbm90IGFwcGx5LicgfSk7CiAgICAgICAgfQogICAgICAgIGlmIChzaWdtYUFjdHVhbE1wYSA+IHN1TXBhICYmIG1vZGUgPT09ICdzdHJlc3MtY2hlY2snKSB7CiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goeyB0eXBlOiAnZGFuZ2VyJywgdGV4dDogJ0FjdHVhbCB0ZW5zaWxlIHN0cmVzcyBleGNlZWRzIHVsdGltYXRlIHRlbnNpbGUgc3RyZW5ndGgg4oCUIGZyYWN0dXJlIHJpc2suJyB9KTsKICAgICAgICB9CiAgICAgICAgaWYgKGt0ID4gMS41KSB7CiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goeyB0eXBlOiAnY2F1dGlvbicsIHRleHQ6ICdTdHJlc3MgY29uY2VudHJhdGlvbiBmYWN0b3IgS3QgPSAnICsgZm10KGt0LCAyKSArICcgc2lnbmlmaWNhbnRseSBpbmNyZWFzZXMgbG9jYWwgc3RyZXNzLicgfSk7CiAgICAgICAgfQogICAgICAgIGlmIChzaWdtYUxvY2FsTXBhID4gc3lNcGEpIHsKICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7IHR5cGU6ICdjYXV0aW9uJywgdGV4dDogJ0xvY2FsIHN0cmVzcyAoS3Qgw5cgz4MpIGV4Y2VlZHMgeWllbGQgc3RyZW5ndGggYXQgc3RyZXNzIHJhaXNlcnMuJyB9KTsKICAgICAgICB9CgogICAgICAgIHZhciBFX01QYSA9IHBhcnNlTnVtKGVscy55b3VuZ3NNb2R1bHVzLnZhbHVlKTsKICAgICAgICB2YXIgZWxhc3RpY1N0cmFpbiA9IG51bGw7CiAgICAgICAgdmFyIGVsb25nYXRpb25NbSA9IG51bGw7CiAgICAgICAgdmFyIGVsb25nYXRpb25CZXlvbmRZaWVsZCA9IGZhbHNlOwogICAgICAgIGlmIChFX01QYSAhPT0gbnVsbCAmJiBFX01QYSA+IDApIHsKICAgICAgICAgICAgdmFyIEUgPSB0b01ldHJpY01vZHVsdXMoRV9NUGEsIGVscy5tb2R1bHVzVW5pdC52YWx1ZSk7CiAgICAgICAgICAgIGlmIChzaWdtYUFjdHVhbE1wYSA8PSBzeU1wYSAmJiBtb2RlID09PSAnc3RyZXNzLWNoZWNrJykgewogICAgICAgICAgICAgICAgZWxhc3RpY1N0cmFpbiA9IHNpZ21hQWN0dWFsTXBhIC8gRTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgTG1tID0gcGFyc2VOdW0oZWxzLmdhdWdlTGVuZ3RoLnZhbHVlKTsKICAgICAgICAgICAgaWYgKExtbSAhPT0gbnVsbCAmJiBMbW0gPiAwICYmIGFyZWFNbTIgPiAwICYmIG1vZGUgPT09ICdzdHJlc3MtY2hlY2snKSB7CiAgICAgICAgICAgICAgICB2YXIgTCA9IHRvTWV0cmljTGVuZ3RoKExtbSwgZWxzLmdhdWdlVW5pdC52YWx1ZSk7CiAgICAgICAgICAgICAgICBlbG9uZ2F0aW9uTW0gPSBsb2FkTiAqIEwgLyAoYXJlYU1tMiAqIEUpOwogICAgICAgICAgICAgICAgaWYgKHNpZ21hQWN0dWFsTXBhID4gc3lNcGEpIHsKICAgICAgICAgICAgICAgICAgICBlbG9uZ2F0aW9uQmV5b25kWWllbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goeyB0eXBlOiAnY2F1dGlvbicsIHRleHQ6ICdFbGFzdGljIGVsb25nYXRpb24gY2FsY3VsYXRlZCBiZXlvbmQgeWllbGQg4oCUIHJlc3VsdCBpcyBhcHByb3hpbWF0ZSBvbmx5LicgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBmdSA9IGZvcmNlVW5pdExhYmVsKCk7CiAgICAgICAgdmFyIHN1ID0gc3RyZXNzVW5pdExhYmVsKCk7CiAgICAgICAgdmFyIGF1ID0gYXJlYVVuaXRMYWJlbCgpOwogICAgICAgIHZhciBsdSA9IGxlbmd0aFVuaXRMYWJlbCgpOwoKICAgICAgICAkKCd0c2NSZXNBcmVhJykudGV4dENvbnRlbnQgPSBmbXQo<\/span><span class=\"tsc-js-chunk\">ZnJvbU1ldHJpY0FyZWEoYXJlYVJlc3VsdE1tMiwgYXUpLCAzKSArICcgJyArIGF1OwogICAgICAgICQoJ3RzY1Jlc1N0cmVzcycpLnRleHRDb250ZW50ID0gbW9kZSA9PT0gJ3N0cmVzcy1jaGVjaycgPyBmbXQoZnJvbU1ldHJpY1N0cmVzcyhzaWdtYUFjdHVhbE1wYSwgc3UpLCAyKSArICcgJyArIHN1IDogRU1QVFk7CiAgICAgICAgJCgndHNjUmVzTG9jYWxTdHJlc3MnKS50ZXh0Q29udGVudCA9IG1vZGUgPT09ICdzdHJlc3MtY2hlY2snID8gZm10KGZyb21NZXRyaWNTdHJlc3Moc2lnbWFMb2NhbE1wYSwgc3UpLCAyKSArICcgJyArIHN1IDogRU1QVFk7CiAgICAgICAgJCgndHNjUmVzWWllbGRMb2FkJykudGV4dENvbnRlbnQgPSBmbXQoZnJvbU1ldHJpY0ZvcmNlKGZ5TiwgZnUpLCAyKSArICcgJyArIGZ1OwogICAgICAgICQoJ3RzY1Jlc1VsdGltYXRlTG9hZCcpLnRleHRDb250ZW50ID0gZm10KGZyb21NZXRyaWNGb3JjZShmdU4sIGZ1KSwgMikgKyAnICcgKyBmdTsKICAgICAgICAkKCd0c2NSZXNBbGxvd1N0cmVzcycpLnRleHRDb250ZW50ID0gZm10KGZyb21NZXRyaWNTdHJlc3Moc2lnbWFBbGxvd01wYSwgc3UpLCAyKSArICcgJyArIHN1OwogICAgICAgICQoJ3RzY1Jlc0FsbG93TG9hZCcpLnRleHRDb250ZW50ID0gZm10KGZyb21NZXRyaWNGb3JjZShmQWxsb3dOLCBmdSksIDIpICsgJyAnICsgZnU7CiAgICAgICAgJCgndHNjUmVzUmVxQXJlYScpLnRleHRDb250ZW50ID0gcmVxQXJlYU1tMiAhPT0gbnVsbCA\/IGZtdChmcm9tTWV0cmljQXJlYShyZXFBcmVhTW0yLCBhdSksIDMpICsgJyAnICsgYXUgOiBFTVBUWTsKICAgICAgICAkKCd0c2NSZXNSZXFEaWFtZXRlcicpLnRleHRDb250ZW50ID0gcmVxRGlhbWV0ZXJNbSAhPT0gbnVsbCA\/IGZtdChmcm9tTWV0cmljTGVuZ3RoKHJlcURpYW1ldGVyTW0sIGx1KSwgMykgKyAnICcgKyBsdSA6IEVNUFRZOwogICAgICAgICQoJ3RzY1Jlc1NmJykudGV4dENvbnRlbnQgPSBzZkFjdHVhbCAhPT0gbnVsbCA\/IGZtdChzZkFjdHVhbCwgMikgOiBFTVBUWTsKICAgICAgICAkKCd0c2NSZXNVdGlsJykudGV4dENvbnRlbnQgPSBtb2RlID09PSAnc3RyZXNzLWNoZWNrJyA\/IGZtdCh1dGlsUGN0LCAxKSArICclJyA6IEVNUFRZOwogICAgICAgICQoJ3RzY1Jlc1N0cmFpbicpLnRleHRDb250ZW50ID0gZWxhc3RpY1N0cmFpbiAhPT0gbnVsbCA\/IGZtdChlbGFzdGljU3RyYWluICogMWU2LCAyKSArICcgdWUnIDogRU1QVFk7CiAgICAgICAgJCgndHNjUmVzRWxvbmdhdGlvbicpLnRleHRDb250ZW50ID0gZWxvbmdhdGlvbk1tICE9PSBudWxsID8gZm10KGZyb21NZXRyaWNMZW5ndGgoZWxvbmdhdGlvbk1tLCBsdSksIDQpICsgJyAnICsgbHUgOiBFTVBUWTsKCiAgICAgICAgdmFyIGhlcm8gPSAkKCd0c2NSZXN1bHRzSGVybycpOwogICAgICAgIGhlcm8uY2xhc3NOYW1lID0gJ3RzYy1yZXN1bHRzLWhlcm8gdHNjLScgKyBzdGF0dXM7CiAgICAgICAgJCgndHNjU3RhdHVzQmFkZ2UnKS50ZXh0Q29udGVudCA9IHN0YXR1cy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0YXR1cy5zbGljZSgxKTsKICAgICAgICAkKCd0c2NIZXJvVmFsdWUnKS50ZXh0Q29udGVudCA9IG1vZGUgPT09ICdzdHJlc3MtY2hlY2snID8gZm10KGZyb21NZXRyaWNTdHJlc3Moc2lnbWFBY3R1YWxNcGEsIHN1KSwgMikgKyAnICcgKyBzdSA6IGZtdChmcm9tTWV0cmljRm9yY2UobG9hZE4sIGZ1KSwgMikgKyAnICcgKyBmdTsKICAgICAgICAkKCd0c2NIZXJvTGFiZWwnKS50ZXh0Q29udGVudCA9IG1vZGUgPT09ICdzdHJlc3MtY2hlY2snID8gJ0FjdHVhbCBUZW5zaWxlIFN0cmVzcycgOgogICAgICAgICAgICBtb2RlID09PSAnbWF4LWxvYWQnID8gJ1lpZWxkIExvYWQgQ2FwYWNpdHknIDoKICAgICAgICAgICAgbW9kZSA9PT0gJ2FsbG93YWJsZS1sb2FkJyA\/ICdBbGxvd2FibGUgVGVuc2lsZSBMb2FkJyA6CiAgICAgICAgICAgIG1vZGUgPT09ICdyZXF1aXJlZC1hcmVhJyA\/ICdSZXF1aXJlZCBDcm9zcy1TZWN0aW9uIEFyZWEnIDoKICAgICAgICAgICAgJ1JlcXVpcmVkIERpYW1ldGVyJzsKCiAgICAgICAgdmFyIHV0aWxCYXIgPSAkKCd0c2NVdGlsQmFyRmlsbCcpOwogICAgICAgIHV0aWxCYXIuc3R5bGUud2lkdGggPSBNYXRoLm1pbih1dGlsUGN0LCAxMDApICsgJyUnOwogICAgICAgIHV0aWxCYXIuc3R5bGUuYmFja2dyb3VuZCA9IHV0aWxQY3QgPiAxMDAgPyAnI2RjMjYyNicgOiB1dGlsUGN0ID4gODUgPyAnI2Q5NzcwNicgOiAnIzA1OTY2OSc7CiAgICAgICAgJCgndHNjVXRpbFBjdCcpLnRleHRDb250ZW50ID0gZm10KE1hdGgubWluKHV0aWxQY3QsIDk5OSksIDEpICsgJyUnOwoKICAgICAgICBkcmF3VGVuc2lsZURpYWdyYW0oJCgndHNjVGVuc2lsZURpYWdyYW0nKSwgbG9hZE4gfHwgZnlOKTsKICAgICAgICBkcmF3U2VjdGlvbkRpYWdyYW0oJCgndHNjU2VjdGlvbkRpYWdyYW0nKSwgZWxzLnNlY3Rpb25UeXBlLnZhbHVlKTsKICAgICAgICBkcmF3VXRpbEdhdWdlKCQoJ3RzY1V0aWxHYXVnZScpLCBtb2RlID09PSAnc3RyZXNzLWNoZWNrJyA\/IHV0aWxQY3QgOiAoc2ZBY3R1YWwgPyBNYXRoLm1pbigxMDAgLyBzZkFjdHVhbCAqIDEwMCwgMTUwKSA6IDApKTsKICAgICAgICBkcmF3U3RyZW5ndGhDb21wYXJpc29uKCQoJ3RzY1N0cmVuZ3RoQ29tcGFyZScpLCBzaWdtYUFjdHVhbE1wYSwgc3lNcGEsIHN1TXBhLCBzaWdtYUFsbG93TXBhKTsKCiAgICAgICAgdmFyIHdhcm5FbCA9ICQoJ3RzY1dhcm5pbmdzJyk7CiAgICAgICAgd2FybkVsLmlubmVySFRNTCA9ICcnOwogICAgICAgIHdhcm5pbmdzLmZvckVhY2goZnVuY3Rpb24gKHcpIHsKICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gJ3RzYy13YXJuaW5nLWl0ZW0gdHNjLXdhcm4tJyArICh3LnR5cGUgPT09ICdkYW5nZXInID8gJ2RhbmdlcicgOiB3LnR5cGUgPT09ICdjYXV0aW9uJyA\/ICdjYXV0aW9uJyA6ICdpbmZvJyk7CiAgICAgICAgICAgIGRpdi50ZXh0Q29udGVudCA9IHcudGV4dDsKICAgICAgICAgICAgd2FybkVsLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgfSk7CgogICAgICAgIHZhciByZWNzID0gYnVpbGRSZWNvbW1lbmRhdGlvbnMoewogICAgICAgICAgICBzdGF0dXM6IHN0YXR1cywKICAgICAgICAgICAgc2lnbWFBY3R1YWxNcGE6IHNpZ21hQWN0dWFsTXBhLAogICAgICAgICAgICBzaWdtYUxvY2FsTXBhOiBzaWdtYUxvY2FsTXBhLAogICAgICAgICAgICBzeU1wYTogc3lNcGEsCiAgICAgICAgICAgIGt0OiBrdCwKICAgICAgICAgICAgdXRpbFBjdDogdXRpbFBjdCwKICAgICAgICAgICAgZWxvbmdhdGlvbkJleW9uZFlpZWxkOiBlbG9uZ2F0aW9uQmV5b25kWWllbGQKICAgICAgICB9KTsKICAgICAgICAkKCd0c2NSZWNvbW1lbmRhdGlvbnMnKS5pbm5lckhUTUwgPSAnPHVsPicgKyByZWNzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gJzxsaT4nICsgciArICc8L2xpPic7IH0pLmpvaW4oJycpICsgJzwvdWw+JzsKCiAgICAgICAgJCgndHNjUmVzdWx0c1BhbmVsJykuY2xhc3NMaXN0LnJlbW92ZSgndHNjLWhpZGRlbicpOwogICAgICAgICQoJ3RzY1Jlc3VsdHNQYW5lbCcpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ25lYXJlc3QnIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGJpbmRFbGVtZW50cygpIHsKICAgICAgICBlbHMgPSB7CiAgICAgICAgICAgIHVuaXRTeXN0ZW06ICQoJ3RzY1VuaXRTeXN0ZW0nKSwKICAgICAgICAgICAgY2FsY01vZGU6ICQoJ3RzY0NhbGNNb2RlJyksCiAgICAgICAgICAgIGNvbXBvbmVudFR5cGU6ICQoJ3RzY0NvbXBvbmVudFR5cGUnKSwKICAgICAgICAgICAgc2VjdGlvblR5cGU6ICQoJ3RzY1NlY3Rpb25UeXBlJyksCiAgICAgICAgICAgIGRpYW1ldGVyOiAkKCd0c2NEaWFtZXRlcicpLAogICAgICAgICAgICBkaWFtZXRlclVuaXQ6ICQoJ3RzY0RpYW1ldGVyVW5pdCcpLAogICAgICAgICAgICBvdXRlckRpYW1ldGVyOiAkKCd0c2NPdXRlckRpYW1ldGVyJyksCiAgICAgICAgICAgIG91dGVyRGlhbWV0ZXJVbml0OiAkKCd0c2NPdXRlckRpYW1ldGVyVW5pdCcpLAogICAgICAgICAgICBpbm5lckRpYW1ldGVyOiAkKCd0c2NJbm5lckRpYW1ldGVyJyksCiAgICAgICAgICAgIGlubmVyRGlhbWV0ZXJVbml0OiAkKCd0c2NJbm5lckRpYW1ldGVyVW5pdCcpLAogICAgICAgICAgICB3aWR0aDogJCgndHNjV2lkdGgnKSwKICAgICAgICAgICAgd2lkdGhVbml0OiAkKCd0c2NXaWR0aFVuaXQnKSwKICAgICAgICAgICAgdGhpY2tuZXNzOiAkKCd0c2NUaGlja25lc3MnKSwKICAgICAgICAgICAgdGhpY2tuZXNzVW5pdDogJCgndHNjVGhpY2tuZXNzVW5pdCcpLAogICAgICAgICAgICBjdXN0b21BcmVhOiAkKCd0c2NDdXN0b21BcmVhJyksCiAgICAgICAgICAgIGN1c3RvbUFyZWFVbml0OiAkKCd0c2NDdXN0b21BcmVhVW5pdCcpLAogICAgICAgICAgICBuZXRBcmVhOiAkKCd0c2NO<\/span><span class=\"tsc-js-chunk\">ZXRBcmVhJyksCiAgICAgICAgICAgIG5ldEFyZWFVbml0OiAkKCd0c2NOZXRBcmVhVW5pdCcpLAogICAgICAgICAgICBhcHBsaWVkTG9hZDogJCgndHNjQXBwbGllZExvYWQnKSwKICAgICAgICAgICAgbG9hZFVuaXQ6ICQoJ3RzY0xvYWRVbml0JyksCiAgICAgICAgICAgIG1hdGVyaWFsOiAkKCd0c2NNYXRlcmlhbCcpLAogICAgICAgICAgICB5aWVsZFN0cmVuZ3RoOiAkKCd0c2NZaWVsZFN0cmVuZ3RoJyksCiAgICAgICAgICAgIHVsdGltYXRlU3RyZW5ndGg6ICQoJ3RzY1VsdGltYXRlU3RyZW5ndGgnKSwKICAgICAgICAgICAgc3RyZW5ndGhSZWY6ICQoJ3RzY1N0cmVuZ3RoUmVmJyksCiAgICAgICAgICAgIGN1c3RvbUFsbG93YWJsZTogJCgndHNjQ3VzdG9tQWxsb3dhYmxlJyksCiAgICAgICAgICAgIGRlc2lnblNmOiAkKCd0c2NEZXNpZ25TZicpLAogICAgICAgICAgICBrdDogJCgndHNjS3QnKSwKICAgICAgICAgICAgeW91bmdzTW9kdWx1czogJCgndHNjWW91bmdzTW9kdWx1cycpLAogICAgICAgICAgICBtb2R1bHVzVW5pdDogJCgndHNjTW9kdWx1c1VuaXQnKSwKICAgICAgICAgICAgZ2F1Z2VMZW5ndGg6ICQoJ3RzY0dhdWdlTGVuZ3RoJyksCiAgICAgICAgICAgIGdhdWdlVW5pdDogJCgndHNjR2F1Z2VVbml0JyksCiAgICAgICAgICAgIGdlb21ldHJ5U2VjdGlvbjogJCgndHNjR2VvbWV0cnlTZWN0aW9uJyksCiAgICAgICAgICAgIHNlY3Rpb25Sb3c6ICQoJ3RzY1NlY3Rpb25Sb3cnKQogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gaW5pdCgpIHsKICAgICAgICByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUk9PVF9JRCk7CiAgICAgICAgaWYgKCFyb290IHx8IHJvb3QuZGF0YXNldC50c2NJbml0ID09PSAnMScpIHJldHVybjsKICAgICAgICByb290LmRhdGFzZXQudHNjSW5pdCA9ICcxJzsKICAgICAgICBiaW5kRWxlbWVudHMoKTsKICAgICAgICByb290LmRhdGFzZXQucHJldlVuaXQgPSAnbWV0cmljJzsKCiAgICAgICAgZWxzLmNvbXBvbmVudFR5cGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzeW5jQ29tcG9uZW50VG9TZWN0aW9uKCk7CiAgICAgICAgICAgIHVwZGF0ZUZpZWxkVmlzaWJpbGl0eSgpOwogICAgICAgIH0pOwogICAgICAgIGVscy5zZWN0aW9uVHlwZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVGaWVsZFZpc2liaWxpdHkpOwogICAgICAgIGVscy5jYWxjTW9kZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVGaWVsZFZpc2liaWxpdHkpOwogICAgICAgIGVscy5zdHJlbmd0aFJlZi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVGaWVsZFZpc2liaWxpdHkpOwogICAgICAgIGVscy5tYXRlcmlhbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIG1hbnVhbE1hdGVyaWFsRWRpdCA9IGZhbHNlOwogICAgICAgICAgICBhcHBseU1hdGVyaWFsUHJlc2V0KCk7CiAgICAgICAgfSk7CiAgICAgICAgZWxzLnlpZWxkU3RyZW5ndGguYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7IG1hbnVhbE1hdGVyaWFsRWRpdCA9IHRydWU7IH0pOwogICAgICAgIGVscy51bHRpbWF0ZVN0cmVuZ3RoLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkgeyBtYW51YWxNYXRlcmlhbEVkaXQgPSB0cnVlOyB9KTsKCiAgICAgICAgZWxzLnVuaXRTeXN0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBjb252ZXJ0VmFsdWVzT25Vbml0Q2hhbmdlKCk7CiAgICAgICAgICAgIHVwZGF0ZVVuaXRMYWJlbHMoKTsKICAgICAgICAgICAgYXBwbHlNYXRlcmlhbFByZXNldCgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCd0c2NCdG5DYWxjdWxhdGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGN1bGF0ZSk7CgogICAgICAgIGFwcGx5TWF0ZXJpYWxQcmVzZXQoKTsKICAgICAgICB1cGRhdGVVbml0TGFiZWxzKCk7CiAgICAgICAgdXBkYXRlRmllbGRWaXNpYmlsaXR5KCk7CiAgICB9CgogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0KTsKICAgIH0gZWxzZSB7CiAgICAgICAgaW5pdCgpOwogICAgfQp9KSgpOwo=<\/span><\/div>\n\n    <div class=\"tsc-layout\">\n        <section class=\"tsc-card tsc-input-section\">\n            <h2>Input Parameters<\/h2>\n\n            <h3 class=\"tsc-subsection-title\">General Settings<\/h3>\n            <div class=\"tsc-input-grid\">\n                <div class=\"tsc-form-group tsc-full-width\">\n                    <label for=\"tscUnitSystem\">Unit System<\/label>\n                    <select id=\"tscUnitSystem\">\n                        <option value=\"metric\" selected>Metric (MPa, mm, mm2, N, kN)<\/option>\n                        <option value=\"imperial\">Imperial (psi, in, in2, lbf)<\/option>\n                    <\/select>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscCalcMode\">\n                        Calculation Mode\n                        <span class=\"tsc-tooltip\" data-tip=\"Select the primary calculation: stress check, load capacity, required area, or required diameter.\">?<\/span>\n                    <\/label>\n                    <select id=\"tscCalcMode\">\n                        <option value=\"stress-check\" selected>Tensile Stress Check<\/option>\n                        <option value=\"max-load\">Maximum Load Calculation<\/option>\n                        <option value=\"allowable-load\">Allowable Load Calculation<\/option>\n                        <option value=\"required-area\">Required Area Calculation<\/option>\n                        <option value=\"required-diameter\">Required Diameter Calculation<\/option>\n                    <\/select>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscComponentType\">Component Type<\/label>\n                    <select id=\"tscComponentType\">\n                        <option value=\"round-rod\" selected>Round Rod<\/option>\n                        <option value=\"hollow-tube\">Hollow Tube<\/option>\n                        <option value=\"rectangular-bar\">Rectangular Bar<\/option>\n                        <option value=\"flat-plate\">Flat Plate<\/option>\n                        <option value=\"wire\">Wire<\/option>\n                        <option value=\"custom-section\">Custom Section<\/option>\n                    <\/select>\n                <\/div>\n\n                <div class=\"tsc-form-group\" id=\"tscSectionRow\">\n                    <label for=\"tscSectionType\">\n                        Cross-Section Type\n                        <span class=\"tsc-tooltip\" data-tip=\"Geometry used to compute effective cross-sectional area A.\">?<\/span>\n                    <\/label>\n                    <select id=\"tscSectionType\">\n                        <option value=\"solid-round\" selected>Solid Round<\/option>\n                        <option value=\"hollow-round\">Hollow Round<\/option>\n                        <option value=\"rectangle\">Rectangle<\/option>\n                        <option value=\"custom-area\">Custom Area<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n\n            <div class=\"tsc-geometry-section\" id=\"tscGeometrySection\">\n                <h3 class=\"tsc-subsection-title\">Geometry &amp; Cross-Section<\/h3>\n                <div class=\"tsc-input-grid\">\n                    <div class=\"tsc-form-group tsc-field-solid\">\n                        <label for=\"tscDiameter\">Diameter (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscDiameter\" value=\"20\" step=\"any\" min=\"0\">\n                            <select id=\"tscDiameterUnit\">\n                                <option value=\"mm\" selected>mm<\/option>\n                                <option value=\"in\">in<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscDiameterErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-field-hollow tsc-hidden\">\n                        <label for=\"tscOuterDiameter\">Outer Diameter (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscOuterDiameter\" value=\"25\" step=\"any\" min=\"0\">\n                            <select id=\"tscOuterDiameterUnit\">\n                                <option value=\"mm\" selected>mm<\/option>\n                                <option value=\"in\">in<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscOuterDiameterErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-field-hollow tsc-hidden\">\n                        <label for=\"tscInnerDiameter\">Inner Diameter (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscInnerDiameter\" value=\"20\" step=\"any\" min=\"0\">\n                            <select id=\"tscInnerDiameterUnit\">\n                                <option value=\"mm\" selected>mm<\/option>\n                                <option value=\"in\">in<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscInnerDiameterErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-field-rect tsc-hidden\">\n                        <label for=\"tscWidth\">Width (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscWidth\" value=\"40\" step=\"any\" min=\"0\">\n                            <select id=\"tscWidthUnit\">\n                                <option value=\"mm\" selected>mm<\/option>\n                                <option value=\"in\">in<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscWidthErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-field-rect tsc-hidden\">\n                        <label for=\"tscThickness\">Thickness (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscThickness\" value=\"10\" step=\"any\" min=\"0\">\n                            <select id=\"tscThicknessUnit\">\n                                <option value=\"mm\" selected>mm<\/option>\n                                <option value=\"in\">in<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscThicknessErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-field-custom-area tsc-hidden\">\n                        <label for=\"tscCustomArea\">\n                            Custom Cross-Sectional Area (<span data-tsc-unit=\"area\">mm2<\/span>)\n                            <span class=\"tsc-tooltip\" data-tip=\"Enter the effective tensile area directly.\">?<\/span>\n                        <\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscCustomArea\" step=\"any\" min=\"0\">\n                            <select id=\"tscCustomAreaUnit\">\n                                <option value=\"mm2\" selected>mm2<\/option>\n                                <option value=\"in2\">in2<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscCustomAreaErr\"><\/span>\n                    <\/div>\n\n                    <div class=\"tsc-form-group tsc-full-width tsc-field-net-area\">\n                        <label for=\"tscNetArea\">\n                            Net Section Area (<span data-tsc-unit=\"area\">mm2<\/span>) &#8211; Optional\n                            <span class=\"tsc-tooltip\" data-tip=\"Use reduced net area for bolt holes, notches, grooves, threads, or slots. Overrides geometry area when entered.\">?<\/span>\n                        <\/label>\n                        <div class=\"tsc-input-with-unit\">\n                            <input type=\"number\" id=\"tscNetArea\" step=\"any\" min=\"0\" placeholder=\"Leave blank to use gross area\">\n                            <select id=\"tscNetAreaUnit\">\n                                <option value=\"mm2\" selected>mm2<\/option>\n                                <option value=\"in2\">in2<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"tsc-field-error\" id=\"tscNetAreaErr\"><\/span>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <h3 class=\"tsc-subsection-title\">Material Properties<\/h3>\n            <div class=\"tsc-input-grid\">\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscMaterial\">\n                        Material\n                        <span class=\"tsc-tooltip\" data-tip=\"Preset yield and ultimate strengths \u2014 editable after selection.\">?<\/span>\n                    <\/label>\n                    <select id=\"tscMaterial\">\n                        <option value=\"structural-steel\" selected>Structural Steel<\/option>\n                        <option value=\"carbon-steel\">Carbon Steel<\/option>\n                        <option value=\"alloy-steel\">Alloy Steel<\/option>\n                        <option value=\"stainless-steel\">Stainless Steel<\/option>\n                        <option value=\"aluminum-alloy\">Aluminum Alloy<\/option>\n                        <option value=\"titanium-alloy\">Titanium Alloy<\/option>\n                        <option value=\"brass\">Brass<\/option>\n                        <option value=\"copper\">Copper<\/option>\n                        <option value=\"custom\">Custom Material<\/option>\n                    <\/select>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscStrengthRef\">\n                        Reference Strength Method\n                        <span class=\"tsc-tooltip\" data-tip=\"Select yield, ultimate, or custom allowable stress for design. \u03c3allow = Sref \/ SF.\">?<\/span>\n                    <\/label>\n                    <select id=\"tscStrengthRef\">\n                        <option value=\"yield\" selected>Yield Strength<\/option>\n                        <option value=\"ultimate\">Ultimate Tensile Strength<\/option>\n                        <option value=\"custom\">Custom Allowable Stress<\/option>\n                    <\/select>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscYieldStrength\">Yield Strength (<span data-tsc-unit=\"stress\">MPa<\/span>)<\/label>\n                    <input type=\"number\" id=\"tscYieldStrength\" value=\"355\" step=\"any\" min=\"0\">\n                    <span class=\"tsc-field-error\" id=\"tscYieldErr\"><\/span>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscUltimateStrength\">Ultimate Tensile Strength (<span data-tsc-unit=\"stress\">MPa<\/span>)<\/label>\n                    <input type=\"number\" id=\"tscUltimateStrength\" value=\"510\" step=\"any\" min=\"0\">\n                    <span class=\"tsc-field-error\" id=\"tscUltimateErr\"><\/span>\n                <\/div>\n\n                <div class=\"tsc-form-group tsc-field-custom-allow tsc-hidden\">\n                    <label for=\"tscCustomAllowable\">Custom Allowable Stress (<span data-tsc-unit=\"stress\">MPa<\/span>)<\/label>\n                    <input type=\"number\" id=\"tscCustomAllowable\" step=\"any\" min=\"0\">\n                    <span class=\"tsc-field-error\" id=\"tscCustomAllowErr\"><\/span>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscDesignSf\">\n                        Design Safety Factor\n                        <span class=\"tsc-tooltip\" data-tip=\"Allowable stress = reference strength \/ SF. Default 2.0.\">?<\/span>\n                    <\/label>\n                    <input type=\"number\" id=\"tscDesignSf\" value=\"2.0\" step=\"any\" min=\"0\">\n                    <span class=\"tsc-field-error\" id=\"tscDesignSfErr\"><\/span>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscKt\">\n                        Stress Concentration Factor K<sub>t<\/sub>\n                        <span class=\"tsc-tooltip\" data-tip=\"\u03c3local = Kt \u00d7 \u03c3nominal. Default 1.0 for uniform sections.\">?<\/span>\n                    <\/label>\n                    <input type=\"number\" id=\"tscKt\" value=\"1.0\" step=\"any\" min=\"0\">\n                    <span class=\"tsc-field-error\" id=\"tscKtErr\"><\/span>\n                <\/div>\n            <\/div>\n\n            <h3 class=\"tsc-subsection-title\">Applied Load<\/h3>\n            <div class=\"tsc-input-grid\">\n                <div class=\"tsc-form-group tsc-field-load\">\n                    <label for=\"tscAppliedLoad\">\n                        Applied Tensile Load\n                        <span class=\"tsc-tooltip\" data-tip=\"Axial tensile force applied to the component.\">?<\/span>\n                    <\/label>\n                    <div class=\"tsc-input-with-unit\">\n                        <input type=\"number\" id=\"tscAppliedLoad\" value=\"50\" step=\"any\" min=\"0\">\n                        <select id=\"tscLoadUnit\">\n                            <option value=\"N\">N<\/option>\n                            <option value=\"kN\" selected>kN<\/option>\n                            <option value=\"lbf\">lbf<\/option>\n                        <\/select>\n                    <\/div>\n                    <span class=\"tsc-field-error\" id=\"tscAppliedLoadErr\"><\/span>\n                <\/div>\n            <\/div>\n\n            <h3 class=\"tsc-subsection-title\">Optional \u2014 Elastic Elongation<\/h3>\n            <div class=\"tsc-input-grid\">\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscYoungsModulus\">\n                        Young&#8217;s Modulus\n                        <span class=\"tsc-tooltip\" data-tip=\"Used for elastic strain \u03b5 = \u03c3\/E and elongation \u03b4 = FL\/(AE).\">?<\/span>\n                    <\/label>\n                    <div class=\"tsc-input-with-unit\">\n                        <input type=\"number\" id=\"tscYoungsModulus\" value=\"200\" step=\"any\" min=\"0\">\n                        <select id=\"tscModulusUnit\">\n                            <option value=\"GPa\" selected>GPa<\/option>\n                            <option value=\"MPa\">MPa<\/option>\n                            <option value=\"psi\">psi<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n\n                <div class=\"tsc-form-group\">\n                    <label for=\"tscGaugeLength\">Gauge Length (<span data-tsc-unit=\"length\">mm<\/span>)<\/label>\n                    <div class=\"tsc-input-with-unit\">\n                        <input type=\"number\" id=\"tscGaugeLength\" step=\"any\" min=\"0\" placeholder=\"Optional\">\n                        <select id=\"tscGaugeUnit\">\n                            <option value=\"mm\" selected>mm<\/option>\n                            <option value=\"in\">in<\/option>\n                        <\/select>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"tsc-actions\">\n                <button type=\"button\" class=\"tsc-btn tsc-btn-primary\" id=\"tscBtnCalculate\">Calculate<\/button>\n            <\/div>\n        <\/section>\n\n        <section class=\"tsc-card tsc-results-section tsc-hidden\" id=\"tscResultsPanel\">\n            <h2>Results<\/h2>\n\n            <div class=\"tsc-results-hero tsc-safe\" id=\"tscResultsHero\">\n                <div class=\"tsc-hero-value\" id=\"tscHeroValue\">&#8211;<\/div>\n                <div class=\"tsc-hero-label\" id=\"tscHeroLabel\">Actual Tensile Stress<\/div>\n                <span class=\"tsc-status-badge\" id=\"tscStatusBadge\">Safe<\/span>\n            <\/div>\n\n            <div class=\"tsc-util-bar-wrap\">\n                <div class=\"tsc-util-bar-label\">\n                    <span>Strength Utilization<\/span>\n                    <span id=\"tscUtilPct\">0%<\/span>\n                <\/div>\n                <div class=\"tsc-util-bar\">\n                    <div class=\"tsc-util-bar-fill\" id=\"tscUtilBarFill\" style=\"width:0%\"><\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"tsc-result-grid\">\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Cross-Sectional Area<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResArea\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Actual Tensile Stress<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResStress\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Local Tensile Stress (Kt x sigma)<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResLocalStress\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Yield Load<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResYieldLoad\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Ultimate Tensile Load<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResUltimateLoad\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Allowable Tensile Stress<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResAllowStress\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Allowable Tensile Load<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResAllowLoad\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Required Cross-Sectional Area<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResReqArea\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Required Diameter<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResReqDiameter\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Actual Safety Factor<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResSf\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Strength Utilization<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResUtil\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Elastic Strain<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResStrain\">&#8211;<\/div>\n                <\/div>\n                <div class=\"tsc-result-item\">\n                    <div class=\"tsc-result-label\">Elastic Elongation<\/div>\n                    <div class=\"tsc-result-value\" id=\"tscResElongation\">&#8211;<\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"tsc-viz-row\">\n                <div class=\"tsc-viz-box\">\n                    <h4>Axial Tension Diagram<\/h4>\n                    <svg id=\"tscTensileDiagram\" viewBox=\"0 0 220 100\" width=\"220\" height=\"100\" aria-hidden=\"true\"><\/svg>\n                <\/div>\n                <div class=\"tsc-viz-box\">\n                    <h4>Cross-Section Geometry<\/h4>\n                    <svg id=\"tscSectionDiagram\" viewBox=\"0 0 200 130\" width=\"200\" height=\"130\" aria-hidden=\"true\"><\/svg>\n                <\/div>\n                <div class=\"tsc-viz-box\">\n                    <h4>Stress Utilization Gauge<\/h4>\n                    <svg id=\"tscUtilGauge\" viewBox=\"0 0 200 120\" width=\"200\" height=\"120\" aria-hidden=\"true\"><\/svg>\n                <\/div>\n                <div class=\"tsc-viz-box\">\n                    <h4>Yield &amp; Ultimate Comparison<\/h4>\n                    <svg id=\"tscStrengthCompare\" viewBox=\"0 0 200 100\" width=\"200\" height=\"100\" aria-hidden=\"true\"><\/svg>\n                <\/div>\n            <\/div>\n\n            <div class=\"tsc-warnings\" id=\"tscWarnings\"><\/div>\n\n            <div class=\"tsc-recommendations\">\n                <h3 class=\"tsc-subsection-title\" style=\"margin-top:1rem;\">Engineering Recommendations<\/h3>\n                <div id=\"tscRecommendations\"><\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n\n<\/div>\n\n<script type=\"text\/javascript\">(function(){var r=document.getElementById(\"tensile-strength-calculator\");if(!r)return;var p=r.querySelectorAll(\".tsc-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(\"Tensile Strength Calculator failed:\",e);}})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The Tensile Strength Calculator is a practical engineering tool designed to calculate tensile stress, allowable load, ultimate tensile capacity, required cross-sectional area, and safety factor&#8230;<\/p>","protected":false},"author":2,"featured_media":24768,"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":[8647],"tags":[3515,8531,8644,8511,8604],"class_list":["post-24767","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-materials-science-and-properties","tag-engineering-calculator","tag-load-capacity","tag-strength-analysis","tag-tensile-strength","tag-tensile-stress","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Tensile-Strength-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/comments?post=24767"}],"version-history":[{"count":1,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24767\/revisions"}],"predecessor-version":[{"id":24769,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24767\/revisions\/24769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media\/24768"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media?parent=24767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/categories?post=24767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/tags?post=24767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}