<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>328044</bug_id>
          
          <creation_ts>2026-10-19 02:29:53 -0700</creation_ts>
          <short_desc>[SVG] &lt;textPath href&gt; to a basic shape does not follow later changes to the shape</short_desc>
          <delta_ts>2026-11-09 22:41:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>Safari 26</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=15799</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=103811</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=328049</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Karl Dubost">karlcow</reporter>
          <assigned_to name="Karl Dubost">karlcow</assigned_to>
          <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2265957</commentid>
    <comment_count>0</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-10-19 02:29:53 -0700</bug_when>
    <thetext>SVG 2 lets a textPath href point at a basic shape as well as a path: 

    &quot;An URL reference to the path element or basic shape element onto which the glyphs will be rendered&quot; 
    (https://w3c.github.io/svgwg/svg2-draft/text.html#TextPathElementHrefAttribute).

WebKit lays the text out on the shape the first time. After that, changing the shape does not move the text. A path target does follow.

Test case: 
a text with &lt;textPath href=&quot;#s&quot;&gt;, where #s is a rect, circle, ellipse, line or polygon. 
After the first layout, move the shape (for example rect y from 20 to 120), then read getStartPositionOfChar(3).

path (control): y 100 -&gt; 150, follows
rect, circle, ellipse, line, polygon: unchanged

Cause: 
SVGTextPathElement::buildPendingResource() calls addReferencingElement() only when the target is an SVGPathElement (SVGTextPathElement.cpp:180), and SVGPathElement::invalidatePathDependencies() is what tells the textPath. RenderSVGTextPath::layoutPath() already accepts any SVGGeometryElement.

Other engines, same probe: 
* Firefox 160 follows all six. 
* Chrome Canary 158 never puts the text on the shape (position (0,0) before any edit): Blink&apos;s LayoutSVGTextPath::LayoutPath() only accepts an SVGPathElement. That is a separate gap, not this bug. I will add more WPT. 

Probe attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2265959</commentid>
    <comment_count>1</comment_count>
      <attachid>481890</attachid>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-10-19 02:31:20 -0700</bug_when>
    <thetext>Created attachment 481890
probe-textpath-href-basic-shape-live-update.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2265961</commentid>
    <comment_count>2</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-10-19 02:38:17 -0700</bug_when>
    <thetext>I also opened https://github.com/w3c/svgwg/issues/1212 
for SVG2 spec part, which lacks clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2269228</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-10-26 02:30:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/190994871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2277066</commentid>
    <comment_count>4</comment_count>
      <attachid>482246</attachid>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-11-09 21:59:29 -0800</bug_when>
    <thetext>Created attachment 482246
probe-textpath-basic-shape-live-update-v2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2277079</commentid>
    <comment_count>5</comment_count>
    <who name="Karl Dubost">karlcow</who>
    <bug_when>2026-11-09 22:41:57 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/80283</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>481890</attachid>
            <date>2026-10-19 02:31:20 -0700</date>
            <delta_ts>2026-10-19 02:31:20 -0700</delta_ts>
            <desc>probe-textpath-href-basic-shape-live-update.html</desc>
            <filename>probe-textpath-href-basic-shape-live-update.html</filename>
            <type>text/html</type>
            <size>10362</size>
            <attacher name="Karl Dubost">karlcow</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8
dGl0bGU+dGV4dFBhdGggaHJlZiB0byBiYXNpYyBzaGFwZXM6IGxpdmUgdXBkYXRlPC90aXRsZT4K
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vc3Znd2cvc3ZnMi1k
cmFmdC90ZXh0Lmh0bWwjVGV4dFBhdGhFbGVtZW50SHJlZkF0dHJpYnV0ZSI+CjwhLS0KICBCdWcg
NjAwNyBmb2xsb3ctdXAuIE9ic2VydmFibGU6IGdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMykgb24g
YSA8dGV4dD4gd2l0aCBhCiAgPHRleHRQYXRoIGhyZWY9IiNzaGFwZSI+LCByZWFkIGJlZm9yZSBh
bmQgYWZ0ZXIgdGhlIHNoYXBlIGlzIG1vdmVkLgogIENvbnRyb2wgdGhhdCBtdXN0IGNoYW5nZTog
dGhlIHBhdGggY2FzZS4gQ29udHJvbCB0aGF0IG11c3Qgbm90IGNoYW5nZTogdGhlCiAgc2FtZSBz
aGFwZSByZWFkIHR3aWNlIHdpdGggbm8gZWRpdCAoZGV0ZXJtaW5pc20pLgogIEV4cGVjdGVkOiBh
bGwgc2l4IGNoYW5nZSBpZiB0ZXh0UGF0aCB0cmFja3MgaXRzIHRhcmdldDsgV2ViS2l0ICgyMDI2
LTEwLTE5KQogIGNoYW5nZWQgb25seSB0aGUgcGF0aC4KLS0+CjxzdHlsZT4KIGJvZHkgeyBmb250
OiAxM3B4LzEuNDUgLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmOyBtYXJnaW46
IDEuNXJlbTsgbWF4LXdpZHRoOiA3NHJlbTsgfQogcHJlIHsgYmFja2dyb3VuZDogI2Y1ZjVmNTsg
cGFkZGluZzogLjZyZW07IG92ZXJmbG93LXg6IGF1dG87IGZvbnQtc2l6ZTogMTFweDsgfQo8L3N0
eWxlPgo8aDE+dGV4dFBhdGggaHJlZiB0byBiYXNpYyBzaGFwZXM6IGxpdmUgdXBkYXRlPC9oMT4K
PHAgaWQ9InN0YXR1cyI+cnVubmluZ+KApjwvcD4KPGgyPkpTT04gcGF5bG9hZDwvaDI+CjxwcmUg
aWQ9Impzb24iPuKApjwvcHJlPgo8c2NyaXB0Pgpjb25zdCBOUyA9ICJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyI7CmNvbnN0IGFzY2lpSlNPTiA9IChvKSA9PiBKU09OLnN0cmluZ2lmeShvLCBu
dWxsLCAxKQogIC5yZXBsYWNlKC9bXHUwMDdmLVx1ZmZmZl0vZywgYyA9PiAnXFx1JyArIGMuY2hh
ckNvZGVBdCgwKS50b1N0cmluZygxNikucGFkU3RhcnQoNCwgJzAnKSk7CmNvbnN0IGNhc2VzID0g
ewogIHBhdGg6ICAgIHsgdGFnOiAicGF0aCIsICAgIGF0dHJzOiB7IGQ6ICJNMTAgMTAwIEgyMDAi
IH0sICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IHsgZDogIk0xMCAxNTAgSDIwMCIgfSB9LAog
IHJlY3Q6ICAgIHsgdGFnOiAicmVjdCIsICAgIGF0dHJzOiB7IHg6IDEwLCB5OiAyMCwgd2lkdGg6
IDEwMCwgaGVpZ2h0OiA0MCB9LCBjaGFuZ2U6IHsgeTogMTIwIH0gfSwKICBjaXJjbGU6ICB7IHRh
ZzogImNpcmNsZSIsICBhdHRyczogeyBjeDogMTAwLCBjeTogMTAwLCByOiA0MCB9LCAgICAgICAg
ICAgICAgY2hhbmdlOiB7IGN5OiAxNTAgfSB9LAogIGVsbGlwc2U6IHsgdGFnOiAiZWxsaXBzZSIs
IGF0dHJzOiB7IGN4OiAxMDAsIGN5OiAxMDAsIHJ4OiA0MCwgcnk6IDIwIH0sICAgICBjaGFuZ2U6
IHsgY3k6IDE1MCB9IH0sCiAgbGluZTogICAgeyB0YWc6ICJsaW5lIiwgICAgYXR0cnM6IHsgeDE6
IDEwLCB5MTogMTAsIHgyOiAxMDAsIHkyOiAxMCB9LCAgICAgIGNoYW5nZTogeyB5MTogMTUwLCB5
MjogMTUwIH0gfSwKICBwb2x5Z29uOiB7IHRhZzogInBvbHlnb24iLCBhdHRyczogeyBwb2ludHM6
ICIxMCwxMCAxMDAsMTAgMTAwLDEwMCIgfSwgICAgICAgY2hhbmdlOiB7IHBvaW50czogIjEwLDEx
MCAxMDAsMTEwIDEwMCwyMDAiIH0gfSwKfTsKY29uc3QgcG9zID0gKHRleHQpID0+IHsgY29uc3Qg
cCA9IHRleHQuZ2V0U3RhcnRQb3NpdGlvbk9mQ2hhcigzKTsgcmV0dXJuIFtNYXRoLnJvdW5kKHAu
eCksIE1hdGgucm91bmQocC55KV07IH07CmNvbnN0IHJvd3MgPSB7fTsKZm9yIChjb25zdCBbbmFt
ZSwgY10gb2YgT2JqZWN0LmVudHJpZXMoY2FzZXMpKSB7CiAgY29uc3Qgc3ZnID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudE5TKE5TLCAic3ZnIik7CiAgc3ZnLnNldEF0dHJpYnV0ZSgid2lkdGgiLCA0
MDApOyBzdmcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAyMDApOwogIGRvY3VtZW50LmJvZHkuYXBw
ZW5kKHN2Zyk7CiAgY29uc3Qgc2hhcGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsIGMu
dGFnKTsKICBzaGFwZS5pZCA9ICJzLSIgKyBuYW1lOwogIGZvciAoY29uc3QgW2ssIHZdIG9mIE9i
amVjdC5lbnRyaWVzKGMuYXR0cnMpKSBzaGFwZS5zZXRBdHRyaWJ1dGUoaywgdik7CiAgc3ZnLmFw
cGVuZChzaGFwZSk7CiAgY29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywg
InRleHQiKTsKICBjb25zdCB0cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgInRleHRQ
YXRoIik7CiAgdHAuc2V0QXR0cmlidXRlKCJocmVmIiwgIiNzLSIgKyBuYW1lKTsKICB0cC50ZXh0
Q29udGVudCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7CiAgdGV4dC5hcHBlbmQodHAp
OyBzdmcuYXBwZW5kKHRleHQpOwogIGNvbnN0IGJlZm9yZSA9IHBvcyh0ZXh0KSwgYWdhaW4gPSBw
b3ModGV4dCk7CiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYy5jaGFuZ2Up
KSBzaGFwZS5zZXRBdHRyaWJ1dGUoaywgdik7CiAgY29uc3QgYWZ0ZXIgPSBwb3ModGV4dCk7CiAg
cm93c1tuYW1lXSA9IHsgYmVmb3JlLCBhZ2Fpbl9ub19lZGl0OiBhZ2FpbiwgYWZ0ZXIsIGRldGVy
bWluaXN0aWM6IFN0cmluZyhiZWZvcmUpID09PSBTdHJpbmcoYWdhaW4pLCB1cGRhdGVkOiBTdHJp
bmcoYmVmb3JlKSAhPT0gU3RyaW5nKGFmdGVyKSB9Owp9CmNvbnN0IHBheWxvYWQgPSB7CiAgcHJv
YmU6ICJ0ZXh0cGF0aC1ocmVmLWJhc2ljLXNoYXBlLWxpdmUtdXBkYXRlIiwKICB1c2VyX2FnZW50
OiBuYXZpZ2F0b3IudXNlckFnZW50LAogIGVuZ2luZV9oaW50OiAiIiwKICBjaGFyYWN0ZXJfc2V0
OiBkb2N1bWVudC5jaGFyYWN0ZXJTZXQsCiAgY29udHJvbHNfcGFzc2VkOiByb3dzLnBhdGgudXBk
YXRlZCAmJiBPYmplY3QudmFsdWVzKHJvd3MpLmV2ZXJ5KHIgPT4gci5kZXRlcm1pbmlzdGljKSwK
ICBleHBlY3Q6ICJ1cGRhdGVkIHRydWUgZm9yIGFsbCBzaXggaWYgdGV4dFBhdGggdHJhY2tzIGl0
cyB0YXJnZXQiLAogIHJvd3MsCn07CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqc29uIikudGV4
dENvbnRlbnQgPSBhc2NpaUpTT04ocGF5bG9hZCk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
dGF0dXMiKS50ZXh0Q29udGVudCA9ICJkb25lIjsKPC9zY3JpcHQ+CjxzY3JpcHQ+Ci8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQovLyBQYXlsb2FkIGJ1dHRvbnMuIENBTk9OSUNBTCBTT1VSQ0U6IHRlbXBs
YXRlcy9wcm9iZS1wYXlsb2FkLWJ1dHRvbnMuaHRtbAovLwovLyBEbyBOT1QgaGFuZC1lZGl0IHRo
aXMgYmxvY2sgaW5zaWRlIGEgcHJvYmUuIEVkaXQgdGhlIGNhbm9uaWNhbCBmaWxlIGFuZCBydW4K
Ly8gICAgIHB5dGhvbjMgdG9vbHMvc3luYy1wcm9iZS1idXR0b25zLnB5IC0tYXBwbHkKLy8gd2hp
Y2ggcmV3cml0ZXMgdGhpcyBibG9jayBpbiB0ZW1wbGF0ZXMvcHJvYmUtdGVtcGxhdGUuaHRtbCBh
bmQgaW4gZXZlcnkKLy8gYXR0cmlidXRlcy8qKi9leGFtcGxlcy9wcm9iZS0qLmh0bWwsIGRvbS8q
KiwgZWxlbWVudHMvKiouIEJlZm9yZSB0aGlzIHRvb2wKLy8gZXhpc3RlZCB0aGUgMzggcHJvYmVz
IGNhcnJpZWQgOSBkaWZmZXJlbnQgdmFyaWFudHMgb2YgaXQuCi8vCi8vIFNlbGYtY29udGFpbmVk
IG9uIHB1cnBvc2U6IGl0IGZpbmRzIHRoZSBwYXlsb2FkIDxwcmU+IGl0c2VsZiAoYnkgI2pzb24s
IGVsc2UKLy8gdGhlIGxhc3QgPHByZT4gb24gdGhlIHBhZ2UpLCBzbyBpdCB3b3JrcyB3aXRoIGV2
ZXJ5IHByb2JlIHN0eWxlIHdpdGhvdXQKLy8gdG91Y2hpbmcgdGhlIHByb2JlJ3Mgb3duIGxvZ2lj
LgovLwovLyBUd28gYnV0dG9uczoKLy8gICBDb3B5IEpTT04gcGF5bG9hZDogY2xpcGJvYXJkLCBm
b3IgcGFzdGluZyBpbnRvIGEgY29udmVyc2F0aW9uIG9yIGFuIGVkaXRvci4KLy8gICBEb3dubG9h
ZCBKU09OOiB3cml0ZXMgYSBjb3JyZWN0bHktbmFtZWQgZmlsZSB3aGVyZSB0aGUgYnJvd3NlciBz
dXBwb3J0cwovLyAgICAgaXQuIE1pbmlCcm93c2VyIGhhZCBubyBkb3dubG9hZCBVSSB1bnRpbCBL
YXJsIGFkZGVkIG9uZSBvbiAyMDI2LTA4LTE2OwovLyAgICAgb2xkZXIgYnVpbGRzIHJlbmRlciB0
aGUgYmxvYiBpbnN0ZWFkIG9mIHNhdmluZyBpdCwgYW5kIENvcHkgaXMgdGhlCi8vICAgICByb3V0
ZSB0aGVyZS4KLy8KLy8gUHJlZmVyIHRoZSBkb3dubG9hZCB3aGVyZSBpdCB3b3JrcywgYmVjYXVz
ZSBhIHNhdmVkIGZpbGUgY2FuIGJlIHJlYWQgc2VsZWN0aXZlbHkKLy8gYW5kIGEgcGFzdGVkIG9u
ZSBjYW5ub3QuIEJ1dCB0aGUgQ29weSBwYXRoIGlzIG5vdyBzYWZlIHRvbzogcHJvYmVzIHJlbmRl
ciB0aGVpcgovLyBwYXlsb2FkIGFzIEFTQ0lJLW9ubHkgSlNPTiAoXHVYWFhYIGVzY2FwZXMpLCBz
byBhIGNsaXBib2FyZC1hbmQtZWRpdG9yIHJvdW5kIHRyaXAKLy8gY2Fubm90IGNoYW5nZSBhIGJ5
dGUuIFRoYXQgbWF0dGVyZWQgb24gMjAyNi0wOC0xNSwgd2hlbiBwYXN0aW5nIGEgcGF5bG9hZCBp
bnRvIGEKLy8gdGV4dCBmaWxlIHJlLWVuY29kZWQgYW4gZW0gZGFzaCBpbiBhIHZlcmRpY3Qga2V5
IGFuZCBtYWRlIHRoZSByb3cgbG9vayBtaXNzaW5nLgovLwovLyBUaGUgZG93bmxvYWRlZCBieXRl
cyBhcmUgSURFTlRJQ0FMIHRvIHdoYXQgdGhlIHBhZ2UgZGlzcGxheXMuIE5vdGhpbmcgaXMKLy8g
aW5qZWN0ZWQgYXQgc2F2ZSB0aW1lLCBzbyBhIHBhc3RlZCBwYXlsb2FkIGFuZCBhIHNhdmVkIHBh
eWxvYWQgYXJlIHRoZSBzYW1lCi8vIGFydGlmYWN0OyB0aGUgcnVuIGRhdGUgbGl2ZXMgaW4gdGhl
IGZpbGVuYW1lIGluc3RlYWQuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZnVuY3Rpb24gKCkgewog
IGNvbnN0IHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqc29uJykKICAgIHx8IFsuLi5k
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUnKV0ucG9wKCk7CiAgaWYgKCFwcmUpIHJldHVy
bjsKCiAgY29uc3QgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwogIGJhci5zdHls
ZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6ZmxleDtnYXA6LjZyZW07YWxpZ24taXRlbXM6Y2VudGVyO2Zs
ZXgtd3JhcDp3cmFwO21hcmdpbjouNXJlbSAwJzsKCiAgY29uc3QgbWtCdG4gPSAobGFiZWwpID0+
IHsKICAgIGNvbnN0IGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgIGIu
dHlwZSA9ICdidXR0b24nOwogICAgYi50ZXh0Q29udGVudCA9IGxhYmVsOwogICAgYi5zdHlsZS5j
c3NUZXh0ID0gJ2ZvbnQ6aW5oZXJpdDtwYWRkaW5nOi4zcmVtIC44cmVtO2N1cnNvcjpwb2ludGVy
JzsKICAgIHJldHVybiBiOwogIH07CiAgY29uc3QgY29weUJ0biA9IG1rQnRuKCdDb3B5IEpTT04g
cGF5bG9hZCcpOwogIGNvbnN0IGRsQnRuID0gbWtCdG4oJ0Rvd25sb2FkIEpTT04nKTsKCiAgY29u
c3Qgc3RhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgc3RhdGUuc2V0QXR0
cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpOwogIHN0YXRlLnNldEF0dHJpYnV0ZSgnYXJpYS1saXZl
JywgJ3BvbGl0ZScpOwogIHN0YXRlLnN0eWxlLmNzc1RleHQgPSAnZm9udC1zaXplOjEycHg7Zm9u
dC13ZWlnaHQ6NzAwJzsKCiAgYmFyLmFwcGVuZChjb3B5QnRuLCBkbEJ0biwgc3RhdGUpOwogIHBy
ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShiYXIsIHByZSk7CgogIGNvbnN0IHNheSA9IChtc2cs
IG9rKSA9PiB7CiAgICBzdGF0ZS50ZXh0Q29udGVudCA9IG1zZzsKICAgIHN0YXRlLnN0eWxlLmNv
bG9yID0gb2sgPyAnIzA2MCcgOiAnI2EwMCc7CiAgfTsKCiAgLy8gUmVmdXNlIHRvIGhhbmQgb3Zl
ciBhIHBheWxvYWQgdGhlIHByb2JlIGhhcyBub3QgZmluaXNoZWQgd3JpdGluZy4KICBjb25zdCBw
YXlsb2FkVGV4dCA9ICgpID0+IHsKICAgIGNvbnN0IHRleHQgPSBwcmUudGV4dENvbnRlbnQudHJp
bSgpOwogICAgcmV0dXJuICghdGV4dCB8fCB0ZXh0ID09PSAn4oCmJykgPyBudWxsIDogdGV4dDsK
ICB9OwoKICAvLyBCcm93c2VyICsgdmVyc2lvbiBmb3IgdGhlIGZpbGVuYW1lLiBPcmRlciBtYXR0
ZXJzOiBFZGdlJ3MgVUEgY29udGFpbnMKICAvLyAiQ2hyb21lIiwgYW5kIENocm9tZSdzIGNvbnRh
aW5zICJTYWZhcmkiLCBzbyB0aGUgc3BlY2lmaWMgdGVzdHMgY29tZSBmaXJzdC4KICBjb25zdCBi
cm93c2VyVGFnID0gKHVhLCBoaW50KSA9PiB7CiAgICBsZXQgbTsKICAgIGlmICgobSA9IC9GaXJl
Zm94XC8oW1xkLl0rKS8uZXhlYyh1YSkpKSByZXR1cm4gJ2ZpcmVmb3gtJyArIG1bMV07CiAgICBp
ZiAoKG0gPSAvRWRnXC8oW1xkLl0rKS8uZXhlYyh1YSkpKSByZXR1cm4gJ2VkZ2UtJyArIG1bMV07
CiAgICBpZiAoKG0gPSAvKD86Q2hyb21lfENocm9taXVtKVwvKFtcZC5dKykvLmV4ZWModWEpKSkg
cmV0dXJuICdjaHJvbWUtJyArIG1bMV07CiAgICBpZiAoKG0gPSAvVmVyc2lvblwvKFtcZC5dKylb
XildKlNhZmFyaS8uZXhlYyh1YSkpKSByZXR1cm4gJ3NhZmFyaS0nICsgbVsxXTsKICAgIGlmICgv
QXBwbGVXZWJLaXQvLnRlc3QodWEpKSByZXR1cm4gJ3dlYmtpdC11bmtub3duLXZlcnNpb24nOwog
ICAgcmV0dXJuIChoaW50IHx8ICd1bmtub3duJykgKyAnLXVua25vd24tdmVyc2lvbic7CiAgfTsK
CiAgY29uc3Qgc2x1ZyA9IChzKSA9PiBTdHJpbmcocykucmVwbGFjZSgvW15BLVphLXowLTkuXy1d
Ky9nLCAnLScpLnJlcGxhY2UoL14tK3wtKyQvZywgJycpOwoKICAvLyBydW4tPGRhdGU+LTxicm93
c2VyPi08dmVyc2lvbj4tPHByb2JlPi5qc29uLCBtYXRjaGluZyB0aGUgbmFtaW5nIGFscmVhZHkK
ICAvLyB1c2VkIHVuZGVyIDxmYW1pbHk+L3JlcG9ydHMvLgogIGNvbnN0IHN1Z2dlc3RlZEZpbGVu
YW1lID0gKHRleHQpID0+IHsKICAgIGxldCBwcm9iZSA9ICcnLCB1YSA9IG5hdmlnYXRvci51c2Vy
QWdlbnQsIGhpbnQgPSAnJzsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHAgPSBKU09OLnBhcnNlKHRl
eHQpOwogICAgICBwcm9iZSA9IHAucHJvYmUgfHwgJyc7CiAgICAgIHVhID0gcC51c2VyX2FnZW50
IHx8IHVhOwogICAgICBoaW50ID0gcC5lbmdpbmVfaGludCB8fCAnJzsKICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgLy8gQSBwYXlsb2FkIHRoYXQgaXMgbm90IHZhbGlkIEpTT04gaXMgd29ydGggc2F2
aW5nIGFueXdheSwgc28gZmFsbCBiYWNrIHRvCiAgICAgIC8vIHRoZSBkb2N1bWVudCB0aXRsZSBz
byB0aGUgZmlsZSBpcyBzdGlsbCBpZGVudGlmaWFibGUuCiAgICAgIHByb2JlID0gKGRvY3VtZW50
LnRpdGxlIHx8ICdwcm9iZScpLnRvTG93ZXJDYXNlKCk7CiAgICB9CiAgICBpZiAoIXByb2JlKSBw
cm9iZSA9IChkb2N1bWVudC50aXRsZSB8fCAncHJvYmUnKS50b0xvd2VyQ2FzZSgpOwogICAgY29u
c3QgZCA9IG5ldyBEYXRlKCk7CiAgICBjb25zdCBkYXRlID0gW2QuZ2V0RnVsbFllYXIoKSwKICAg
ICAgICAgICAgICAgICAgU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyks
CiAgICAgICAgICAgICAgICAgIFN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKV0u
am9pbignLScpOwogICAgcmV0dXJuIFsncnVuJywgZGF0ZSwgYnJvd3NlclRhZyh1YSwgaGludCks
IHNsdWcocHJvYmUpXS5qb2luKCctJykgKyAnLmpzb24nOwogIH07CgogIGNvcHlCdG4uYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7CiAgICBjb25zdCB0ZXh0ID0gcGF5bG9h
ZFRleHQoKTsKICAgIGlmICghdGV4dCkgeyBzYXkoJ3RoZSBwcm9iZSBoYXMgbm90IGZpbmlzaGVk
IHlldC4gV2FpdCBmb3IgImRvbmUiJywgZmFsc2UpOyByZXR1cm47IH0KCiAgICAvLyBUaGUgYXN5
bmMgQ2xpcGJvYXJkIEFQSSBpcyBmcmVxdWVudGx5IHVuYXZhaWxhYmxlIG9uIGZpbGU6Ly8gcGFn
ZXMsIHNvCiAgICAvLyBmYWxsIGJhY2sgdG8gZXhlY0NvbW1hbmQsIGFuZCB0aGVuIHRvIHNpbXBs
eSBsZWF2aW5nIHRoZSBwYXlsb2FkCiAgICAvLyBzZWxlY3RlZCBzbyDijJhDIHdvcmtzLgogICAg
dHJ5IHsKICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7CiAg
ICAgIHNheSgnY29waWVkICcgKyB0ZXh0Lmxlbmd0aC50b0xvY2FsZVN0cmluZygpICsgJyBjaGFy
YWN0ZXJzJywgdHJ1ZSk7CiAgICAgIHJldHVybjsKICAgIH0gY2F0Y2ggKGUpIHsgLyogZmFsbCB0
aHJvdWdoIHRvIHRoZSBzZWxlY3Rpb24gcGF0aCAqLyB9CgogICAgY29uc3QgcmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOwogICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHByZSk7CiAg
ICBjb25zdCBzZWwgPSBnZXRTZWxlY3Rpb24oKTsKICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsK
ICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7CiAgICBsZXQgb2sgPSBmYWxzZTsKICAgIHRyeSB7IG9r
ID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsgfSBjYXRjaCAoZSkgeyBvayA9IGZhbHNl
OyB9CiAgICBzYXkob2sgPyAnY29waWVkICcgKyB0ZXh0Lmxlbmd0aC50b0xvY2FsZVN0cmluZygp
ICsgJyBjaGFyYWN0ZXJzIChmYWxsYmFjayknCiAgICAgICAgICAgOiAnY2xpcGJvYXJkIGJsb2Nr
ZWQuIFRoZSBwYXlsb2FkIGlzIHNlbGVjdGVkLCBwcmVzcyDijJhDJywgb2spOwogIH0pOwoKICBk
bEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgIGNvbnN0IHRleHQgPSBw
YXlsb2FkVGV4dCgpOwogICAgaWYgKCF0ZXh0KSB7IHNheSgndGhlIHByb2JlIGhhcyBub3QgZmlu
aXNoZWQgeWV0LiBXYWl0IGZvciAiZG9uZSInLCBmYWxzZSk7IHJldHVybjsgfQoKICAgIGNvbnN0
IG5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZSh0ZXh0KTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGJs
b2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nIH0pOwogICAg
ICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogICAgICBjb25zdCBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSB1cmw7CiAgICAgIGEu
ZG93bmxvYWQgPSBuYW1lOwogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgLy8gUmV2
b2tlIG9uIGEgdGltZXIgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHk6IHNvbWUgZW5naW5lcyBoYXZl
IG5vdAogICAgICAvLyBmaW5pc2hlZCByZWFkaW5nIHRoZSBibG9iIHdoZW4gY2xpY2soKSByZXR1
cm5zLgogICAgICBzZXRUaW1lb3V0KCgpID0+IHsgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOyBh
LnJlbW92ZSgpOyB9LCAxMDAwMCk7CiAgICAgIC8vIE5PVCAic2F2ZWQiLiBOb3RoaW5nIGhlcmUg
Y2FuIHRlbGwgd2hldGhlciBhIGZpbGUgd2FzIGFjdHVhbGx5IHdyaXR0ZW46CiAgICAgIC8vIGAn
ZG93bmxvYWQnIGluIEhUTUxBbmNob3JFbGVtZW50LnByb3RvdHlwZWAgaXMgdHJ1ZSBldmVuIGlu
IGEgYnJvd3NlciB3aXRoCiAgICAgIC8vIG5vIGRvd25sb2FkIFVJIGF0IGFsbCwgc28gdGhlcmUg
aXMgbm8gZmVhdHVyZSB0ZXN0IHRvIHJ1bi4gTWluaUJyb3dzZXIgaXMKICAgICAgLy8gZXhhY3Rs
eSB0aGF0IGNhc2U6IHRoZSBjbGljayByZW5kZXJzIHRoZSBibG9iIGluc3RlYWQgb2Ygc2F2aW5n
IGl0LCBhbmQKICAgICAgLy8gdGhpcyB1c2VkIHRvIGNsYWltIHN1Y2Nlc3MgYW55d2F5ICgyMDI2
LTA4LTE1KS4gU2F5IHdoYXQgd2FzIGF0dGVtcHRlZCBhbmQKICAgICAgLy8gbGV0IHRoZSBwZXJz
b24gbG9va2luZyBhdCB0aGVpciBEb3dubG9hZHMgZm9sZGVyIGJlIHRoZSBqdWRnZS4KICAgICAg
c2F5KCdyZXF1ZXN0ZWQgJyArIG5hbWUgKyAnLiBJZiBub3RoaW5nIGFwcGVhcnMgaW4gRG93bmxv
YWRzIHRoaXMgYnJvd3NlciBoYXMgbm8gJwogICAgICAgICAgKyAnZG93bmxvYWQgVUk6IHVzZSBD
b3B5IGluc3RlYWQsIHRoZSBwYXlsb2FkIGlzIEFTQ0lJLW9ubHkgc28gaXQgc3Vydml2ZXMgYW55
ICcKICAgICAgICAgICsgJ2VkaXRvcicsIHRydWUpOwogICAgfSBjYXRjaCAoZSkgewogICAgICBz
YXkoJ2Rvd25sb2FkIGJsb2NrZWQgKCcgKyBlLm5hbWUgKyAnKS4gVXNlIENvcHkgaW5zdGVhZCcs
IGZhbHNlKTsKICAgIH0KICB9KTsKfSkoKTsKPC9zY3JpcHQ+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>482246</attachid>
            <date>2026-11-09 21:59:29 -0800</date>
            <delta_ts>2026-11-09 21:59:29 -0800</delta_ts>
            <desc>probe-textpath-basic-shape-live-update-v2.html</desc>
            <filename>probe-textpath-basic-shape-live-update-v2.html</filename>
            <type>text/html</type>
            <size>17257</size>
            <attacher name="Karl Dubost">karlcow</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPG1ldGEgY2hhcnNldD0idXRmLTgiPgo8
dGl0bGU+UHJvYmU6IHRleHRQYXRoIGhyZWYgdG8gYSBiYXNpYyBzaGFwZSBmb2xsb3dzIGxhdGVy
IGNoYW5nZXMgKHYyKTwvdGl0bGU+CjxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3N2Z3dnL3N2ZzItZHJhZnQvdGV4dC5odG1sI1RleHRQYXRoRWxlbWVudEhyZWZB
dHRyaWJ1dGUiPgo8IS0tCiAgQnVnIDMyODA0NCwgc2Vjb25kIHByb2JlLiBTdXBlcnNlZGVzIHBy
b2JlLXRleHRwYXRoLWhyZWYtYmFzaWMtc2hhcGUtbGl2ZS11cGRhdGUuaHRtbCAoMjAyNi0xMC0x
OSksCiAgd2hpY2ggY292ZXJlZCBvbmUgYXR0cmlidXRlIHBlciBzaGFwZS4gVGhpcyBvbmUgYWRk
cyB0aGUgcm91dGVzIHRoZSBwYXRjaCBoYXMgdG8gY292ZXI6CiAgQ1NTIGdlb21ldHJ5IHByb3Bl
cnRpZXMsIHRoZSB0cmFuc2Zvcm0gYXR0cmlidXRlLCBhIHBvaW50cyBsaXN0IGl0ZW0sIGEgc3R5
bGVzaGVldCBydWxlLAogIHRoZSBpZCBtb3ZpbmcgdG8gYW5vdGhlciBlbGVtZW50LCBhbmQgdGhl
IHRhcmdldCBiZWluZyByZXBsYWNlZC4KCiAgT2JzZXJ2YWJsZTogZ2V0U3RhcnRQb3NpdGlvbk9m
Q2hhcigwKSBvbiB0aGUgPHRleHRQYXRoPiwgcmVhZCBiZWZvcmUgYW5kIGFmdGVyIG9uZSBjaGFu
Z2UgdG8KICB0aGUgcmVmZXJlbmNlZCBzaGFwZS4gVGhlIGZpcnN0IGNoYXJhY3RlciBzdGFydHMg
YXQgdGhlIHN0YXJ0IG9mIHRoZSBzaGFwZSdzIGVxdWl2YWxlbnQgcGF0aCwKICBzbyAiYWZ0ZXIi
IGNhbiBiZSBwcmVkaWN0ZWQgZnJvbSBTVkcgMiBzaGFwZXMuaHRtbCBhbG9uZS4gRXhwZWN0ZWQg
dmFsdWVzIGFyZSB3cml0dGVuIGluIHRoZQogIFJPV1MgdGFibGUgYmVsb3csIGJlZm9yZSBhbnkg
cnVuLgoKICBDb250cm9sczoKICAgLSBjdGxfcGF0aF9kIE1VU1QgY2hhbmdlIChhIDxwYXRoPiB0
YXJnZXQgYWxyZWFkeSBmb2xsb3dzIGluIGV2ZXJ5IGVuZ2luZSB0aGF0IGxheXMgdGV4dCBvbiBp
dCkuCiAgIC0gY3RsX3JlY3Rfbm9fZWRpdCBNVVNUIE5PVCBjaGFuZ2UgKHNhbWUgcmVjdCwgbm8g
ZWRpdDogcHJvdmVzIHRoZSByZWFkIGlzIGRldGVybWluaXN0aWMpLgogIGxhaWRfb3V0X29uX3No
YXBlIGZhbHNlIG1lYW5zIHRoZSBlbmdpbmUgbmV2ZXIgcHV0IHRoZSB0ZXh0IG9uIHRoZSBzaGFw
ZSAoQ2hyb21lKTogdGhlbgogICJmb2xsb3dzIiBzYXlzIG5vdGhpbmcgYWJvdXQgbGl2ZSB1cGRh
dGVzLgoKICBFYWNoIHJvdyBzaG93cyBpdHMgbWFya3VwIGFuZCB0aGUgY2hhbmdlIHNjcmlwdCwg
dGhlIHNjcmlwdCB0ZXh0IHRha2VuIGZyb20gdGhlIGZ1bmN0aW9uIHRoYXQgcnVucy4KLS0+Cjxz
dHlsZT4KIGJvZHkgeyBmb250OiAxM3B4LzEuNDUgLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBz
YW5zLXNlcmlmOyBtYXJnaW46IDEuNXJlbTsgbWF4LXdpZHRoOiA5MHJlbTsgfQogdGFibGUgeyBi
b3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBtYXJnaW46IC42cmVtIDAgMS4ycmVtOyBmb250LXNp
emU6IDEycHg7IH0KIHRoLCB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICNiYmI7IHBhZGRpbmc6IDJw
eCA2cHg7IHRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IH0KIHRoIHsgYmFj
a2dyb3VuZDogI2VlZTsgfQogLlBBU1MgeyBjb2xvcjogIzA2MDsgZm9udC13ZWlnaHQ6IDcwMDsg
fQogLkZBSUwgeyBjb2xvcjogI2EwMDsgZm9udC13ZWlnaHQ6IDcwMDsgfQogcHJlIHsgYmFja2dy
b3VuZDogI2Y1ZjVmNTsgcGFkZGluZzogLjZyZW07IG92ZXJmbG93LXg6IGF1dG87IGZvbnQtc2l6
ZTogMTFweDsgfQogcHJlLm1hcmt1cCB7IG1hcmdpbjogMDsgcGFkZGluZzogLjNyZW07IG1heC13
aWR0aDogMzRyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgfQogaDIgeyBmb250LXNpemU6IDE1
cHg7IG1hcmdpbi10b3A6IDEuNnJlbTsgfQo8L3N0eWxlPgoKPGgxPnRleHRQYXRoIGhyZWYgdG8g
YSBiYXNpYyBzaGFwZTogZG9lcyB0aGUgdGV4dCBmb2xsb3cgbGF0ZXIgY2hhbmdlcz88L2gxPgo8
cCBpZD0ic3RhdHVzIj5ydW5uaW5nLi4uPC9wPgo8dGFibGUgaWQ9Im91dCI+CiA8dGhlYWQ+PHRy
Pjx0aD5pZDwvdGg+PHRoPmxpdmU8L3RoPjx0aD5tYXJrdXAgYW5kIGNoYW5nZSBzY3JpcHQ8L3Ro
Pjx0aD5iZWZvcmU8L3RoPjx0aD5hZnRlcjwvdGg+PHRoPmV4cGVjdGVkIGFmdGVyPC90aD48dGg+
dmVyZGljdDwvdGg+PC90cj48L3RoZWFkPgogPHRib2R5PjwvdGJvZHk+CjwvdGFibGU+CjxoMj5K
U09OIHBheWxvYWQ8L2gyPgo8cHJlIGlkPSJqc29uIj7igKY8L3ByZT4KCjxzY3JpcHQ+CmNvbnN0
IE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKY29uc3QgYXNjaWlKU09OID0gKG8p
ID0+IEpTT04uc3RyaW5naWZ5KG8sIG51bGwsIDEpCiAgLnJlcGxhY2UoL1tcdTAwN2YtXHVmZmZm
XS9nLCBjID0+ICdcXHUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0
LCAnMCcpKTsKCi8vIFRoZSBmaXJzdCBjaGFyYWN0ZXIncyBtaWRwb2ludCBzaXRzIG9uIHRoZSBw
YXRoOyBpdHMgc3RhcnQgaXMgd2l0aGluIGEgZmV3IHVuaXRzIG9mIHRoZQovLyBwYXRoIHN0YXJ0
IHdoYXRldmVyIHRoZSBmb250LCB1bmRlciB0d28gdW5pdHMgb2ZmIG9uIHRoZSBjdXJ2ZWQgc2hh
cGVzLgpjb25zdCBUT0xFUkFOQ0UgPSAzOwoKLy8gT25lIHJvdyBwZXIgY2FzZS4gYHNoYXBlYCBp
cyB0aGUgbWFya3VwIGluc2lkZSB0aGUgPHN2Zz4sIGJlZm9yZSB0aGUgPHRleHQ+OyBldmVyeSBp
ZCBpcyB1bmlxdWUKLy8gaW4gdGhlIHBhZ2Ugc28gdGhlIGNoYW5nZSBzY3JpcHQgaXMgZXhhY3Rs
eSB3aGF0IGFuIGF1dGhvciB3b3VsZCB3cml0ZS4KLy8gYGJlZm9yZWAgYW5kIGBhZnRlcmAgYXJl
IHRoZSBleHBlY3RlZCBzdGFydCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyLCBmcm9tIFNWRyAyIHNo
YXBlcy5odG1sLgpjb25zdCAkID0gKGlkKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7
CmNvbnN0IFJPV1MgPSBbCiAgeyBpZDogJ2N0bF9wYXRoX2QnLCB0YXJnZXQ6ICdwYXRoLWQnLCBz
aGFwZTogJzxwYXRoIGlkPSJwYXRoLWQiIGQ9Ik0gMjAwIDE1MCBIIDQwMCIvPicsCiAgICBjaGFu
Z2U6ICgpID0+IHsgJCgncGF0aC1kJykuc2V0QXR0cmlidXRlKCdkJywgJ00gMjAwIDIwMCBIIDQw
MCcpOyB9LAogICAgYmVmb3JlOiBbMjAwLCAxNTBdLCBhZnRlcjogWzIwMCwgMjAwXSwgbm90ZTog
J2NvbnRyb2wsIG11c3QgY2hhbmdlJyB9LAogIHsgaWQ6ICdjdGxfcmVjdF9ub19lZGl0JywgdGFy
Z2V0OiAncmVjdC1zdGlsbCcsIHNoYXBlOiAnPHJlY3QgaWQ9InJlY3Qtc3RpbGwiIHg9IjIwMCIg
eT0iMTUwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCIvPicsCiAgICBjaGFuZ2U6IG51bGwsCiAg
ICBiZWZvcmU6IFsyMDAsIDE1MF0sIGFmdGVyOiBbMjAwLCAxNTBdLCBub3RlOiAnY29udHJvbCwg
bXVzdCBub3QgY2hhbmdlJyB9LAogIHsgaWQ6ICdyZWN0X3lfYXR0cicsIHRhcmdldDogJ3JlY3Qt
eScsIHNoYXBlOiAnPHJlY3QgaWQ9InJlY3QteSIgeD0iMjAwIiB5PSIxNTAiIHdpZHRoPSIyMDAi
IGhlaWdodD0iMTAwIi8+JywKICAgIGNoYW5nZTogKCkgPT4geyAkKCdyZWN0LXknKS5zZXRBdHRy
aWJ1dGUoJ3knLCAnMjAwJyk7IH0sCiAgICBiZWZvcmU6IFsyMDAsIDE1MF0sIGFmdGVyOiBbMjAw
LCAyMDBdLCBub3RlOiAncHJlc2VudGF0aW9uIGF0dHJpYnV0ZSwgcmVhY2hlcyB0aGUgc2hhcGUg
dGhyb3VnaCBzdHlsZScgfSwKICB7IGlkOiAncmVjdF9yeF9hdHRyJywgdGFyZ2V0OiAncmVjdC1y
eCcsIHNoYXBlOiAnPHJlY3QgaWQ9InJlY3QtcngiIHg9IjIwMCIgeT0iMTUwIiB3aWR0aD0iMjAw
IiBoZWlnaHQ9IjEwMCIvPicsCiAgICBjaGFuZ2U6ICgpID0+IHsgJCgncmVjdC1yeCcpLnNldEF0
dHJpYnV0ZSgncngnLCAnNDAnKTsgfSwKICAgIGJlZm9yZTogWzIwMCwgMTUwXSwgYWZ0ZXI6IFsy
NDAsIDE1MF0sIG5vdGU6ICdzdGFydCBtb3ZlcyB0byB4ICsgcngnIH0sCiAgeyBpZDogJ3JlY3Rf
Y3NzX3gnLCB0YXJnZXQ6ICdyZWN0LWNzcy14Jywgc2hhcGU6ICc8cmVjdCBpZD0icmVjdC1jc3Mt
eCIgeD0iMjAwIiB5PSIxNTAiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIi8+JywKICAgIGNoYW5n
ZTogKCkgPT4geyAkKCdyZWN0LWNzcy14Jykuc3R5bGUueCA9ICcyNTBweCc7IH0sCiAgICBiZWZv
cmU6IFsyMDAsIDE1MF0sIGFmdGVyOiBbMjUwLCAxNTBdLCBub3RlOiAnQ1NTIGdlb21ldHJ5IHBy
b3BlcnR5LCBubyBhdHRyaWJ1dGUgY2hhbmdlcycgfSwKICB7IGlkOiAncmVjdF9jbGFzc19ydWxl
JywgdGFyZ2V0OiAncmVjdC1jbGFzcycsIHNoYXBlOiAnPHN0eWxlPiNyZWN0LWNsYXNzLm1vdmVk
IHsgeTogMjAwcHg7IH08L3N0eWxlPjxyZWN0IGlkPSJyZWN0LWNsYXNzIiB4PSIyMDAiIHk9IjE1
MCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiLz4nLAogICAgY2hhbmdlOiAoKSA9PiB7ICQoJ3Jl
Y3QtY2xhc3MnKS5jbGFzc0xpc3QuYWRkKCdtb3ZlZCcpOyB9LAogICAgYmVmb3JlOiBbMjAwLCAx
NTBdLCBhZnRlcjogWzIwMCwgMjAwXSwgbm90ZTogJ3N0eWxlc2hlZXQgcnVsZSBzdGFydHMgbWF0
Y2hpbmcnIH0sCiAgeyBpZDogJ3JlY3RfdHJhbnNmb3JtX2F0dHInLCB0YXJnZXQ6ICdyZWN0LXRy
YW5zZm9ybScsIHNoYXBlOiAnPHJlY3QgaWQ9InJlY3QtdHJhbnNmb3JtIiB4PSIyMDAiIHk9IjE1
MCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiLz4nLAogICAgY2hhbmdlOiAoKSA9PiB7ICQoJ3Jl
Y3QtdHJhbnNmb3JtJykuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAgNTAp
Jyk7IH0sCiAgICBiZWZvcmU6IFsyMDAsIDE1MF0sIGFmdGVyOiBbMjAwLCAyMDBdLCBub3RlOiAn
c3VwcGxlbWVudGFsIHRyYW5zZm9ybScgfSwKICB7IGlkOiAnY2lyY2xlX2N5X2F0dHInLCB0YXJn
ZXQ6ICdjaXJjbGUtY3knLCBzaGFwZTogJzxjaXJjbGUgaWQ9ImNpcmNsZS1jeSIgY3g9IjI1MCIg
Y3k9IjE1MCIgcj0iMTAwIi8+JywKICAgIGNoYW5nZTogKCkgPT4geyAkKCdjaXJjbGUtY3knKS5z
ZXRBdHRyaWJ1dGUoJ2N5JywgJzIwMCcpOyB9LAogICAgYmVmb3JlOiBbMzUwLCAxNTBdLCBhZnRl
cjogWzM1MCwgMjAwXSwgbm90ZTogJ3N0YXJ0IGlzIChjeCArIHIsIGN5KScgfSwKICB7IGlkOiAn
Y2lyY2xlX2Nzc19yJywgdGFyZ2V0OiAnY2lyY2xlLWNzcy1yJywgc2hhcGU6ICc8Y2lyY2xlIGlk
PSJjaXJjbGUtY3NzLXIiIGN4PSIyNTAiIGN5PSIxNTAiIHI9IjEwMCIvPicsCiAgICBjaGFuZ2U6
ICgpID0+IHsgJCgnY2lyY2xlLWNzcy1yJykuc3R5bGUuciA9ICc1MHB4JzsgfSwKICAgIGJlZm9y
ZTogWzM1MCwgMTUwXSwgYWZ0ZXI6IFszMDAsIDE1MF0sIG5vdGU6ICdDU1MgZ2VvbWV0cnkgcHJv
cGVydHknIH0sCiAgeyBpZDogJ2VsbGlwc2VfY3hfYXR0cicsIHRhcmdldDogJ2VsbGlwc2UtY3gn
LCBzaGFwZTogJzxlbGxpcHNlIGlkPSJlbGxpcHNlLWN4IiBjeD0iMjUwIiBjeT0iMTUwIiByeD0i
MTIwIiByeT0iODAiLz4nLAogICAgY2hhbmdlOiAoKSA9PiB7ICQoJ2VsbGlwc2UtY3gnKS5zZXRB
dHRyaWJ1dGUoJ2N4JywgJzMwMCcpOyB9LAogICAgYmVmb3JlOiBbMzcwLCAxNTBdLCBhZnRlcjog
WzQyMCwgMTUwXSwgbm90ZTogJ3N0YXJ0IGlzIChjeCArIHJ4LCBjeSknIH0sCiAgeyBpZDogJ2xp
bmVfeDFfYXR0cicsIHRhcmdldDogJ2xpbmUteDEnLCBzaGFwZTogJzxsaW5lIGlkPSJsaW5lLXgx
IiB4MT0iMjAwIiB5MT0iMTUwIiB4Mj0iNDAwIiB5Mj0iMTUwIiBzdHJva2U9ImJsYWNrIi8+JywK
ICAgIGNoYW5nZTogKCkgPT4geyAkKCdsaW5lLXgxJykuc2V0QXR0cmlidXRlKCd4MScsICcyNTAn
KTsgfSwKICAgIGJlZm9yZTogWzIwMCwgMTUwXSwgYWZ0ZXI6IFsyNTAsIDE1MF0sIG5vdGU6ICdu
b3QgYSBDU1MgcHJvcGVydHksIGF0dHJpYnV0ZSBvbmx5JyB9LAogIHsgaWQ6ICdwb2x5bGluZV9s
aXN0X2l0ZW0nLCB0YXJnZXQ6ICdwb2x5bGluZS1saXN0Jywgc2hhcGU6ICc8cG9seWxpbmUgaWQ9
InBvbHlsaW5lLWxpc3QiIHBvaW50cz0iMjAwLDE1MCA0MDAsMTUwIDQwMCwyNTAiLz4nLAogICAg
Y2hhbmdlOiAoKSA9PiB7ICQoJ3BvbHlsaW5lLWxpc3QnKS5wb2ludHMuZ2V0SXRlbSgwKS55ID0g
MjAwOyB9LAogICAgYmVmb3JlOiBbMjAwLCAxNTBdLCBhZnRlcjogWzIwMCwgMjAwXSwgbm90ZTog
J1NWR1BvaW50TGlzdCBpdGVtLCBubyBzZXRBdHRyaWJ1dGUnIH0sCiAgeyBpZDogJ3BvbHlnb25f
cG9pbnRzX2F0dHInLCB0YXJnZXQ6ICdwb2x5Z29uLXBvaW50cycsIHNoYXBlOiAnPHBvbHlnb24g
aWQ9InBvbHlnb24tcG9pbnRzIiBwb2ludHM9IjIwMCwxNTAgNDAwLDE1MCA0MDAsMjUwIi8+JywK
ICAgIGNoYW5nZTogKCkgPT4geyAkKCdwb2x5Z29uLXBvaW50cycpLnNldEF0dHJpYnV0ZSgncG9p
bnRzJywgJzIwMCwyMDAgNDAwLDIwMCA0MDAsMjUwJyk7IH0sCiAgICBiZWZvcmU6IFsyMDAsIDE1
MF0sIGFmdGVyOiBbMjAwLCAyMDBdLCBub3RlOiAncG9pbnRzIGF0dHJpYnV0ZScgfSwKICB7IGlk
OiAnaWRfbW92ZWQnLCB0YXJnZXQ6ICdieS1pZCcsIHNoYXBlOiAnPHJlY3QgaWQ9ImJ5LWlkIiB4
PSIyMDAiIHk9IjE1MCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiLz48cmVjdCBpZD0ib3RoZXIi
IHg9IjIwMCIgeT0iMjAwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjUwIi8+JywKICAgIGNoYW5nZTog
KCkgPT4geyAkKCdieS1pZCcpLmlkID0gJ2dvbmUnOyAkKCdvdGhlcicpLmlkID0gJ2J5LWlkJzsg
fSwKICAgIGJlZm9yZTogWzIwMCwgMTUwXSwgYWZ0ZXI6IFsyMDAsIDIwMF0sIG5vdGU6ICd0aGUg
aWQgbW92ZXMgdG8gYW5vdGhlciByZWN0JyB9LAogIHsgaWQ6ICdyZXBsYWNlZCcsIHRhcmdldDog
J3JlcGxhY2VkJywgc2hhcGU6ICc8cmVjdCBpZD0icmVwbGFjZWQiIHg9IjIwMCIgeT0iMTUwIiB3
aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCIvPicsCiAgICBjaGFuZ2U6ICgpID0+IHsgY29uc3QgciA9
ICQoJ3JlcGxhY2VkJykuY2xvbmVOb2RlKCk7IHIuc2V0QXR0cmlidXRlKCd5JywgJzIwMCcpOyAk
KCdyZXBsYWNlZCcpLnJlcGxhY2VXaXRoKHIpOyB9LAogICAgYmVmb3JlOiBbMjAwLCAxNTBdLCBh
ZnRlcjogWzIwMCwgMjAwXSwgbm90ZTogJ3JlbW92ZWQgYW5kIHJlcGxhY2VkIGJ5IGEgcmVjdCB3
aXRoIHRoZSBzYW1lIGlkJyB9LApdOwoKLy8gVGhlIGxpdmUgY29weSBpcyBkcmF3biBhdCBoYWxm
IHNpemUgKHZpZXdCb3gpOyB0aGUgbWFya3VwIHNob3duIGlzIHRoZSBhdXRob3Itc2l6ZSB2ZXJz
aW9uLgpmdW5jdGlvbiBzaG93TWFya3VwKHIpIHsKICByZXR1cm4gJzxzdmcgd2lkdGg9IjUwMCIg
aGVpZ2h0PSIzMDAiPlxuICAnICsgci5zaGFwZS5yZXBsYWNlKC8+PC9nLCAnPlxuICA8JykgKwog
ICAgICAgICAnXG4gIDx0ZXh0Pjx0ZXh0UGF0aCBocmVmPSIjJyArIHIudGFyZ2V0ICsgJyI+QUJD
PC90ZXh0UGF0aD48L3RleHQ+XG48L3N2Zz4nOwp9Ci8vICQgaXMgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQ7IHNob3duIGV4cGFuZGVkLgpmdW5jdGlvbiBzaG93U2NyaXB0KGZuKSB7CiAgaWYgKCFm
bikgcmV0dXJuICcvLyBubyBjaGFuZ2UnOwogIHJldHVybiBmbi50b1N0cmluZygpLnJlcGxhY2Uo
L15ccypcKFwpXHMqPT5ccypce1xzKi8sICcnKS5yZXBsYWNlKC9ccypcfVxzKiQvLCAnJykKICAg
IC5yZXBsYWNlKC9cJFwoJyhbXHctXSspJ1wpL2csICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
JDEnKSIpLnJlcGxhY2UoLzsgL2csICc7XG4nKTsKfQpmdW5jdGlvbiBtYXJrdXBDZWxsKHRleHQp
IHsKICBjb25zdCBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7IHAuY2xhc3NOYW1l
ID0gJ21hcmt1cCc7IHAudGV4dENvbnRlbnQgPSB0ZXh0OyByZXR1cm4gcDsKfQoKY29uc3QgbmVh
ciA9IChhLCBiKSA9PiBNYXRoLmFicyhhWzBdIC0gYlswXSkgPD0gVE9MRVJBTkNFICYmIE1hdGgu
YWJzKGFbMV0gLSBiWzFdKSA8PSBUT0xFUkFOQ0U7CmNvbnN0IHJlYWQgPSAodHApID0+IHsgY29u
c3QgcCA9IHRwLmdldFN0YXJ0UG9zaXRpb25PZkNoYXIoMCk7IHJldHVybiBbTWF0aC5yb3VuZChw
LnggKiAxMCkgLyAxMCwgTWF0aC5yb3VuZChwLnkgKiAxMCkgLyAxMF07IH07Cgpjb25zdCByb3dz
ID0ge307CmNvbnN0IHRib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI291dCB0Ym9keScp
Owpmb3IgKGNvbnN0IHIgb2YgUk9XUykgewogIGNvbnN0IHRyID0gdGJvZHkuaW5zZXJ0Um93KCk7
CiAgdHIuaW5zZXJ0Q2VsbCgpLnRleHRDb250ZW50ID0gci5pZDsKICBjb25zdCBsaXZlID0gdHIu
aW5zZXJ0Q2VsbCgpOwogIGxpdmUuaW5uZXJIVE1MID0gYDxzdmcgeG1sbnM9IiR7TlN9IiB3aWR0
aD0iMjUwIiBoZWlnaHQ9IjE1MCIgdmlld0JveD0iMCAwIDUwMCAzMDAiPiR7ci5zaGFwZX08dGV4
dD48dGV4dFBhdGggaHJlZj0iIyR7ci50YXJnZXR9Ij5BQkM8L3RleHRQYXRoPjwvdGV4dD48L3N2
Zz5gOwogIGNvbnN0IHN2ZyA9IGxpdmUuZmlyc3RFbGVtZW50Q2hpbGQ7CiAgdHIuaW5zZXJ0Q2Vs
bCgpLmFwcGVuZChtYXJrdXBDZWxsKHNob3dNYXJrdXAocikgKyAnXG5cbicgKyBzaG93U2NyaXB0
KHIuY2hhbmdlKSkpOwogIGNvbnN0IHRwID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoJ3RleHRQYXRoJyk7
CiAgY29uc3QgYmVmb3JlID0gcmVhZCh0cCk7CiAgbGV0IGVycm9yID0gbnVsbDsKICBpZiAoci5j
aGFuZ2UpIHsgdHJ5IHsgci5jaGFuZ2UoKTsgfSBjYXRjaCAoZSkgeyBlcnJvciA9IGUubmFtZSAr
ICc6ICcgKyBlLm1lc3NhZ2U7IH0gfQogIGNvbnN0IGFmdGVyID0gcmVhZCh0cCk7CiAgY29uc3Qg
bGFpZE91dCA9IG5lYXIoYmVmb3JlLCByLmJlZm9yZSk7CiAgY29uc3QgZm9sbG93cyA9IG5lYXIo
YWZ0ZXIsIHIuYWZ0ZXIpOwogIHJvd3Nbci5pZF0gPSB7IGJlZm9yZSwgYWZ0ZXIsIGV4cGVjdGVk
X2JlZm9yZTogci5iZWZvcmUsIGV4cGVjdGVkX2FmdGVyOiByLmFmdGVyLCBsYWlkX291dF9vbl9z
aGFwZTogbGFpZE91dCwgZm9sbG93cywgZXJyb3IsIG5vdGU6IHIubm90ZSB9OwogIHRyLmluc2Vy
dENlbGwoKS50ZXh0Q29udGVudCA9IGJlZm9yZS5qb2luKCcsICcpOwogIHRyLmluc2VydENlbGwo
KS50ZXh0Q29udGVudCA9IGFmdGVyLmpvaW4oJywgJyk7CiAgdHIuaW5zZXJ0Q2VsbCgpLnRleHRD
b250ZW50ID0gci5hZnRlci5qb2luKCcsICcpOwogIGNvbnN0IHYgPSB0ci5pbnNlcnRDZWxsKCk7
CiAgdi50ZXh0Q29udGVudCA9ICFsYWlkT3V0ID8gJ25vdCBsYWlkIG91dCBvbiBzaGFwZScgOiAo
Zm9sbG93cyA/ICdQQVNTJyA6ICdGQUlMJykgKyAoZXJyb3IgPyAnIFsnICsgZXJyb3IgKyAnXScg
OiAnJyk7CiAgdi5jbGFzc05hbWUgPSBsYWlkT3V0ICYmIGZvbGxvd3MgPyAnUEFTUycgOiAnRkFJ
TCc7Cn0KCmNvbnN0IHBheWxvYWQgPSB7CiAgcHJvYmU6ICd0ZXh0cGF0aC1iYXNpYy1zaGFwZS1s
aXZlLXVwZGF0ZS12MicsCiAgdXNlcl9hZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCwKICBlbmdp
bmVfaGludDogJycsCiAgY2hhcmFjdGVyX3NldDogZG9jdW1lbnQuY2hhcmFjdGVyU2V0LAogIGNv
bnRyb2xzX3Bhc3NlZDogcm93cy5jdGxfcGF0aF9kLmxhaWRfb3V0X29uX3NoYXBlICYmIHJvd3Mu
Y3RsX3BhdGhfZC5mb2xsb3dzICYmIHJvd3MuY3RsX3JlY3Rfbm9fZWRpdC5mb2xsb3dzCiAgICAm
JiBTdHJpbmcocm93cy5jdGxfcGF0aF9kLmJlZm9yZSkgIT09IFN0cmluZyhyb3dzLmN0bF9wYXRo
X2QuYWZ0ZXIpLAogIGV4cGVjdDogJ1NwZWMgKFNWRyAyIHRleHQuaHRtbCNUZXh0UGF0aEVsZW1l
bnRIcmVmQXR0cmlidXRlKTogZm9sbG93cyB0cnVlIG9uIGV2ZXJ5IHJvdy4gUHJlZGljdGVkOiBG
aXJlZm94IGFsbCB0cnVlLiBTYWZhcmkgMjYvMjcgdW5wYXRjaGVkOiBvbmx5IHRoZSB0d28gY29u
dHJvbHMgdHJ1ZS4gV2ViS2l0IHdpdGggdGhlIDMyODA0NCBwYXRjaDogYWxsIHRydWUuIENocm9t
ZTogcGF0aCBjb250cm9sIHRydWUsIGV2ZXJ5IHNoYXBlIHJvdyBsYWlkX291dF9vbl9zaGFwZSBm
YWxzZS4nLAogIHJvd3MsCn07CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqc29uJykudGV4dENv
bnRlbnQgPSBhc2NpaUpTT04ocGF5bG9hZCk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0
dXMnKS50ZXh0Q29udGVudCA9ICdkb25lJzsKPC9zY3JpcHQ+Cgo8c2NyaXB0PgovLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLy8gUGF5bG9hZCBidXR0b25zLiBDQU5PTklDQUwgU09VUkNFOiB0ZW1wbGF0
ZXMvcHJvYmUtcGF5bG9hZC1idXR0b25zLmh0bWwKLy8KLy8gRG8gTk9UIGhhbmQtZWRpdCB0aGlz
IGJsb2NrIGluc2lkZSBhIHByb2JlLiBFZGl0IHRoZSBjYW5vbmljYWwgZmlsZSBhbmQgcnVuCi8v
ICAgICBweXRob24zIHRvb2xzL3N5bmMtcHJvYmUtYnV0dG9ucy5weSAtLWFwcGx5Ci8vIHdoaWNo
IHJld3JpdGVzIHRoaXMgYmxvY2sgaW4gdGVtcGxhdGVzL3Byb2JlLXRlbXBsYXRlLmh0bWwgYW5k
IGluIGV2ZXJ5Ci8vIGF0dHJpYnV0ZXMvKiovZXhhbXBsZXMvcHJvYmUtKi5odG1sLCBkb20vKios
IGVsZW1lbnRzLyoqLiBCZWZvcmUgdGhpcyB0b29sCi8vIGV4aXN0ZWQgdGhlIDM4IHByb2JlcyBj
YXJyaWVkIDkgZGlmZmVyZW50IHZhcmlhbnRzIG9mIGl0LgovLwovLyBTZWxmLWNvbnRhaW5lZCBv
biBwdXJwb3NlOiBpdCBmaW5kcyB0aGUgcGF5bG9hZCA8cHJlPiBpdHNlbGYgKGJ5ICNqc29uLCBl
bHNlCi8vIHRoZSBsYXN0IDxwcmU+IG9uIHRoZSBwYWdlKSwgc28gaXQgd29ya3Mgd2l0aCBldmVy
eSBwcm9iZSBzdHlsZSB3aXRob3V0Ci8vIHRvdWNoaW5nIHRoZSBwcm9iZSdzIG93biBsb2dpYy4K
Ly8KLy8gVHdvIGJ1dHRvbnM6Ci8vICAgQ29weSBKU09OIHBheWxvYWQ6IGNsaXBib2FyZCwgZm9y
IHBhc3RpbmcgaW50byBhIGNvbnZlcnNhdGlvbiBvciBhbiBlZGl0b3IuCi8vICAgRG93bmxvYWQg
SlNPTjogd3JpdGVzIGEgY29ycmVjdGx5LW5hbWVkIGZpbGUgd2hlcmUgdGhlIGJyb3dzZXIgc3Vw
cG9ydHMKLy8gICAgIGl0LiBNaW5pQnJvd3NlciBoYWQgbm8gZG93bmxvYWQgVUkgdW50aWwgS2Fy
bCBhZGRlZCBvbmUgb24gMjAyNi0wOC0xNjsKLy8gICAgIG9sZGVyIGJ1aWxkcyByZW5kZXIgdGhl
IGJsb2IgaW5zdGVhZCBvZiBzYXZpbmcgaXQsIGFuZCBDb3B5IGlzIHRoZQovLyAgICAgcm91dGUg
dGhlcmUuCi8vCi8vIFByZWZlciB0aGUgZG93bmxvYWQgd2hlcmUgaXQgd29ya3MsIGJlY2F1c2Ug
YSBzYXZlZCBmaWxlIGNhbiBiZSByZWFkIHNlbGVjdGl2ZWx5Ci8vIGFuZCBhIHBhc3RlZCBvbmUg
Y2Fubm90LiBCdXQgdGhlIENvcHkgcGF0aCBpcyBub3cgc2FmZSB0b286IHByb2JlcyByZW5kZXIg
dGhlaXIKLy8gcGF5bG9hZCBhcyBBU0NJSS1vbmx5IEpTT04gKFx1WFhYWCBlc2NhcGVzKSwgc28g
YSBjbGlwYm9hcmQtYW5kLWVkaXRvciByb3VuZCB0cmlwCi8vIGNhbm5vdCBjaGFuZ2UgYSBieXRl
LiBUaGF0IG1hdHRlcmVkIG9uIDIwMjYtMDgtMTUsIHdoZW4gcGFzdGluZyBhIHBheWxvYWQgaW50
byBhCi8vIHRleHQgZmlsZSByZS1lbmNvZGVkIGFuIGVtIGRhc2ggaW4gYSB2ZXJkaWN0IGtleSBh
bmQgbWFkZSB0aGUgcm93IGxvb2sgbWlzc2luZy4KLy8KLy8gVGhlIGRvd25sb2FkZWQgYnl0ZXMg
YXJlIElERU5USUNBTCB0byB3aGF0IHRoZSBwYWdlIGRpc3BsYXlzLiBOb3RoaW5nIGlzCi8vIGlu
amVjdGVkIGF0IHNhdmUgdGltZSwgc28gYSBwYXN0ZWQgcGF5bG9hZCBhbmQgYSBzYXZlZCBwYXls
b2FkIGFyZSB0aGUgc2FtZQovLyBhcnRpZmFjdDsgdGhlIHJ1biBkYXRlIGxpdmVzIGluIHRoZSBm
aWxlbmFtZSBpbnN0ZWFkLgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGZ1bmN0aW9uICgpIHsKICBj
b25zdCBwcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnanNvbicpCiAgICB8fCBbLi4uZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlJyldLnBvcCgpOwogIGlmICghcHJlKSByZXR1cm47
CgogIGNvbnN0IGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICBiYXIuc3R5bGUu
Y3NzVGV4dCA9ICdkaXNwbGF5OmZsZXg7Z2FwOi42cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4
LXdyYXA6d3JhcDttYXJnaW46LjVyZW0gMCc7CgogIGNvbnN0IG1rQnRuID0gKGxhYmVsKSA9PiB7
CiAgICBjb25zdCBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICBiLnR5
cGUgPSAnYnV0dG9uJzsKICAgIGIudGV4dENvbnRlbnQgPSBsYWJlbDsKICAgIGIuc3R5bGUuY3Nz
VGV4dCA9ICdmb250OmluaGVyaXQ7cGFkZGluZzouM3JlbSAuOHJlbTtjdXJzb3I6cG9pbnRlcic7
CiAgICByZXR1cm4gYjsKICB9OwogIGNvbnN0IGNvcHlCdG4gPSBta0J0bignQ29weSBKU09OIHBh
eWxvYWQnKTsKICBjb25zdCBkbEJ0biA9IG1rQnRuKCdEb3dubG9hZCBKU09OJyk7CgogIGNvbnN0
IHN0YXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIHN0YXRlLnNldEF0dHJp
YnV0ZSgncm9sZScsICdzdGF0dXMnKTsKICBzdGF0ZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScs
ICdwb2xpdGUnKTsKICBzdGF0ZS5zdHlsZS5jc3NUZXh0ID0gJ2ZvbnQtc2l6ZToxMnB4O2ZvbnQt
d2VpZ2h0OjcwMCc7CgogIGJhci5hcHBlbmQoY29weUJ0biwgZGxCdG4sIHN0YXRlKTsKICBwcmUu
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYmFyLCBwcmUpOwoKICBjb25zdCBzYXkgPSAobXNnLCBv
aykgPT4gewogICAgc3RhdGUudGV4dENvbnRlbnQgPSBtc2c7CiAgICBzdGF0ZS5zdHlsZS5jb2xv
ciA9IG9rID8gJyMwNjAnIDogJyNhMDAnOwogIH07CgogIC8vIFJlZnVzZSB0byBoYW5kIG92ZXIg
YSBwYXlsb2FkIHRoZSBwcm9iZSBoYXMgbm90IGZpbmlzaGVkIHdyaXRpbmcuCiAgY29uc3QgcGF5
bG9hZFRleHQgPSAoKSA9PiB7CiAgICBjb25zdCB0ZXh0ID0gcHJlLnRleHRDb250ZW50LnRyaW0o
KTsKICAgIHJldHVybiAoIXRleHQgfHwgdGV4dCA9PT0gJ+KApicpID8gbnVsbCA6IHRleHQ7CiAg
fTsKCiAgLy8gQnJvd3NlciArIHZlcnNpb24gZm9yIHRoZSBmaWxlbmFtZS4gT3JkZXIgbWF0dGVy
czogRWRnZSdzIFVBIGNvbnRhaW5zCiAgLy8gIkNocm9tZSIsIGFuZCBDaHJvbWUncyBjb250YWlu
cyAiU2FmYXJpIiwgc28gdGhlIHNwZWNpZmljIHRlc3RzIGNvbWUgZmlyc3QuCiAgY29uc3QgYnJv
d3NlclRhZyA9ICh1YSwgaGludCkgPT4gewogICAgbGV0IG07CiAgICBpZiAoKG0gPSAvRmlyZWZv
eFwvKFtcZC5dKykvLmV4ZWModWEpKSkgcmV0dXJuICdmaXJlZm94LScgKyBtWzFdOwogICAgaWYg
KChtID0gL0VkZ1wvKFtcZC5dKykvLmV4ZWModWEpKSkgcmV0dXJuICdlZGdlLScgKyBtWzFdOwog
ICAgaWYgKChtID0gLyg/OkNocm9tZXxDaHJvbWl1bSlcLyhbXGQuXSspLy5leGVjKHVhKSkpIHJl
dHVybiAnY2hyb21lLScgKyBtWzFdOwogICAgaWYgKChtID0gL1ZlcnNpb25cLyhbXGQuXSspW14p
XSpTYWZhcmkvLmV4ZWModWEpKSkgcmV0dXJuICdzYWZhcmktJyArIG1bMV07CiAgICBpZiAoL0Fw
cGxlV2ViS2l0Ly50ZXN0KHVhKSkgcmV0dXJuICd3ZWJraXQtdW5rbm93bi12ZXJzaW9uJzsKICAg
IHJldHVybiAoaGludCB8fCAndW5rbm93bicpICsgJy11bmtub3duLXZlcnNpb24nOwogIH07Cgog
IGNvbnN0IHNsdWcgPSAocykgPT4gU3RyaW5nKHMpLnJlcGxhY2UoL1teQS1aYS16MC05Ll8tXSsv
ZywgJy0nKS5yZXBsYWNlKC9eLSt8LSskL2csICcnKTsKCiAgLy8gcnVuLTxkYXRlPi08YnJvd3Nl
cj4tPHZlcnNpb24+LTxwcm9iZT4uanNvbiwgbWF0Y2hpbmcgdGhlIG5hbWluZyBhbHJlYWR5CiAg
Ly8gdXNlZCB1bmRlciA8ZmFtaWx5Pi9yZXBvcnRzLy4KICBjb25zdCBzdWdnZXN0ZWRGaWxlbmFt
ZSA9ICh0ZXh0KSA9PiB7CiAgICBsZXQgcHJvYmUgPSAnJywgdWEgPSBuYXZpZ2F0b3IudXNlckFn
ZW50LCBoaW50ID0gJyc7CiAgICB0cnkgewogICAgICBjb25zdCBwID0gSlNPTi5wYXJzZSh0ZXh0
KTsKICAgICAgcHJvYmUgPSBwLnByb2JlIHx8ICcnOwogICAgICB1YSA9IHAudXNlcl9hZ2VudCB8
fCB1YTsKICAgICAgaGludCA9IHAuZW5naW5lX2hpbnQgfHwgJyc7CiAgICB9IGNhdGNoIChlKSB7
CiAgICAgIC8vIEEgcGF5bG9hZCB0aGF0IGlzIG5vdCB2YWxpZCBKU09OIGlzIHdvcnRoIHNhdmlu
ZyBhbnl3YXksIHNvIGZhbGwgYmFjayB0bwogICAgICAvLyB0aGUgZG9jdW1lbnQgdGl0bGUgc28g
dGhlIGZpbGUgaXMgc3RpbGwgaWRlbnRpZmlhYmxlLgogICAgICBwcm9iZSA9IChkb2N1bWVudC50
aXRsZSB8fCAncHJvYmUnKS50b0xvd2VyQ2FzZSgpOwogICAgfQogICAgaWYgKCFwcm9iZSkgcHJv
YmUgPSAoZG9jdW1lbnQudGl0bGUgfHwgJ3Byb2JlJykudG9Mb3dlckNhc2UoKTsKICAgIGNvbnN0
IGQgPSBuZXcgRGF0ZSgpOwogICAgY29uc3QgZGF0ZSA9IFtkLmdldEZ1bGxZZWFyKCksCiAgICAg
ICAgICAgICAgICAgIFN0cmluZyhkLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpLAog
ICAgICAgICAgICAgICAgICBTdHJpbmcoZC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyldLmpv
aW4oJy0nKTsKICAgIHJldHVybiBbJ3J1bicsIGRhdGUsIGJyb3dzZXJUYWcodWEsIGhpbnQpLCBz
bHVnKHByb2JlKV0uam9pbignLScpICsgJy5qc29uJzsKICB9OwoKICBjb3B5QnRuLmFkZEV2ZW50
TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4gewogICAgY29uc3QgdGV4dCA9IHBheWxvYWRU
ZXh0KCk7CiAgICBpZiAoIXRleHQpIHsgc2F5KCd0aGUgcHJvYmUgaGFzIG5vdCBmaW5pc2hlZCB5
ZXQuIFdhaXQgZm9yICJkb25lIicsIGZhbHNlKTsgcmV0dXJuOyB9CgogICAgLy8gVGhlIGFzeW5j
IENsaXBib2FyZCBBUEkgaXMgZnJlcXVlbnRseSB1bmF2YWlsYWJsZSBvbiBmaWxlOi8vIHBhZ2Vz
LCBzbwogICAgLy8gZmFsbCBiYWNrIHRvIGV4ZWNDb21tYW5kLCBhbmQgdGhlbiB0byBzaW1wbHkg
bGVhdmluZyB0aGUgcGF5bG9hZAogICAgLy8gc2VsZWN0ZWQgc28g4oyYQyB3b3Jrcy4KICAgIHRy
eSB7CiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpOwogICAg
ICBzYXkoJ2NvcGllZCAnICsgdGV4dC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoKSArICcgY2hhcmFj
dGVycycsIHRydWUpOwogICAgICByZXR1cm47CiAgICB9IGNhdGNoIChlKSB7IC8qIGZhbGwgdGhy
b3VnaCB0byB0aGUgc2VsZWN0aW9uIHBhdGggKi8gfQoKICAgIGNvbnN0IHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhwcmUpOwogICAg
Y29uc3Qgc2VsID0gZ2V0U2VsZWN0aW9uKCk7CiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CiAg
ICBzZWwuYWRkUmFuZ2UocmFuZ2UpOwogICAgbGV0IG9rID0gZmFsc2U7CiAgICB0cnkgeyBvayA9
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7IH0gY2F0Y2ggKGUpIHsgb2sgPSBmYWxzZTsg
fQogICAgc2F5KG9rID8gJ2NvcGllZCAnICsgdGV4dC5sZW5ndGgudG9Mb2NhbGVTdHJpbmcoKSAr
ICcgY2hhcmFjdGVycyAoZmFsbGJhY2spJwogICAgICAgICAgIDogJ2NsaXBib2FyZCBibG9ja2Vk
LiBUaGUgcGF5bG9hZCBpcyBzZWxlY3RlZCwgcHJlc3Mg4oyYQycsIG9rKTsKICB9KTsKCiAgZGxC
dG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICBjb25zdCB0ZXh0ID0gcGF5
bG9hZFRleHQoKTsKICAgIGlmICghdGV4dCkgeyBzYXkoJ3RoZSBwcm9iZSBoYXMgbm90IGZpbmlz
aGVkIHlldC4gV2FpdCBmb3IgImRvbmUiJywgZmFsc2UpOyByZXR1cm47IH0KCiAgICBjb25zdCBu
YW1lID0gc3VnZ2VzdGVkRmlsZW5hbWUodGV4dCk7CiAgICB0cnkgewogICAgICBjb25zdCBibG9i
ID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTsKICAgICAg
Y29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgICAgY29uc3QgYSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgYS5ocmVmID0gdXJsOwogICAgICBhLmRv
d25sb2FkID0gbmFtZTsKICAgICAgYS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOwogICAgICBhLmNsaWNrKCk7CiAgICAgIC8vIFJldm9r
ZSBvbiBhIHRpbWVyIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5OiBzb21lIGVuZ2luZXMgaGF2ZSBu
b3QKICAgICAgLy8gZmluaXNoZWQgcmVhZGluZyB0aGUgYmxvYiB3aGVuIGNsaWNrKCkgcmV0dXJu
cy4KICAgICAgc2V0VGltZW91dCgoKSA9PiB7IFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTsgYS5y
ZW1vdmUoKTsgfSwgMTAwMDApOwogICAgICAvLyBOT1QgInNhdmVkIi4gTm90aGluZyBoZXJlIGNh
biB0ZWxsIHdoZXRoZXIgYSBmaWxlIHdhcyBhY3R1YWxseSB3cml0dGVuOgogICAgICAvLyBgJ2Rv
d25sb2FkJyBpbiBIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGVgIGlzIHRydWUgZXZlbiBpbiBh
IGJyb3dzZXIgd2l0aAogICAgICAvLyBubyBkb3dubG9hZCBVSSBhdCBhbGwsIHNvIHRoZXJlIGlz
IG5vIGZlYXR1cmUgdGVzdCB0byBydW4uIE1pbmlCcm93c2VyIGlzCiAgICAgIC8vIGV4YWN0bHkg
dGhhdCBjYXNlOiB0aGUgY2xpY2sgcmVuZGVycyB0aGUgYmxvYiBpbnN0ZWFkIG9mIHNhdmluZyBp
dCwgYW5kCiAgICAgIC8vIHRoaXMgdXNlZCB0byBjbGFpbSBzdWNjZXNzIGFueXdheSAoMjAyNi0w
OC0xNSkuIFNheSB3aGF0IHdhcyBhdHRlbXB0ZWQgYW5kCiAgICAgIC8vIGxldCB0aGUgcGVyc29u
IGxvb2tpbmcgYXQgdGhlaXIgRG93bmxvYWRzIGZvbGRlciBiZSB0aGUganVkZ2UuCiAgICAgIHNh
eSgncmVxdWVzdGVkICcgKyBuYW1lICsgJy4gSWYgbm90aGluZyBhcHBlYXJzIGluIERvd25sb2Fk
cyB0aGlzIGJyb3dzZXIgaGFzIG5vICcKICAgICAgICAgICsgJ2Rvd25sb2FkIFVJOiB1c2UgQ29w
eSBpbnN0ZWFkLCB0aGUgcGF5bG9hZCBpcyBBU0NJSS1vbmx5IHNvIGl0IHN1cnZpdmVzIGFueSAn
CiAgICAgICAgICArICdlZGl0b3InLCB0cnVlKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgc2F5
KCdkb3dubG9hZCBibG9ja2VkICgnICsgZS5uYW1lICsgJykuIFVzZSBDb3B5IGluc3RlYWQnLCBm
YWxzZSk7CiAgICB9CiAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>