{"id":24840,"date":"2026-09-08T01:56:33","date_gmt":"2026-09-08T01:56:33","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24840"},"modified":"2026-09-08T02:38:42","modified_gmt":"2026-09-08T02:38:42","slug":"material-flow-stress-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/es\/material-flow-stress-calculator\/","title":{"rendered":"Material Flow Stress Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Material Flow Stress Calculator<\/strong> is a practical engineering tool designed to estimate the stress required to continue plastic deformation at a selected true plastic strain. It supports common hardening models such as Hollomon, Ludwik, Swift, and Voce, helping engineers evaluate flow stress, average flow stress, strength coefficient, and strain hardening behavior. The Material Flow Stress Calculator is useful for sheet metal forming, forging, rolling, extrusion, stamping, and preliminary material modeling in manufacturing and mechanical engineering applications.<\/p>\n\n\n\n<style>\n.mfs-calculator {\n  --ink: #1f2933;\n  --muted: #617082;\n  --line: #d8e0e7;\n  --panel: #ffffff;\n  --accent: #1f7a8c;\n  --accent-dark: #155e70;\n  --danger: #b83d45;\n  --warning: #a87512;\n  width: min(1180px, calc(100% - 24px));\n  margin: 0 auto;\n  padding: 16px 0 24px;\n  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n  color: var(--ink);\n  line-height: 1.45;\n}\n\n.mfs-calculator,\n.mfs-calculator * {\n  box-sizing: border-box;\n}\n\n.mfs-panel {\n  background: var(--panel) !important;\n  border: 1px solid var(--line) !important;\n  border-radius: 10px !important;\n  box-shadow: 0 10px 28px rgba(37, 49, 61, 0.07) !important;\n  padding: 20px !important;\n}\n\n.mfs-workspace {\n  display: block !important;\n}\n\n.mfs-controls {\n  display: block !important;\n}\n\n.mfs-form-grid {\n  display: grid !important;\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  gap: 12px !important;\n}\n\n.mfs-field-full {\n  grid-column: 1 \/ -1 !important;\n}\n\n.mfs-calculator label {\n  display: grid !important;\n  gap: 5px !important;\n  font-size: 0.78rem !important;\n  font-weight: 700 !important;\n  color: #425266 !important;\n  margin: 0 !important;\n}\n\n.mfs-calculator input,\n.mfs-calculator select,\n.mfs-calculator button {\n  font: inherit !important;\n}\n\n.mfs-calculator input,\n.mfs-calculator select {\n  width: 100% !important;\n  max-width: 100% !important;\n  min-height: 36px !important;\n  padding: 7px 10px !important;\n  border: 1px solid #c8d3dc !important;\n  border-radius: 6px !important;\n  background: #fff !important;\n  color: var(--ink) !important;\n  box-shadow: none !important;\n  text-align: left !important;\n}\n\n.mfs-calculator input[type=\"number\"] {\n  font-variant-numeric: tabular-nums !important;\n}\n\n.mfs-calculator input:focus,\n.mfs-calculator select:focus {\n  outline: none !important;\n  border-color: var(--accent) !important;\n  box-shadow: 0 0 0 3px rgba(31, 122, 140, 0.14) !important;\n}\n\n.mfs-calculator .mfs-switch {\n  display: flex !important;\n  align-items: center !important;\n  gap: 10px !important;\n  padding: 4px 0 !important;\n}\n\n.mfs-calculator .mfs-switch input {\n  width: 18px !important;\n  min-height: 18px !important;\n  accent-color: var(--accent) !important;\n  flex: 0 0 auto !important;\n}\n\n.mfs-calculator .mfs-switch span {\n  font-size: 0.84rem !important;\n  font-weight: 600 !important;\n}\n\n.mfs-action-bar {\n  display: flex !important;\n  justify-content: center !important;\n  margin-top: 16px !important;\n}\n\n.mfs-primary-button {\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  min-width: 200px !important;\n  min-height: 42px !important;\n  padding: 0 20px !important;\n  border: 0 !important;\n  border-radius: 8px !important;\n  background: var(--accent) !important;\n  color: #fff !important;\n  font-weight: 700 !important;\n  font-size: 0.95rem !important;\n  cursor: pointer !important;\n  box-shadow: 0 4px 12px rgba(31, 122, 140, 0.22) !important;\n}\n\n.mfs-primary-button:hover,\n.mfs-primary-button:focus {\n  background: var(--accent-dark) !important;\n  color: #fff !important;\n}\n\n.mfs-results {\n  min-width: 0 !important;\n  margin-top: 20px !important;\n  padding-top: 20px !important;\n  border-top: 1px solid var(--line) !important;\n}\n\n.mfs-is-hidden,\n.is-hidden {\n  display: none !important;\n}\n\n.mfs-message-list {\n  display: grid !important;\n  gap: 8px !important;\n  margin-bottom: 12px !important;\n}\n\n.mfs-message {\n  padding: 9px 11px !important;\n  border-radius: 6px !important;\n  font-size: 0.84rem !important;\n}\n\n.mfs-message.error {\n  background: #fff1f2 !important;\n  border: 1px solid #f0b7bd !important;\n  color: var(--danger) !important;\n}\n\n.mfs-message.warning {\n  background: #fff8e7 !important;\n  border: 1px solid #f0d799 !important;\n  color: var(--warning) !important;\n}\n\n.mfs-message.info {\n  background: #edf8f9 !important;\n  border: 1px solid #b7dfe3 !important;\n  color: #155e70 !important;\n}\n\n.mfs-result-grid {\n  display: grid !important;\n  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;\n  gap: 12px !important;\n}\n\n.mfs-result-card {\n  border: 1px solid var(--line) !important;\n  border-radius: 7px !important;\n  background: #fbfdfd !important;\n  padding: 12px !important;\n}\n\n.mfs-result-card span {\n  display: block !important;\n  color: var(--muted) !important;\n  font-size: 0.76rem !important;\n  font-weight: 700 !important;\n  line-height: 1.3 !important;\n}\n\n.mfs-result-card strong {\n  display: block !important;\n  margin-top: 4px !important;\n  font-size: 1.22rem !important;\n  line-height: 1.15 !important;\n  color: var(--ink) !important;\n}\n\n@media (max-width: 980px) {\n  .mfs-form-grid,\n  .mfs-result-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n}\n\n@media (max-width: 640px) {\n  .mfs-calculator {\n    width: min(100% - 16px, 1180px) !important;\n  }\n\n  .mfs-panel {\n    padding: 14px !important;\n  }\n\n  .mfs-form-grid,\n  .mfs-result-grid {\n    grid-template-columns: 1fr !important;\n  }\n\n  .mfs-primary-button {\n    width: 100% !important;\n  }\n}\n<\/style>\n<main class=\"mfs-calculator\">\n    <section class=\"mfs-panel\">\n      <div class=\"mfs-workspace\">\n        <div class=\"mfs-controls\">\n          <div class=\"mfs-form-grid\">\n            <label>\n              Material preset\n              <select id=\"materialPreset\"><\/select>\n            <\/label>\n            <label>\n              Unit system\n              <select id=\"unitSystem\">\n                <option value=\"metric\">Metric (MPa, GPa, C)<\/option>\n                <option value=\"imperial\">Imperial (ksi, Msi, F)<\/option>\n              <\/select>\n            <\/label>\n            <label>\n              Stress unit\n              <select id=\"stressUnit\">\n                <option value=\"MPa\">MPa<\/option>\n                <option value=\"ksi\">ksi<\/option>\n                <option value=\"psi\">psi<\/option>\n              <\/select>\n            <\/label>\n            <label>\n              Temperature unit\n              <select id=\"tempUnit\">\n                <option value=\"C\">C<\/option>\n                <option value=\"F\">F<\/option>\n                <option value=\"K\">K<\/option>\n              <\/select>\n            <\/label>\n            <label>\n              Constitutive model\n              <select id=\"model\">\n                <option value=\"hollomon\">Hollomon<\/option>\n                <option value=\"ludwik\">Ludwik<\/option>\n                <option value=\"swift\">Swift<\/option>\n                <option value=\"voce\">Voce<\/option>\n                <option value=\"johnsonCook\">Johnson-Cook<\/option>\n              <\/select>\n            <\/label>\n            <label>\n              Plastic strain ep\n              <input id=\"plasticStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.15\">\n            <\/label>\n            <label>\n              Initial strain e1\n              <input id=\"initialStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0\">\n            <\/label>\n            <label>\n              Final strain e2\n              <input id=\"finalStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.15\">\n            <\/label>\n            <label>\n              Calibrated max strain\n              <input id=\"calibratedMax\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.5\">\n            <\/label>\n            <label>\n              Strength coefficient K\n              <input id=\"strengthK\" type=\"number\" step=\"1\" min=\"0\" value=\"600\">\n            <\/label>\n            <label>\n              Hardening exponent n\n              <input id=\"hardeningN\" type=\"number\" step=\"0.01\" min=\"0\" value=\"0.2\">\n            <\/label>\n            <label>\n              Initial stress sigma0\n              <input id=\"sigma0\" type=\"number\" step=\"1\" min=\"0\" value=\"210\">\n            <\/label>\n            <label>\n              Pre-strain e0\n              <input id=\"preStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.02\">\n            <\/label>\n            <label>\n              Saturation stress\n              <input id=\"sigmaSat\" type=\"number\" step=\"1\" min=\"0\" value=\"720\">\n            <\/label>\n            <label>\n              Voce coefficient C\n              <input id=\"voceC\" type=\"number\" step=\"0.1\" min=\"0\" value=\"7.5\">\n            <\/label>\n            <label>\n              Young modulus E\n              <input id=\"youngE\" type=\"number\" step=\"1\" min=\"0\" value=\"200000\">\n            <\/label>\n            <label>\n              Johnson-Cook A\n              <input id=\"jcA\" type=\"number\" step=\"1\" min=\"0\" value=\"210\">\n            <\/label>\n            <label>\n              Johnson-Cook B\n              <input id=\"jcB\" type=\"number\" step=\"1\" min=\"0\" value=\"520\">\n            <\/label>\n            <label>\n              Johnson-Cook C\n              <input id=\"jcC\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.018\">\n            <\/label>\n            <label>\n              JC thermal exponent m\n              <input id=\"jcM\" type=\"number\" step=\"0.01\" min=\"0\" value=\"1\">\n            <\/label>\n            <label>\n              Room temperature\n              <input id=\"roomTemp\" type=\"number\" step=\"1\" value=\"20\">\n            <\/label>\n            <label>\n              Melting temperature\n              <input id=\"meltTemp\" type=\"number\" step=\"1\" value=\"1510\">\n            <\/label>\n            <label>\n              Known flow stress\n              <input id=\"knownStress\" type=\"number\" step=\"1\" min=\"0\" value=\"410\">\n            <\/label>\n            <label>\n              Known stress point\n              <input id=\"knownStressK\" type=\"number\" step=\"1\" min=\"0\" value=\"410\">\n            <\/label>\n            <label>\n              Stress point 1\n              <input id=\"stress1\" type=\"number\" step=\"1\" min=\"0\" value=\"360\">\n            <\/label>\n            <label>\n              Strain point 1\n              <input id=\"strain1\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.08\">\n            <\/label>\n            <label>\n              Stress point 2\n              <input id=\"stress2\" type=\"number\" step=\"1\" min=\"0\" value=\"460\">\n            <\/label>\n            <label>\n              Strain point 2\n              <input id=\"strain2\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.22\">\n            <\/label>\n            <label>\n              Engineering stress\n              <input id=\"engStress\" type=\"number\" step=\"1\" min=\"0\" value=\"360\">\n            <\/label>\n            <label>\n              Engineering strain\n              <input id=\"engStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.18\">\n            <\/label>\n            <label>\n              Total true strain\n              <input id=\"trueTotalStrain\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.165\">\n            <\/label>\n            <label>\n              True stress\n              <input id=\"trueStress\" type=\"number\" step=\"1\" min=\"0\" value=\"425\">\n            <\/label>\n            <label>\n              Strain rate\n              <input id=\"strainRate\" type=\"number\" step=\"0.01\" min=\"0\" value=\"1\">\n            <\/label>\n            <label>\n              Reference strain rate\n              <input id=\"referenceRate\" type=\"number\" step=\"0.01\" min=\"0\" value=\"1\">\n            <\/label>\n            <label>\n              Rate exponent m\n              <input id=\"rateM\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.02\">\n            <\/label>\n            <label>\n              Temperature\n              <input id=\"temperature\" type=\"number\" step=\"1\" value=\"20\">\n            <\/label>\n            <label>\n              Reference temperature\n              <input id=\"referenceTemp\" type=\"number\" step=\"1\" value=\"20\">\n            <\/label>\n            <label>\n              Thermal alpha\n              <input id=\"thermalAlpha\" type=\"number\" step=\"0.00001\" min=\"0\" value=\"0.00025\">\n            <\/label>\n            <label>\n              Direct CT factor\n              <input id=\"directCT\" type=\"number\" step=\"0.01\" min=\"0\" value=\"1\">\n            <\/label>\n            <label>\n              Min curve strain\n              <input id=\"curveMin\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.01\">\n            <\/label>\n            <label>\n              Max curve strain\n              <input id=\"curveMax\" type=\"number\" step=\"0.001\" min=\"0\" value=\"0.6\">\n            <\/label>\n            <label>\n              Calculation points\n              <input id=\"curvePoints\" type=\"number\" step=\"1\" min=\"5\" max=\"160\" value=\"60\">\n            <\/label>\n            <label class=\"mfs-switch mfs-field-full\">\n              <input id=\"rateEnabled\" type=\"checkbox\">\n              <span>Apply strain-rate correction<\/span>\n            <\/label>\n            <label class=\"mfs-switch mfs-field-full\">\n              <input id=\"tempEnabled\" type=\"checkbox\">\n              <span>Apply temperature correction<\/span>\n            <\/label>\n          <\/div>\n\n          <div class=\"mfs-action-bar\">\n            <button class=\"mfs-primary-button\" id=\"calculateButton\" type=\"button\">Calculate<\/button>\n          <\/div>\n        <\/div>\n\n        <section class=\"mfs-results mfs-is-hidden\" id=\"resultsPanel\">\n          <div id=\"validationMessages\" class=\"mfs-message-list\" aria-live=\"polite\"><\/div>\n          <div class=\"mfs-result-grid\">\n            <article class=\"mfs-result-card\">\n              <span>Instantaneous Flow Stress<\/span>\n              <strong id=\"instantStress\">&#8211;<\/strong>\n            <\/article>\n            <article class=\"mfs-result-card\">\n              <span>Average Flow Stress<\/span>\n              <strong id=\"averageStress\">&#8211;<\/strong>\n            <\/article>\n            <article class=\"mfs-result-card\">\n              <span>True Plastic Strain<\/span>\n              <strong id=\"plasticResult\">&#8211;<\/strong>\n            <\/article>\n            <article class=\"mfs-result-card\">\n              <span>Strength Coefficient K<\/span>\n              <strong id=\"kResult\">&#8211;<\/strong>\n            <\/article>\n            <article class=\"mfs-result-card\">\n              <span>Hardening Exponent n<\/span>\n              <strong id=\"nResult\">&#8211;<\/strong>\n            <\/article>\n            <article class=\"mfs-result-card\">\n              <span>Relative Flow Stress<\/span>\n              <strong id=\"relativeResult\">&#8211;<\/strong>\n            <\/article>\n          <\/div>\n        <\/section>\n      <\/div>\n    <\/section>\n  <\/main>\n<script>\n(function(){var c=atob(\"KGZ1bmN0aW9uICgpIHsKdmFyIHByZXNldHMgPSB7CiAgbG93Q2FyYm9uU3RlZWw6IHsgbmFtZTogIkxvdyBDYXJib24gU3RlZWwiLCBLOiA2MDAsIG46IDAuMiwgc2lnbWEwOiAyMTAsIGUwOiAwLjAyLCBzaWdtYVNhdDogNzIwLCB2b2NlQzogNy41LCBqY0E6IDIxMCwgamNCOiA1MjAsIGpjQzogMC4wMTgsIGpjTTogMSwgRTogMjAwMDAwLCBzdHJlc3NVbml0OiAiTVBhIiwgdGVtcFVuaXQ6ICJDIiB9LAogIGhpZ2hTdHJlbmd0aFN0ZWVsOiB7IG5hbWU6ICJIaWdoIFN0cmVuZ3RoIFN0ZWVsIiwgSzogMTA1MCwgbjogMC4xNiwgc2lnbWEwOiA1MjAsIGUwOiAwLjAxNSwgc2lnbWFTYXQ6IDEyNTAsIHZvY2VDOiA1LjgsIGpjQTogNTIwLCBqY0I6IDUzMCwgamNDOiAwLjAxOCwgamNNOiAxLCBFOiAyMDUwMDAsIHN0cmVzc1VuaXQ6ICJNUGEiLCB0ZW1wVW5pdDogIkMiIH0sCiAgc3RhaW5sZXNzU3RlZWw6IHsgbmFtZTogIlN0YWlubGVzcyBTdGVlbCIsIEs6IDEyNTAsIG46IDAuMzQsIHNpZ21hMDogMjkwLCBlMDogMC4wMywgc2lnbWFTYXQ6IDk4MCwgdm9jZUM6IDQuMiwgamNBOiAyOTAsIGpjQjogOTYwLCBqY0M6IDAuMDE4LCBqY006IDEsIEU6IDE5MzAwMCwgc3RyZXNzVW5pdDogIk1QYSIsIHRlbXBVbml0OiAiQyIgfSwKICBhbHVtaW51bUFsbG95OiB7IG5hbWU6ICJBbHVtaW51bSBBbGxveSIsIEs6IDQyMCwgbjogMC4yMiwgc2lnbWEwOiAxNjAsIGUwOiAwLjAxOCwgc2lnbWFTYXQ6IDQ3MCwgdm9jZUM6IDkuMCwgamNBOiAxNjAsIGpjQjogMjYwLCBqY0M6IDAuMDE4LCBqY006IDEsIEU6IDY5MDAwLCBzdHJlc3NVbml0OiAiTVBhIiwgdGVtcFVuaXQ6ICJDIiB9LAogIGN1c3RvbTogeyBuYW1lOiAiQ3VzdG9tIE1hdGVyaWFsIiwgSzogNjAwLCBuOiAwLjIsIHNpZ21hMDogMjEwLCBlMDogMC4wMiwgc2lnbWFTYXQ6IDcyMCwgdm9jZUM6IDcuNSwgamNBOiAyMTAsIGpjQjogNTIwLCBqY0M6IDAuMDE4LCBqY006IDEsIEU6IDIwMDAwMCwgc3RyZXNzVW5pdDogIk1QYSIsIHRlbXBVbml0OiAiQyIgfQp9OwoKZnVuY3Rpb24gYnlJZChpZCkgewogIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7Cn0KCnZhciBpZHMgPSBbCiAgIm1hdGVyaWFsUHJlc2V0IiwgInVuaXRTeXN0ZW0iLCAic3RyZXNzVW5pdCIsICJ0ZW1wVW5pdCIsICJtb2RlbCIsICJwbGFzdGljU3RyYWluIiwgImluaXRpYWxTdHJhaW4iLCAiZmluYWxTdHJhaW4iLAogICJzdHJlbmd0aEsiLCAiaGFyZGVuaW5nTiIsICJzaWdtYTAiLCAicHJlU3RyYWluIiwgInNpZ21hU2F0IiwgInZvY2VDIiwgImpjQSIsICJqY0IiLCAiamNDIiwgImpjTSIsICJyb29tVGVtcCIsICJtZWx0VGVtcCIsCiAgImtub3duU3RyZXNzIiwgImtub3duU3RyZXNzSyIsICJzdHJlc3MxIiwgInN0cmFpbjEiLCAic3RyZXNzMiIsICJzdHJhaW4yIiwgImVuZ1N0cmVzcyIsICJlbmdTdHJhaW4iLCAidHJ1ZVRvdGFsU3RyYWluIiwKICAidHJ1ZVN0cmVzcyIsICJ5b3VuZ0UiLCAicmF0ZUVuYWJsZWQiLCAic3RyYWluUmF0ZSIsICJyZWZlcmVuY2VSYXRlIiwgInJhdGVNIiwgInRlbXBFbmFibGVkIiwgInRlbXBlcmF0dXJlIiwKICAicmVmZXJlbmNlVGVtcCIsICJ0aGVybWFsQWxwaGEiLCAiZGlyZWN0Q1QiLCAiY3VydmVNaW4iLCAiY3VydmVNYXgiLCAiY3VydmVQb2ludHMiLCAiY2FsaWJyYXRlZE1heCIKXTsKdmFyIGVscyA9IHt9OwoKZnVuY3Rpb24gbXNnSHRtbChraW5kLCB0ZXh0KSB7CiAgcmV0dXJuICc8ZGl2IGNsYXNzPSJtZnMtbWVzc2FnZSAnICsga2luZCArICciPicgKyB0ZXh0ICsgJzwvZGl2Pic7Cn0KCmZ1bmN0aW9uIGZvcm1hdFBsYXN0aWNTdHJhaW4ocGxhc3RpYykgewogIHJldHVybiByb3VuZChwbGFzdGljLCA1KSArICIgKCIgKyByb3VuZChwbGFzdGljICogMTAwLCAyKSArICIlKSI7Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgaWRzLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7CiAgICBlbHNbaWRdID0gYnlJZChpZCk7CiAgfSk7CiAgT2JqZWN0LmtleXMocHJlc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICBlbHMubWF0ZXJpYWxQcmVzZXQuYWRkKG5ldyBPcHRpb24ocHJlc2V0c1trZXldLm5hbWUsIGtleSkpOwogIH0pOwogIGVscy5tYXRlcmlhbFByZXNldC52YWx1ZSA9ICJsb3dDYXJib25TdGVlbCI7CiAgYnlJZCgicmVzdWx0c1BhbmVsIikuY2xhc3NMaXN0LmFkZCgibWZzLWlzLWhpZGRlbiIpOwogIGFwcGx5UHJlc2V0KCJsb3dDYXJib25TdGVlbCIpOwogIGJpbmQoKTsKfQoKZnVuY3Rpb24gYmluZCgpIHsKICBlbHMubWF0ZXJpYWxQcmVzZXQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgZnVuY3Rpb24gKCkgewogICAgYXBwbHlQcmVzZXQoZWxzLm1hdGVyaWFsUHJlc2V0LnZhbHVlKTsKICAgIGNhbGN1bGF0ZSgpOwogIH0pOwogIGVscy51bml0U3lzdGVtLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uICgpIHsKICAgIGlmIChlbHMudW5pdFN5c3RlbS52YWx1ZSA9PT0gImltcGVyaWFsIikgewogICAgICBlbHMuc3RyZXNzVW5pdC52YWx1ZSA9ICJrc2kiOwogICAgICBlbHMudGVtcFVuaXQudmFsdWUgPSAiRiI7CiAgICB9IGVsc2UgewogICAgICBlbHMuc3RyZXNzVW5pdC52YWx1ZSA9ICJNUGEiOwogICAgICBlbHMudGVtcFVuaXQudmFsdWUgPSAiQyI7CiAgICB9CiAgICBjYWxjdWxhdGUoKTsKICB9KTsKICB2YXIgcm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tZnMtY2FsY3VsYXRvciIpOwogIGlmICghcm9vdCkgcmV0dXJuOwogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQsIHNlbGVjdCIpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGNhbGN1bGF0ZSk7CiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBjYWxjdWxhdGUpOwogIH0pOwogIGJ5SWQoImNhbGN1bGF0ZUJ1dHRvbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgYnlJZCgicmVzdWx0c1BhbmVsIikuY2xhc3NMaXN0LnJlbW92ZSgibWZzLWlzLWhpZGRlbiIpOwogICAgY2FsY3VsYXRlKCk7CiAgfSk7Cn0KCmZ1bmN0aW9uIGFwcGx5UHJlc2V0KGtleSkgewogIHZhciBwID0gcHJlc2V0c1trZXldIHx8IHByZXNldHMubG93Q2FyYm9uU3RlZWw7CiAgZWxzLnN0cmVuZ3RoSy52YWx1ZSA9IHAuSzsKICBlbHMuaGFyZGVuaW5nTi52YWx1ZSA9IHAubjsKICBlbHMuc2lnbWEwLnZhbHVlID0gcC5zaWdtYTA7CiAgZWxzLnByZVN0cmFpbi52YWx1ZSA9IHAuZTA7CiAgZWxzLnNpZ21hU2F0LnZhbHVlID0gcC5zaWdtYVNhdDsKICBlbHMudm9jZUMudmFsdWUgPSBwLnZvY2VDOwogIGVscy5qY0EudmFsdWUgPSBwLmpjQTsKICBlbHMuamNCLnZhbHVlID0gcC5qY0I7CiAgZWxzLmpjQy52YWx1ZSA9IHAuamNDOwogIGVscy5qY00udmFsdWUgPSBwLmpjTTsKICBlbHMucm9vbVRlbXAudmFsdWUgPSAyMDsKICBlbHMubWVsdFRlbXAudmFsdWUgPSAxNTEwOwogIGVscy55b3VuZ0UudmFsdWUgPSBwLkU7CiAgZWxzLnBsYXN0aWNTdHJhaW4udmFsdWUgPSAwLjE1OwogIGVscy5pbml0aWFsU3RyYWluLnZhbHVlID0gMDsKICBlbHMuZmluYWxTdHJhaW4udmFsdWUgPSAwLjE1OwogIGVscy5rbm93blN0cmVzcy52YWx1ZSA9IDQxMDsKICBlbHMua25vd25TdHJlc3NLLnZhbHVlID0gNDEwOwogIGVscy5zdHJlc3MxLnZhbHVlID0gMzYwOwogIGVscy5zdHJhaW4xLnZhbHVlID0gMC4wODsKICBlbHMuc3RyZXNzMi52YWx1ZSA9IDQ2MDsKICBlbHMuc3RyYWluMi52YWx1ZSA9IDAuMjI7CiAgZWxzLmVuZ1N0cmVzcy52YWx1ZSA9IDM2MDsKICBlbHMuZW5nU3RyYWluLnZhbHVlID0gMC4xODsKICBlbHMudHJ1ZVRvdGFsU3RyYWluLnZhbHVlID0gMC4xNjU7CiAgZWxzLnRydWVTdHJlc3MudmFsdWUgPSA0MjU7CiAgZWxzLnN0cmFpblJhdGUudmFsdWUgPSAxOwogIGVscy5yZWZlcmVuY2VSYXRlLnZhbHVlID0gMTsKICBlbHMucmF0ZU0udmFsdWUgPSAwLjAyOwogIGVscy50ZW1wZXJhdHVyZS52YWx1ZSA9IDIwOwogIGVscy5yZWZlcmVuY2VUZW1wLnZhbHVlID0gMjA7CiAgZWxzLnRoZXJtYWxBbHBoYS52YWx1ZSA9IDAuMDAwMjU7CiAgZWxzLmRpcmVjdENULnZhbHVlID0gMTsKICBlbHMuY3VydmVNaW4udmFsdWUgPSAwLjAxOwogIGVscy5jdXJ2ZU1heC52YWx1ZSA9IDAuNjsKICBlbHMuY3VydmVQb2ludHMudmFsdWUgPSA2MDsKICBlbHMuY2FsaWJyYXRlZE1heC52YWx1ZSA9IDAuNTsKfQoKZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogIGlmIChieUlkKCJyZXN1bHRzUGFuZWwiKS5jbGFzc0xpc3QuY29udGFpbnMoIm1mcy1pcy1oaWRkZW4iKSkgcmV0dXJuOwogIHZhciBtb2RlbCA9IGVscy5tb2RlbC52YWx1ZTsKICB2YXIgc3RyZXNzVW5pdCA9IGVscy5zdHJlc3NVbml0LnZhbHVlOwogIHZhciBzdHJlc3NGYWN0b3IgPSBzdHJlc3NVbml0ID09PSAia3NpIiA\/IDYuODk0NzU3MjkzIDogc3RyZXNzVW5pdCA9PT0gInBzaSIgPyAwLjAwNjg5NDc1NzI5MyA6IDE7CiAgdmFyIGVwID0gbnVtKCJwbGFzdGljU3RyYWluIik7CiAgdmFyIEsgPSBudW0oInN0cmVuZ3RoSyIpICogc3RyZXNzRmFjdG9yOwogIHZhciBuID0gbnVtKCJoYXJkZW5pbmdOIik7CiAgdmFyIHNpZ21hMCA9IG51bSgic2lnbWEwIikgKiBzdHJlc3NGYWN0b3I7CiAgdmFyIGUwID0gbnVtKCJwcmVTdHJhaW4iKTsKICB2YXIgc2lnbWFTYXQgPSBudW0oInNpZ21hU2F0IikgKiBzdHJlc3NGYWN0b3I7CiAgdmFyIHZvY2VDID0gbnVtKCJ2b2NlQyIpOwogIHZhciBqY0EgPSBudW0oImpjQSIpICogc3RyZXNzRmFjdG9yOwogIHZhciBqY0IgPSBudW0oImpjQiIpICogc3RyZXNzRmFjdG9yOwogIHZhciBqY0MgPSBudW0oImpjQyIpOwogIHZhciBqY00gPSBudW0oImpjTSIpOwogIHZhciByYXRlRW5hYmxlZCA9IGVscy5yYXRlRW5hYmxlZC5jaGVja2VkOwogIHZhciB0ZW1wRW5hYmxlZCA9IGVscy50ZW1wRW5hYmxlZC5jaGVja2VkOwogIHZhciBzdHJhaW5SYXRlID0gbnVtKCJzdHJhaW5SYXRlIik7CiAgdmFyIHJlZmVyZW5jZVJhdGUgPSBudW0oInJlZmVyZW5jZVJhdGUiKTsKICB2YXIgcmF0ZU0gPSBudW0oInJhdGVNIik7CiAgdmFyIHRlbXBlcmF0dXJlID0gdGVtcFRvQyhudW0oInRlbXBlcmF0dXJlIikpOwogIHZhciByZWZlcmVuY2VUZW1wID0gdGVtcFRvQyhudW0oInJlZmVyZW5jZVRlbXAiKSk7CiAgdmFyIHRoZXJtYWxBbHBoYSA9IG51bSgidGhlcm1hbEFscGhhIik7CiAgdmFyIGRpcmVjdENUID0gbnVtKCJkaXJlY3RDVCIpOwogIHZhciByb29tVGVtcCA9IHRlbXBUb0MobnVtKCJyb29tVGVtcCIpKTsKICB2YXIgbWVsdFRlbXAgPSB0ZW1wVG9DKG51bSgibWVsdFRlbXAiKSk7CiAgdmFyIGUxID0gbnVtKCJpbml0aWFsU3RyYWluIik7CiAgdmFyIGUyID0gbnVtKCJmaW5hbFN0cmFpbiIpOwogIHZhciBtZXNzYWdlcyA9IFtdOwogIHZhciBlcnJzID0gW107CgogIGZ1bmN0aW9uIHdhcm4odCkgewogICAgbWVzc2FnZXMucHVzaChtc2dIdG1sKCJ3YXJuaW5nIiwgdCkpOwogIH0KCiAgZnVuY3Rpb24gZXJyKHQpIHsKICAgIGVycnMucHVzaChtc2dIdG1sKCJlcnJvciIsIHQpKTsKICB9CgogIGlmICghKGVwID49IDApKSBlcnIoIlBsYXN0aWMgc3RyYWluIG11c3Qgbm90IGJlIG5lZ2F0aXZlLiIpOwogIGlmICghKEsgPiAwKSkgZXJyKCJTdHJlbmd0aCBjb2VmZmljaWVudCBLIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7CiAgaWYgKCEobiA+IDApKSBlcnIoIlN0cmFpbiBoYXJkZW5pbmcgZXhwb25lbnQgbiBtdXN0IGJlIHBvc2l0aXZlLiIpOwogIGlmICghKGUyID4gZTEpKSBlcnIoIkZpbmFsIHN0cmFpbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBpbml0aWFsIHN0cmFpbi4iKTsKICBpZiAobW9kZWwgPT09ICJzd2lmdCIgJiYgZTAgKyBlcCA8IDApIGVycigiU3dpZnQgbW9kZWwgcmVxdWlyZXMgZTAgKyBlcCB0byBiZSBub24tbmVnYXRpdmUuIik7CiAgaWYgKG1vZGVsID09PSAidm9jZSIgJiYgIShzaWdtYVNhdCA+IDApKSBlcnIoIlNhdHVyYXRpb24gc3RyZXNzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7CiAgaWYgKChyYXRlRW5hYmxlZCB8fCBtb2RlbCA9PT0gImpvaG5zb25Db29rIikgJiYgIShzdHJhaW5SYXRlID4gMCkpIGVycigiU3RyYWluIHJhdGUgbXVzdCBiZSBwb3NpdGl2ZS4iKTsKICBpZiAoKHJhdGVFbmFibGVkIHx8IG1vZGVsID09PSAiam9obnNvbkNvb2siKSAmJiAhKHJlZmVyZW5jZVJhdGUgPiAwKSkgZXJyKCJSZWZlcmVuY2Ugc3RyYWluIHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTsKICBpZiAoIShudW0oInlvdW5nRSIpID4gMCkgJiYgZWxzLm1vZGVsLnZhbHVlID09PSAiY29udmVydCIpIGVycigiWW91bmcgbW9kdWx1cyBFIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gd2hlbiBjb252ZXJzaW9uIGlzIHVzZWQuIik7CiAgaWYgKG51bSgiY3VydmVNYXgiKSA8PSBudW0oImN1cnZlTWluIikpIGVycigiQ3VydmUgbWF4aW11bSBzdHJhaW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gbWluaW11bSBzdHJhaW4uIik7CiAgaWYgKG51bSgicGxhc3RpY1N0cmFpbiIpID4gbnVtKCJjYWxpYnJhdGVkTWF4IikpIHdhcm4oIklucHV0IHN0cmFpbiBleGNlZWRzIHRoZSBjYWxpYnJhdGVkIG1hdGVyaWFsLW1vZGVsIHJhbmdlLiIpOwogIGlmICh0ZW1wRW5hYmxlZCAmJiB0ZW1wZXJhdHVyZSA+IHJlZmVyZW5jZVRlbXAgKyAyNTApIHdhcm4oIkhvdC1mb3JtaW5nIGJlaGF2aW9yIHVzdWFsbHkgcmVxdWlyZXMgdmFsaWRhdGVkIHRlbXBlcmF0dXJlLWRlcGVuZGVudCBjb25zdGl0dXRpdmUgZGF0YS4iKTsKCiAgdmFyIGluc3RhbnQgPSBOYU47CiAgdmFyIGF2ZXJhZ2UgPSBOYU47CiAgdmFyIHJlbCA9IE5hTjsKICB2YXIgcGxhc3RpYyA9IGVwOwoKICBpZiAoIWVycnMubGVuZ3RoKSB7CiAgICBpZiAobW9kZWwgPT09ICJob2xsb21vbiIpIHsKICAgICAgaW5zdGFudCA9IEsgKiBNYXRoLnBvdyhlcCwgbik7CiAgICAgIGF2ZXJhZ2UgPSBLICogKE1hdGgucG93KGUyLCBuICsgMSkgLSBNYXRoLnBvdyhlMSwgbiArIDEpKSAvICgobiArIDEpICogKGUyIC0gZTEpKTsKICAgIH0gZWxzZSBpZiAobW9kZWwgPT09ICJsdWR3aWsiKSB7CiAgICAgIGluc3RhbnQgPSBzaWdtYTAgKyBLICogTWF0aC5wb3coZXAsIG4pOwogICAgICBhdmVyYWdlID0gYXZlcmFnZU51bWVyaWMoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHNpZ21hMCArIEsgKiBNYXRoLnBvdyh4LCBuKTsgfSwgZTEsIGUyKTsKICAgIH0gZWxzZSBpZiAobW9kZWwgPT09ICJzd2lmdCIpIHsKICAgICAgaW5zdGFudCA9IEsgKiBNYXRoLnBvdyhlMCArIGVwLCBuKTsKICAgICAgYXZlcmFnZSA9IGF2ZXJhZ2VOdW1lcmljKGZ1bmN0aW9uICh4KSB7IHJldHVybiBLICogTWF0aC5wb3coZTAgKyB4LCBuKTsgfSwgZTEsIGUyKTsKICAgIH0gZWxzZSBpZiAobW9kZWwgPT09ICJ2b2NlIikgewogICAgICBpbnN0YW50ID0gc2lnbWFTYXQgLSAoc2lnbWFTYXQgLSBzaWdtYTApICogTWF0aC5leHAoLXZvY2VDICogZXApOwogICAgICBhdmVyYWdlID0gYXZlcmFnZU51bWVyaWMoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHNpZ21hU2F0IC0gKHNpZ21hU2F0IC0gc2lnbWEwKSAqIE1hdGguZXhwKC12b2NlQyAqIHgpOyB9LCBlMSwgZTIpOwogICAgfSBlbHNlIGlmIChtb2RlbCA9PT0gImpvaG5zb25Db29rIikgewogICAgICB2YXIgaGFyZGVuaW5nID0gamNBICsgamNCICogTWF0aC5wb3coZXAsIG4pOwogICAgICB2YXIgcmF0ZVRlcm0gPSByYXRlRW5hYmxlZCB8fCBtb2RlbCA9PT0gImpvaG5zb25Db29rIiA\/IDEgKyBqY0MgKiBNYXRoLmxvZyhzdHJhaW5SYXRlIC8gcmVmZXJlbmNlUmF0ZSkgOiAxOwogICAgICB2YXIgdFN0YXIgPSBjbGFtcCgodGVtcGVyYXR1cmUgLSByb29tVGVtcCkgLyAobWVsdFRlbXAgLSByb29tVGVtcCksIDAsIDEpOwogICAgICB2YXIgdGhlcm1hbFRlcm0gPSAxIC0gTWF0aC5wb3codFN0YXIsIGpjTSk7CiAgICAgIGluc3RhbnQgPSBoYXJkZW5pbmcgKiByYXRlVGVybSAqIHRoZXJtYWxUZXJtOwogICAgICBhdmVyYWdlID0gYXZlcmFnZU51bWVyaWMoZnVuY3Rpb24gKHgpIHsKICAgICAgICB2YXIgaCA9IGpjQSArIGpjQiAqIE1hdGgucG93KHgsIG4pOwogICAgICAgIHJldHVybiBoICogcmF0ZVRlcm0gKiB0aGVybWFsVGVybTsKICAgICAgfSwgZTEsIGUyKTsKICAgIH0KCiAgICBpZiAocmF0ZUVuYWJsZWQgJiYgbW9kZWwgIT09ICJqb2huc29uQ29vayIpIGluc3RhbnQgKj0gTWF0aC5wb3coc3RyYWluUmF0ZSAvIHJlZmVyZW5jZVJhdGUsIHJhdGVNKTsKICAgIGlmICh0ZW1wRW5hYmxlZCAmJiBtb2RlbCAhPT0gImpvaG5zb25Db29rIikgewogICAgICB2YXIgZmFjdG9yID0gTWF0aC5tYXgoMCwgZGlyZWN0Q1QgKiAoMSAtIHRoZXJtYWxBbHBoYSAqICh0ZW1wZXJhdHVyZSAtIHJlZmVyZW5jZVRlbXApKSk7CiAgICAgIGluc3RhbnQgKj0gZmFjdG9yOwogICAgICBhdmVyYWdlICo9IGZhY3RvcjsKICAgIH0KCiAgICByZWwgPSBpbnN0YW50IC8gcHJlc2V0U3RyZXNzTVBhKGVscy5tYXRlcmlhbFByZXNldC52YWx1ZSwgZXApICogMTAwOwoKICAgIGlmIChtb2RlbCA9PT0gImNvbnZlcnQiKSB7CiAgICAgIHZhciBzaWdtYVRydWUgPSBudW0oImVuZ1N0cmVzcyIpICogKDEgKyBudW0oImVuZ1N0cmFpbiIpKTsKICAgICAgcGxhc3RpYyA9IE1hdGgubWF4KDAsIG51bSgidHJ1ZVRvdGFsU3RyYWluIikgLSBudW0oInRydWVTdHJlc3MiKSAvIG51bSgieW91bmdFIikpOwogICAgICBpbnN0YW50ID0gc2lnbWFUcnVlOwogICAgICBhdmVyYWdlID0gTmFOOwogICAgICByZWwgPSBOYU47CiAgICAgIGJ5SWQoImluc3RhbnRTdHJlc3MiKS50ZXh0Q29udGVudCA9IGZvcm1hdFN0cmVzcyhpbnN0YW50KTsKICAgICAgYnlJZCgiYXZlcmFnZVN0cmVzcyIpLnRleHRDb250ZW50ID0gIi0iOwogICAgICBieUlkKCJwbGFzdGljUmVzdWx0IikudGV4dENvbnRlbnQgPSBmb3JtYXRQbGFzdGljU3RyYWluKHBsYXN0aWMpOwogICAgICBieUlkKCJrUmVzdWx0IikudGV4dENvbnRlbnQgPSAiLSI7CiAgICAgIGJ5SWQoIm5SZXN1bHQiKS50ZXh0Q29udGVudCA9ICItIjsKICAgICAgYnlJZCgicmVsYXRpdmVSZXN1bHQiKS50ZXh0Q29udGVudCA9ICItIjsKICAgICAgYnlJZCgidmFsaWRhdGlvbk1lc3NhZ2VzIikuaW5uZXJIVE1MID0gbWVzc2FnZXMuY29uY2F0KGVycnMpLmpvaW4oIiIpIHx8IG1zZ0h0bWwoImluZm8iLCAiSW5wdXRzIGFyZSB2YWxpZC4iKTsKICAgICAgcmV0dXJuOwogICAgfQogIH0KCiAgaWYgKGVycnMubGVuZ3RoKSB7CiAgICBieUlkKCJ2YWxpZGF0aW9uTWVzc2FnZXMiKS5pbm5lckhUTUwgPSBlcnJzLmNvbmNhdChtZXNzYWdlcykuam9pbigiIik7CiAgfSBlbHNlIGlmIChtZXNzYWdlcy5sZW5ndGgpIHsKICAgIGJ5SWQoInZhbGlkYXRpb25NZXNzYWdlcyIpLmlubmVySFRNTCA9IG1zZ0h0bWwoImluZm8iLCBtZXNzYWdlcy5tYXAoZnVuY3Rpb24gKG0pIHsKICAgICAgcmV0dXJuIG0ucmVwbGFjZSgid2FybmluZyIsICJpbmZvIik7CiAgICB9KS5qb2luKCIiKSk7CiAgfSBlbHNlIHsKICAgIGJ5SWQoInZhbGlkYXRpb25NZXNzYWdlcyIpLmlubmVySFRNTCA9IG1zZ0h0bWwoImluZm8iLCAiSW5wdXRzIGFyZSB2YWxpZC4gUmVzdWx0cyB1cGRhdGUgYXV0b21hdGljYWxseS4iKTsKICB9CgogIGJ5SWQoImluc3RhbnRTdHJlc3MiKS50ZXh0Q29udGVudCA9IE51bWJlci5pc0Zpbml0ZShpbnN0YW50KSA\/IGZvcm1hdFN0cmVzcyhpbnN0YW50KSA6ICItIjsKICBieUlkKCJhdmVyYWdlU3RyZXNzIikudGV4dENvbnRlbnQgPSBOdW1iZXIuaXNGaW5pdGUoYXZlcmFnZSkgPyBmb3JtYXRTdHJlc3MoYXZlcmFnZSkgOiAiLSI7CiAgYnlJZCgicGxhc3RpY1Jlc3VsdCIpLnRleHRDb250ZW50ID0gZm9ybWF0UGxhc3RpY1N0cmFpbihwbGFzdGljKTsKICBieUlkKCJrUmVzdWx0IikudGV4dENvbnRlbnQgPSBmb3JtYXRTdHJlc3MoSyk7CiAgYnlJZCgiblJlc3VsdCIpLnRleHRDb250ZW50ID0gcm91bmQobiwgNSk7CiAgYnlJZCgicmVsYXRpdmVSZXN1bHQiKS50ZXh0Q29udGVudCA9IE51bWJlci5pc0Zpbml0ZShyZWwpID8gcm91bmQocmVsLCAxKSArICIlIiA6ICItIjsKfQoKZnVuY3Rpb24gYXZlcmFnZU51bWVyaWMoZm4sIGEsIGIpIHsKICB2YXIgc3RlcHMgPSAyMDA7CiAgdmFyIGFyZWEgPSAwOwogIHZhciBoID0gKGIgLSBhKSAvIHN0ZXBzOwogIHZhciBpOwogIGZvciAoaSA9IDA7IGkgPD0gc3RlcHM7IGkrKykgewogICAgdmFyIHggPSBhICsgaSAqIGg7CiAgICB2YXIgdyA9IGkgPT09IDAgfHwgaSA9PT0gc3RlcHMgPyAwLjUgOiAxOwogICAgYXJlYSArPSB3ICogZm4oeCk7CiAgfQogIHJldHVybiBhcmVhICogaCAvIChiIC0gYSk7Cn0KCmZ1bmN0aW9uIHByZXNldFN0cmVzc01QYShrZXksIGVwKSB7CiAgdmFyIHAgPSBwcmVzZXRzW2tleV0gfHwgcHJlc2V0cy5sb3dDYXJib25TdGVlbDsKICByZXR1cm4gcC5LICogTWF0aC5wb3coTWF0aC5tYXgoZXAsIDApLCBwLm4pOwp9CgpmdW5jdGlvbiBudW0oaWQpIHsKICB2YXIgdiA9IE51bWJlcihlbHNbaWRdLnZhbHVlKTsKICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHYpID8gdiA6IE5hTjsKfQoKZnVuY3Rpb24gZm9ybWF0U3RyZXNzKHYpIHsKICB2YXIgdW5pdCA9IGVscy5zdHJlc3NVbml0LnZhbHVlOwogIGlmICh1bml0ID09PSAia3NpIikgcmV0dXJuIHJvdW5kKHYgLyA2Ljg5NDc1NzI5MywgMikgKyAiIGtzaSI7CiAgaWYgKHVuaXQgPT09ICJwc2kiKSByZXR1cm4gcm91bmQodiAvIDAuMDA2ODk0NzU3MjkzLCAwKSArICIgcHNpIjsKICByZXR1cm4gcm91bmQodiwgMikgKyAiIE1QYSI7Cn0KCmZ1bmN0aW9uIHRlbXBUb0ModikgewogIGlmIChlbHMudGVtcFVuaXQudmFsdWUgPT09ICJGIikgcmV0dXJuICh2IC0gMzIpICogNSAvIDk7CiAgaWYgKGVscy50ZW1wVW5pdC52YWx1ZSA9PT0gIksiKSByZXR1cm4gdiAtIDI3My4xNTsKICByZXR1cm4gdjsKfQoKZnVuY3Rpb24gY2xhbXAodiwgYSwgYikgewogIHJldHVybiBNYXRoLm1heChhLCBNYXRoLm1pbihiLCB2KSk7Cn0KCmZ1bmN0aW9uIHJvdW5kKHYsIGQpIHsKICBpZiAodHlwZW9mIGQgPT09ICJ1bmRlZmluZWQiKSBkID0gMjsKICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2KSkgcmV0dXJuICItIjsKICB2YXIgcCA9IE1hdGgucG93KDEwLCBkKTsKICByZXR1cm4gTWF0aC5yb3VuZCh2ICogcCkgLyBwOwp9CgppZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImxvYWRpbmciKSB7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGluaXQpOwp9IGVsc2UgewogIGluaXQoKTsKfQp9KSgpOwo=\");(new Function(c))();})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The Material Flow Stress Calculator is a practical engineering tool designed to estimate the stress required to continue plastic deformation at a selected true plastic&#8230;<\/p>","protected":false},"author":2,"featured_media":24841,"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":[8701,8700,8699,8698],"class_list":["post-24840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-materials-science-and-properties","tag-flow-stress","tag-material-forming","tag-plastic-deformation","tag-strain-hardening","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/09\/Material-Flow-Stress-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24840","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=24840"}],"version-history":[{"count":0,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media\/24841"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media?parent=24840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/categories?post=24840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/tags?post=24840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}