<?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>15162</bug_id>
          
          <creation_ts>2007-09-08 09:07:23 -0700</creation_ts>
          <short_desc>hit testing does not respect clip paths</short_desc>
          <delta_ts>2011-01-02 03:24:17 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="jay">jay</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>jeffschiller</cc>
    
    <cc>krit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784</commentid>
    <comment_count>0</comment_count>
    <who name="jay">jay</who>
    <bug_when>2007-09-08 09:07:23 -0700</bug_when>
    <thetext>in the attachment, only the visible area should be active, not the whole anchor.

also the cursor remains an arrow, should change to hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785</commentid>
    <comment_count>1</comment_count>
      <attachid>16228</attachid>
    <who name="jay">jay</who>
    <bug_when>2007-09-08 09:08:28 -0700</bug_when>
    <thetext>Created attachment 16228
clip-path with anchor demo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-24 16:32:15 -0700</bug_when>
    <thetext>Both are hit testing issues (one is not seeming to respect clip-paths during hit testing) but probably should be separate bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57111</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-26 14:14:17 -0700</bug_when>
    <thetext>I believe this only applies to SVG objects where pointer-events is set to visiblePainted or painted.  In any case since visiblePainted is default, this is very common and should be fixed.  Attaching a simpler test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57112</commentid>
    <comment_count>4</comment_count>
      <attachid>16403</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-26 14:17:00 -0700</bug_when>
    <thetext>Created attachment 16403
simple test case (not ready for DRT)

Unfortunately due to bug 15289 the clip is not completely empty, mousing over 0, 0 should actually change the cursor... but the test is close enough. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213317</commentid>
    <comment_count>5</comment_count>
      <attachid>53543</attachid>
    <who name="Hiren Joshi">hirenj</who>
    <bug_when>2010-04-16 11:23:34 -0700</bug_when>
    <thetext>Created attachment 53543
Another test case for this bug

Another test case for this bug - still present in WebKit r57509 Mac OS X 10.6.

Behaviour is as expected in Firefox 3.6.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233392</commentid>
    <comment_count>6</comment_count>
      <attachid>57681</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-02 12:46:44 -0700</bug_when>
    <thetext>Created attachment 57681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234104</commentid>
    <comment_count>7</comment_count>
      <attachid>57681</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-04 01:41:08 -0700</bug_when>
    <thetext>Comment on attachment 57681
Patch

In general that looks fine, though I&apos;d like to see the PE_FILL stuff encapsulated. How about passing style()-&gt;pointerEvents() and HitTestRequest ot PointerEventsHitRules? It could either grab the style()-&gt;pointerEvents() or set it to PE_FILL when request.svgClipContent() is true? Several other comments leading to r-:

WebCore/rendering/RenderPath.h:50
 +      bool fillContains(const FloatPoint&amp;, bool requiresFill = true, WindRule = RULE_NONZERO) const;
Please use a parameter name here, looks odd.

WebCore/rendering/RenderSVGResourceClipper.cpp:289
 +          IntPoint hitPoint = IntPoint();
This is unncessary, no need to call the assignment operator.

WebCore/rendering/RenderSVGResourceClipper.h:58
 +      bool hitTestClipContent(const FloatRect&amp;, FloatPoint);
Please pass FloatPoint as const-reference as well.

LayoutTests/svg/dynamic-updates/script-tests/SVGClipPath-influences-hitTesting.js:26
 +  var rectElementFG = createSVGElement(&quot;rect&quot;);
Why not name it foreground/background instead of using abbrevations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234527</commentid>
    <comment_count>8</comment_count>
      <attachid>57961</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-04 22:17:26 -0700</bug_when>
    <thetext>Created attachment 57961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234649</commentid>
    <comment_count>9</comment_count>
      <attachid>57961</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-06 03:59:41 -0700</bug_when>
    <thetext>Comment on attachment 57961
Patch

Looks great, r=me. One typo to fix before landing:

LayoutTests/svg/dynamic-updates/script-tests/SVGClipPath-influences-hitTesting.js:34
 +  // Two rects are drawn. One in the bckground and one in the foreground. The rect
Typo &quot;background&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234653</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-06 05:27:19 -0700</bug_when>
    <thetext>Committed r60761: &lt;http://trac.webkit.org/changeset/60761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328390</commentid>
    <comment_count>11</comment_count>
      <attachid>57961</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-02 03:24:17 -0800</bug_when>
    <thetext>Comment on attachment 57961
Patch

Clearing review flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16228</attachid>
            <date>2007-09-08 09:08:28 -0700</date>
            <delta_ts>2007-09-26 14:17:00 -0700</delta_ts>
            <desc>clip-path with anchor demo</desc>
            <filename>clipPath.svg</filename>
            <type>image/svg+xml</type>
            <size>910</size>
            <attacher name="jay">jay</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIKICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAg
ICB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KCjxkZWZzPgogIDxzeW1ib2wgaWQ9Imxpbmsi
IHZpZXdCb3g9IjAgMCAxNTAgMTUwIj4KICAgIDxjaXJjbGUgY3g9Ijc1IiBjeT0iNzUiIHI9Ijc1
IiAvPgogIDwvc3ltYm9sPgoKICA8Y2xpcFBhdGggaWQ9ImhvbGUiPgogICAgPGNpcmNsZSBjeD0i
MzMlIiBjeT0iNTUlIiByPSIxMiUiLz4KICA8L2NsaXBQYXRoPgo8L2RlZnM+CgogIDwhLS0gVGhl
IHNoZWV0IHNpdHMgaW4gYmFjaywgdGhvdWdoIGl0IHNlZW1zIGxpa2UgaXQncyBpbiBmcm9udAog
ICAgICAgYmVjYXVzZSBpdCBpcyBub3QgY2xpcHBlZCBsaWtlIGV2ZXJ5dGhpbmcgZWxzZSAtLT4K
PHJlY3QgaWQ9InNoZWV0IiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUi
IGZpbGw9ImJsdWUiIC8+CgogIDwhLS0gVGhpcyBncm91cCBjb250YWlucyBhbGwgdGhlIHJlc3Qg
b2YgeW91ciBTVkcgZWxlbWVudHMKICAgICAgIChpbmNsdWRpbmcgdGhlIGxpbmspIGJ1dCBpdCBp
cyBjbGlwcGVkIGJ5IHRoZSBob2xlIC0tPgo8ZyBjbGlwLXBhdGg9InVybCgjaG9sZSkiID4KICA8
cmVjdCBpZD0iYmFja2dyb3VuZCIgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIx
MDAlIiBmaWxsPSJibGFjayIgLz4KCiAgPGEgeGxpbms6aHJlZj0iaHR0cDovL3d3dy5wZWVwby5j
by51ayI+CiAgICA8dXNlIHhsaW5rOmhyZWY9IiNsaW5rIiB4PSIyMCUiIHk9IjUwJSIgd2lkdGg9
IjEwJSIgaGVpZ2h0PSIxMCUiCmZpbGw9InB1cnBsZSIgLz4KICA8L2E+Cgo8L2c+Cjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16403</attachid>
            <date>2007-09-26 14:17:00 -0700</date>
            <delta_ts>2007-09-26 14:17:00 -0700</delta_ts>
            <desc>simple test case (not ready for DRT)</desc>
            <filename>clip.svg</filename>
            <type>image/svg+xml</type>
            <size>514</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIKICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAg
ICB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KICAgICAKPGRlZnM+CiAgPGNsaXBQYXRoIGlk
PSJub3RoaW5nIj4KICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICA8L2NsaXBQYXRo
Pgo8L2RlZnM+Cgo8cmVjdCBzdHJva2U9ImJsdWUiIGZpbGw9Im5vbmUiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiAvPgo8ZyBjbGlwLXBhdGg9InVybCgjbm90aGluZykiID4KICA8YSB4bGluazpo
cmVmPSJodHRwOi8vd3d3LnBlZXBvLmNvLnVrIj4KICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiAvPgogIDwvYT4KPC9nPgoKPHRleHQgeD0iMTAiIHk9IjEyMCI+TW91c2Ugb3ZlciB0
aGUgYmx1ZSBzcXVhcmUsIHRoZSBjdXJzb3Igc2hvdWxkIG5vdCBjaGFuZ2U8L3RleHQ+Cjwvc3Zn
Pg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>53543</attachid>
            <date>2010-04-16 11:23:34 -0700</date>
            <delta_ts>2010-04-16 11:23:34 -0700</delta_ts>
            <desc>Another test case for this bug</desc>
            <filename>clipping-testcase.svg</filename>
            <type>image/svg+xml</type>
            <size>1339</size>
            <attacher name="Hiren Joshi">hirenj</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hsaW5rIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIg
cHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIGlkPSJjYW52YXMiPgogICAgPGRlZnM+CiAg
ICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwIj4KICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwZmYiIHN0cm9r
ZS13aWR0aD0iMSIgaWQ9ImNsaXBfcmVjdCIvPiAgICAgICAgICAgIAogICAgICAgIDwvY2xpcFBh
dGg+CiAgICA8L2RlZnM+CiAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCIgZmlsbD0iI2ZmZmZmZiIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xh
YmVsJykudGV4dENvbnRlbnQgPSAnJzsiLz4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI3
NSIgaGVpZ2h0PSIzMCIgZmlsbD0iI2ZmMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBvbmNsaWNrPSJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWwnKS50ZXh0Q29udGVudCA9ICdDbGlja2VkIG9u
IHJlZCBib3gnOyIgY3Vyc29yPSJwb2ludGVyIiAvPgogICAgPHJlY3QgeD0iMCIgeT0iMzAiIHdp
ZHRoPSI3NSIgaGVpZ2h0PSIzMCIgZmlsbD0iIzAwZmYwMCIgc3Ryb2tlPSIjMDAwMDAwIiBvcGFj
aXR5PSIwLjIiLz4KICAgIDxyZWN0IHg9IjAiIHk9IjMwIiB3aWR0aD0iNzUiIGhlaWdodD0iMzAi
IGZpbGw9IiMwMGZmMDAiIHN0cm9rZT0iIzAwMDAwMCIgY2xpcC1wYXRoPSJ1cmwoI2NsaXApIiBv
bmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWwnKS50ZXh0Q29udGVudCA9ICdD
bGlja2VkIG9uIGdyZWVuIGJveCc7IHJldHVybiBmYWxzZTsiIGN1cnNvcj0icG9pbnRlciIvPgog
ICAgPHVzZSB4PSIwIiB5PSIwIiB4bGluazpocmVmPSIjY2xpcF9yZWN0Ii8+CiAgICA8dGV4dCBm
b250LXNpemU9IjIiIHg9IjAiIHk9IjcwIj5CbHVlIGJveCA9IENsaXBwaW5nIGFyZWEsIG9ubHkg
YXBwbGllZCB0byBncmVlbiBib3g8L3RleHQ+CiAgICA8dGV4dCBmb250LXNpemU9IjIiIGlkPSJs
YWJlbCIgeD0iMCIgeT0iNzUiPkV2ZW50cyBhcmUgZmlyZWQgZm9yIHRoZSBjbGlwcGVkIGFyZWEg
b24gdGhlIGdyZWVuIGJveCwgc2VlbiB3aGVuIGNsaWNraW5nIG9uIHRoZSBmYWRlZCBhcmVhIG9m
IHRoZSBncmVlbiBib3g8L3RleHQ+Cjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57681</attachid>
            <date>2010-06-02 12:46:44 -0700</date>
            <delta_ts>2010-06-04 22:17:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-15162-20100602214641.patch</filename>
            <type>text/plain</type>
            <size>25352</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDU3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYtMDIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBoaXQg
dGVzdGluZyBkb2VzIG5vdCByZXNwZWN0IGNsaXAgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTYyCisKKyAgICAgICAgVGVzdDogc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbAorICAg
ICAgICAKKyAgICAgICAgQWRkZWQgYSBjaGVjaywgaWYgYSBmbG9hdCBwb2ludCBpcyBub3Qgb25s
eSBpbiB0aGUgc2hhcGUvb2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgYnV0IGFsc28gaXMgbm90
IGluIHRoZSBjbGlwcGVkIGF3YXkgYXJlYSBvZiBhIGNsaXBQYXRoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVz
dDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzdmdDbGlwQ29udGVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUGF0aDo6ZmlsbENvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6
Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvaW50SW5DbGlwcGluZ0FyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJT
dXBwb3J0Lmg6CisKIDIwMTAtMDYtMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaAkocmV2aXNpb24gNjA1MzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSGl0VGVzdFJlcXVlc3QgewogcHVibGljOgogICAgIGVudW0g
UmVxdWVzdFR5cGUgewotICAgICAgICBSZWFkT25seSA9IDB4MSwKLSAgICAgICAgQWN0aXZlID0g
MHgyLAotICAgICAgICBNb3VzZU1vdmUgPSAweDQsCi0gICAgICAgIE1vdXNlVXAgPSAweDgsCi0g
ICAgICAgIElnbm9yZUNsaXBwaW5nID0gMHgxMAorICAgICAgICBSZWFkT25seSA9IDEgPDwgMSwK
KyAgICAgICAgQWN0aXZlID0gMSA8PCAyLAorICAgICAgICBNb3VzZU1vdmUgPSAxIDw8IDMsCisg
ICAgICAgIE1vdXNlVXAgPSAxIDw8IDQsCisgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1
LAorICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEgPDwgNgogICAgIH07CiAKICAgICBIaXRUZXN0
UmVxdWVzdChpbnQgcmVxdWVzdFR5cGUpCkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIG1vdXNlTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBNb3VzZU1vdmU7
IH0KICAgICBib29sIG1vdXNlVXAoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgTW91
c2VVcDsgfQogICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3RUeXBlICYgSWdub3JlQ2xpcHBpbmc7IH0KKyAgICBib29sIHN2Z0NsaXBDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFNWR0NsaXBDb250ZW50OyB9CiAKIHByaXZhdGU6
CiAgICAgaW50IG1fcmVxdWVzdFR5cGU7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAko
cmV2aXNpb24gNjA1NDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNs
dWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxlcy5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgiCkBAIC03MSw3ICs3Miw3IEBAIFJlbmRlclBhdGg6OlJlbmRlclBhdGgo
U1ZHU3R5bGVkVHJhbnNmb3IKIHsKIH0KIAotYm9vbCBSZW5kZXJQYXRoOjpmaWxsQ29udGFpbnMo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wgcmVxdWlyZXNGaWxsKSBjb25zdAorYm9vbCBS
ZW5kZXJQYXRoOjpmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wgcmVx
dWlyZXNGaWxsLCBXaW5kUnVsZSBmaWxsUnVsZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZmlsbEJv
dW5kaW5nQm94LmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzks
NyArODAsNyBAQCBib29sIFJlbmRlclBhdGg6OmZpbGxDb250YWlucyhjb25zdCBGbG9hCiAgICAg
aWYgKHJlcXVpcmVzRmlsbCAmJiAhUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291
cmNlKHRoaXMsIHN0eWxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
bV9wYXRoLmNvbnRhaW5zKHBvaW50LCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWxsUnVsZSgpKTsK
KyAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHBvaW50LCBmaWxsUnVsZSk7CiB9CiAKIGJvb2wg
UmVuZGVyUGF0aDo6c3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wg
cmVxdWlyZXNTdHJva2UpIGNvbnN0CkBAIC0xOTUsNyArMTk2LDcgQEAgdm9pZCBSZW5kZXJQYXRo
OjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0bwogICAgICAgICByZWN0cy5hcHBlbmQocmVjdCk7CiB9
CiAKLWJvb2wgUmVuZGVyUGF0aDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQorYm9vbCBSZW5kZXJQYXRoOjpub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24gaGl0
VGVzdEFjdGlvbikKIHsKICAgICAvLyBXZSBvbmx5IGRyYXcgaW4gdGhlIGZvcmdyb3VuZCBwaGFz
ZSwgc28gd2Ugb25seSBoaXQtdGVzdCB0aGVuLgogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhp
dFRlc3RGb3JlZ3JvdW5kKQpAQCAtMjAzLDE3ICsyMDQsMjUgQEAgYm9vbCBSZW5kZXJQYXRoOjpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IAogCiAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9s
b2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKKyAgICBp
ZiAoIXBvaW50SW5DbGlwcGluZ0FyZWEodGhpcywgbG9jYWxQb2ludCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZl
bnRzSGl0UnVsZXM6OlNWR19QQVRIX0hJVFRFU1RJTkcsIHN0eWxlKCktPnBvaW50ZXJFdmVudHMo
KSk7CisgICAgaWYgKHJlcXVlc3Quc3ZnQ2xpcENvbnRlbnQoKSkKKyAgICAgICAgaGl0UnVsZXMg
PSBQb2ludGVyRXZlbnRzSGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfUEFUSF9I
SVRURVNUSU5HLCBQRV9GSUxMKTsKIAogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCktPnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5y
ZXF1aXJlVmlzaWJsZSkgewotICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAo
c3R5bGUoKS0+c3ZnU3R5bGUoKS0+aGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJv
a2UpICYmIHN0cm9rZUNvbnRhaW5zKGxvY2FsUG9pbnQsIGhpdFJ1bGVzLnJlcXVpcmVTdHJva2Up
KQotICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCktPnN2Z1N0
eWxlKCktPmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpICYmIGZpbGxDb250YWlu
cyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7CisgICAgICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgICAgIFdp
bmRSdWxlIGZpbGxSdWxlID0gc3ZnU3R5bGUtPmZpbGxSdWxlKCk7CisgICAgICAgIGlmIChyZXF1
ZXN0LnN2Z0NsaXBDb250ZW50KCkpCisgICAgICAgICAgICBmaWxsUnVsZSA9IHN2Z1N0eWxlLT5j
bGlwUnVsZSgpOworICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3ZnU3R5
bGUtPmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSAmJiBzdHJva2VDb250
YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKKyAgICAgICAgICAgIHx8
IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdmdTdHlsZS0+aGFzRmlsbCgpIHx8ICFoaXRSdWxl
cy5yZXF1aXJlRmlsbCkgJiYgZmlsbENvbnRhaW5zKGxvY2FsUG9pbnQsIGhpdFJ1bGVzLnJlcXVp
cmVGaWxsLCBmaWxsUnVsZSkpKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJl
c3VsdCwgcm91bmRlZEludFBvaW50KGxvY2FsUG9pbnQpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUGF0aC5oCShyZXZpc2lvbiA2MDUzOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgLy8gSGl0LWRldGVjdGlvbiBzZXBlcmF0ZWQgZm9yIHRoZSBmaWxsIGFu
ZCB0aGUgc3Ryb2tlCi0gICAgYm9vbCBmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGJv
b2wgcmVxdWlyZXNGaWxsID0gdHJ1ZSkgY29uc3Q7CisgICAgYm9vbCBmaWxsQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYsIGJvb2wgcmVxdWlyZXNGaWxsID0gdHJ1ZSwgV2luZFJ1bGUgPSBSVUxF
X05PTlpFUk8pIGNvbnN0OwogICAgIGJvb2wgc3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYsIGJvb2wgcmVxdWlyZXNTdHJva2UgPSB0cnVlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV9maWxsQm91bmRpbmdC
b3g7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gNjA1NDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDkgQEAgYm9vbCBSZW5kZXJTVkdDb250YWlu
ZXI6Om5vZGVBdEZsb2F0UG9pbgogCiAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAor
ICAgIGlmICghcG9pbnRJbkNsaXBwaW5nQXJlYSh0aGlzLCBsb2NhbFBvaW50KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBj
aGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5n
KCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5ub2RlQXRGbG9hdFBvaW50KHJlcXVlc3QsIHJlc3Vs
dCwgbG9jYWxQb2ludCwgaGl0VGVzdEFjdGlvbikpIHsKICAgICAgICAgICAgIHVwZGF0ZUhpdFRl
c3RSZXN1bHQocmVzdWx0LCByb3VuZGVkSW50UG9pbnQobG9jYWxQb2ludCkpOwpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gNjA1NDEpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsx
MjMsOSBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvCiAgICAgYm9v
bCBpc1Zpc2libGUgPSAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpOwogICAgIGlm
IChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIEZsb2F0
UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFw
UG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKCFwb2ludElu
Q2xpcHBpbmdBcmVhKHRoaXMsIGxvY2FsUG9pbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGlmIChoaXRSdWxlcy5jYW5IaXRGaWxsKSB7CiAgICAgICAgICAgICBpZiAo
bV9sb2NhbEJvdW5kcy5jb250YWlucyhsb2NhbFBvaW50KSkgewpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiA2MDU0MSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKQEAgLTI2Niw2ICsyNjgsMzMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmNhbGN1bGF0ZQogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5n
Qm94LCBGbG9hdFBvaW50IHBvaW50KQoreworICAgIGlmICghcG9pbnRJbkNsaXBwaW5nQXJlYSh0
aGlzLCBwb2ludCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzdGF0aWNfY2Fz
dDxTVkdDbGlwUGF0aEVsZW1lbnQqPihub2RlKCkpLT5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CisgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0
Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOworICAgICAgICB0cmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJvdW5k
aW5nQm94LmhlaWdodCgpKTsKKyAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1h
cFBvaW50KHBvaW50KTsKKyAgICB9CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUo
KS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5y
ZW5kZXJlcigpOworICAgICAgICBpZiAoIWNoaWxkTm9kZS0+aXNTVkdFbGVtZW50KCkgfHwgIXN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjaGlsZE5vZGUpLT5pc1N0eWxlZCgpIHx8ICFyZW5kZXJl
cikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1JlbmRl
clBhdGgoKSAmJiAhcmVuZGVyZXItPmlzU1ZHVGV4dCgpICYmICFyZW5kZXJlci0+aXNTVkdTaGFk
b3dUcmVlUm9vdENvbnRhaW5lcigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIElu
dFBvaW50IGhpdFBvaW50ID0gSW50UG9pbnQoKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQoaGl0UG9pbnQpOworICAgICAgICBpZiAocmVuZGVyZXItPm5vZGVBdEZsb2F0UG9pbnQoSGl0
VGVzdFJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlNWR0NsaXBDb250ZW50KSwgcmVzdWx0LCBwb2lu
dCwgSGl0VGVzdEZvcmVncm91bmQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIC8v
IFNhdmUgdGhlIHJlZmVyZW5jZSB0byB0aGUgY2FsbGluZyBvYmplY3QgZm9yIHJlbGF5b3V0aW5n
IGl0IG9uIGNoYW5naW5nIHJlc291cmNlIHByb3BlcnRpZXMuCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkocmV2aXNpb24gNjA1NDEpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3Vy
Y2VCb3VuZGluZ0JveChSZW5kZXJPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5
cGU7IH0KKyAgICAKKyAgICBib29sIGhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3Qm
LCBGbG9hdFBvaW50KTsKIAogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgY2xpcFBhdGhV
bml0cygpIGNvbnN0IHsgcmV0dXJuIHRvVW5pdFR5cGUoc3RhdGljX2Nhc3Q8U1ZHQ2xpcFBhdGhF
bGVtZW50Kj4obm9kZSgpKS0+Y2xpcFBhdGhVbml0cygpKTsgfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gNjA1NDEpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC05OSwxMSArMTAwLDE3IEBAIFJvb3RJbmxp
bmVCb3gqIFJlbmRlclNWR1RleHQ6OmNyZWF0ZVJvb3QKIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9u
IGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBv
aW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1RFWFRfSElUVEVTVElORywgc3R5bGUoKS0+cG9pbnRl
ckV2ZW50cygpKTsKKyAgICBpZiAocmVxdWVzdC5zdmdDbGlwQ29udGVudCgpKQorICAgICAgICBo
aXRSdWxlcyA9IFBvaW50ZXJFdmVudHNIaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNW
R19URVhUX0hJVFRFU1RJTkcsIFBFX0ZJTEwpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxl
KCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRS
dWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9r
ZSAmJiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVp
cmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxl
KCktPnN2Z1N0eWxlKCktPmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewog
ICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpLmludmVyc2UoKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKworICAgICAgICAgICAgaWYg
KCFwb2ludEluQ2xpcHBpbmdBcmVhKHRoaXMsIGxvY2FsUG9pbnQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgICAgICAgCisKICAgICAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6
bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCAoaW50KWxvY2FsUG9pbnQueCgpLCAoaW50KWxv
Y2FsUG9pbnQueSgpLCAwLCAwLCBoaXRUZXN0QWN0aW9uKTsKICAgICAgICAgfQogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA2MDU0MSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjIsNiArMzIyLDI3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlUGFpbnRp
bmdSZXMKICAgICAgICAgcGFpbnRpbmdSZXNvdXJjZS0+aW52YWxpZGF0ZUNsaWVudChvYmplY3Qp
OwogfQogCitib29sIHBvaW50SW5DbGlwcGluZ0FyZWEoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIEFTU0VSVChvYmplY3QpOworICAg
IEFTU0VSVChvYmplY3QtPnN0eWxlKCkpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gb2Jq
ZWN0LT5kb2N1bWVudCgpOworICAgIEFTU0VSVChkb2N1bWVudCk7CisKKyAgICBjb25zdCBTVkdS
ZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBvYmplY3QtPnN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAg
QVNTRVJUKHN2Z1N0eWxlKTsKKworICAgIC8vIFdlIGp1c3QgdGFrZSBjbGlwcGVycyBpbnRvIGFj
Y291bnQgdG8gZGV0ZXJtaW5lIGlmIGEgcG9pbnQgaXMgb24gdGhlIG5vZGUuIFRoZSBTcGVjaWZp
Y2F0aW9uIG1heQorICAgIC8vIGNoYW5nZSBsYXRlciBhbmQgd2UgYWxzbyBuZWVkIHRvIGNoZWNr
IG1hc2tlcnMuCisgICAgaWYgKHN2Z1N0eWxlLT5oYXNDbGlwcGVyKCkpIHsKKyAgICAgICAgaWYg
KFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdldFJlbmRlclNWR1Jlc291cmNl
QnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGRvY3VtZW50LCBzdmdTdHlsZS0+Y2xpcHBl
clJlc291cmNlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGNsaXBwZXItPmhpdFRlc3RDbGlwQ29u
dGVudChvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCksIHBvaW50KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBkZXJlZ2lzdGVyRnJvbVJlc291cmNlcyhSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1JlbmRlclN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmgJKHJldmlzaW9uIDYwNTQxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHUmVuZGVyU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBAIHZvaWQg
YXBwbHlUcmFuc2Zvcm1Ub1BhaW50SW5mbyhSZW5kZXJPYmoKIC8vIFRoaXMgb2ZmZXJzIGEgd2F5
IHRvIHJlbmRlciBwYXJ0cyBvZiBhIFdlYktpdCByZW5kZXJpbmcgdHJlZSBpbnRvIGEgSW1hZ2VC
dWZmZXIuCiB2b2lkIHJlbmRlclN1YnRyZWVUb0ltYWdlKEltYWdlQnVmZmVyKiwgUmVuZGVyT2Jq
ZWN0Kik7CiAKK2Jvb2wgcG9pbnRJbkNsaXBwaW5nQXJlYShjb25zdCBSZW5kZXJPYmplY3QqLCBj
b25zdCBGbG9hdFBvaW50Jik7CisKIHZvaWQgZGVyZWdpc3RlckZyb21SZXNvdXJjZXMoUmVuZGVy
T2JqZWN0Kik7CiB2b2lkIGNsYW1wSW1hZ2VCdWZmZXJTaXplVG9WaWV3cG9ydChGcmFtZVZpZXcq
LCBJbnRTaXplJiBpbWFnZUJ1ZmZlclNpemUpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDU3MikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEwLTA2LTAyICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaGl0IHRlc3RpbmcgZG9lcyBu
b3QgcmVzcGVjdCBjbGlwIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE2MgorICAgICAgICAKKyAgICAgICAgVHdvIHRlc3RzIHdlcmUgaW5j
b3JyZWN0LCBiZWNhdXNlIG9mIHRoZSBhc3N1bXB0aW9uLCB0aGF0IGNsaXBQYXRoIGRvZXNuJ3QK
KyAgICAgICAgaW5mbHVlbmNlIGhpdCB0ZXN0aW5nLiBUaGV5IG5lZWRlZCBhbiB1cGRhdGUuCisg
ICAgICAgIFRoZSBuZXcgdGVzdCBjaGVja3MsIHRoYXQgY2xpcHBlZCBhcmVhcyBkb24ndCB0aHJv
dyBhIGhpdC4KKworICAgICAgICAqIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGgtaW5m
bHVlbmNlcy1oaXRUZXN0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbDogQWRk
ZWQuCisgICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aEVsZW1lbnQtZG9t
LWNsaXBQYXRoVW5pdHMtYXR0ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdDbGlwUGF0aEVsZW1lbnQtc3ZnZG9tLWNsaXBQYXRoVW5pdHMtcHJvcC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZH
Q2xpcFBhdGgtaW5mbHVlbmNlcy1oaXRUZXN0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4ZWN1
dGVCR1Rlc3QpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHN2Zy9keW5hbWlj
LXVwZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0NsaXBQYXRoRWxlbWVudC1kb20tY2xpcFBhdGhVbml0
cy1hdHRyLmpzOgorICAgICAgICAoc2hvdWxkQmVFcXVhbFRvU3RyaW5nLmV4ZWN1dGVUZXN0KToK
KyAgICAgICAgKiBzdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdDbGlwUGF0aEVs
ZW1lbnQtc3ZnZG9tLWNsaXBQYXRoVW5pdHMtcHJvcC5qczoKKyAgICAgICAgKGV4ZWN1dGVUZXN0
KToKKwogMjAxMC0wNi0wMiAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoLWluZmx1ZW5jZXMtaGl0VGVzdGlu
Zy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBk
YXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1p
bmZsdWVuY2VzLWhpdFRlc3RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACitTVkcgMS4xIGR5bmFtaWMgdXBkYXRlIHRlc3RzCisKK1Rlc3RzIGhpdFRlc3Rpbmcg
b24gY2xpcHBlZCBFbGVtZW50cy4gQ2xpcHBlZCBhcmVhcyBzaG91bGRuJ3QgdGhyb3cgYSBoaXQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENsaXBwZWQgYXJlYSBvZiBy
ZWN0IGRpZG4ndCB0aHJvdyBhIGhpdC4KK1BBU1MgSGl0IHRocm93biBvbiBub3QgY2xpcHBlZCBh
cmVhIG9mIHJlY3QuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0
aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZHluYW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoLWluZmx1ZW5jZXMtaGl0VGVzdGluZy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlw
UGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9TVkdU
ZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEu
MSBkeW5hbWljIHVwZGF0ZSB0ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9TVkdDbGlw
UGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aEVsZW1l
bnQtZG9tLWNsaXBQYXRoVW5pdHMtYXR0ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aEVsZW1lbnQtZG9tLWNsaXBQ
YXRoVW5pdHMtYXR0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYwNTM5KQorKysgTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aEVsZW1lbnQtZG9tLWNsaXBQYXRoVW5p
dHMtYXR0ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBAIFRlc3Rz
IGR5bmFtaWMgdXBkYXRlcyBvZiB0aGUgJ2NsaXBQYXRoVW4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCi1QQVNTIGNsaXBQYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5p
dHMnKSBpcyAib2JqZWN0Qm91bmRpbmdCb3giCiBQQVNTIGNsaXBQYXRoRWxlbWVudC5nZXRBdHRy
aWJ1dGUoJ2NsaXBQYXRoVW5pdHMnKSBpcyAidXNlclNwYWNlT25Vc2UiCitQQVNTIGNsaXBQYXRo
RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5pdHMnKSBpcyAib2JqZWN0Qm91bmRpbmdC
b3giCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2
Z2RvbS1jbGlwUGF0aFVuaXRzLXByb3AtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2Z2RvbS1jbGlw
UGF0aFVuaXRzLXByb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDUzOSkKKysrIExheW91dFRl
c3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2Z2RvbS1jbGlwUGF0
aFVuaXRzLXByb3AtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBU
ZXN0cyBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdjbGlwUGF0aFVuCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBjbGlwUGF0aEVsZW1lbnQuY2xpcFBhdGhVbml0cy5iYXNlVmFs
IGlzIFNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YCiBQQVNTIGNs
aXBQYXRoRWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwgaXMgU1ZHVW5pdFR5cGVzLlNWR19V
TklUX1RZUEVfVVNFUlNQQUNFT05VU0UKK1BBU1MgY2xpcFBhdGhFbGVtZW50LmNsaXBQYXRoVW5p
dHMuYmFzZVZhbCBpcyBTVkdVbml0VHlwZXMuU1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdDbGlwUGF0
aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGgtaW5mbHVlbmNlcy1oaXRU
ZXN0aW5nLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRl
cy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGgtaW5mbHVlbmNlcy1oaXRUZXN0aW5nLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvLyBbTmFtZV0gU1ZHQ2xpcFBhdGhFbGVtZW50LXN2
Z2RvbS1jbGlwUGF0aFVuaXRzLXByb3AuanMKKy8vIFtFeHBlY3RlZCByZW5kZXJpbmcgcmVzdWx0
XSBncmVlbiBjaXJjbGUgLSBhbmQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcworCitkZXNjcmlw
dGlvbigiVGVzdHMgaGl0VGVzdGluZyBvbiBjbGlwcGVkIEVsZW1lbnRzLiBDbGlwcGVkIGFyZWFz
IHNob3VsZG4ndCB0aHJvdyBhIGhpdC4iKQorY3JlYXRlU1ZHVGVzdENhc2UoKTsKKwordmFyIGRl
ZnNFbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiZGVmcyIpOworcm9vdFNWR0VsZW1lbnQuYXBw
ZW5kQ2hpbGQoZGVmc0VsZW1lbnQpOworCit2YXIgY2xpcFBhdGhFbGVtZW50ID0gY3JlYXRlU1ZH
RWxlbWVudCgiY2xpcFBhdGgiKTsKK2NsaXBQYXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIiwg
ImNsaXBwZXIiKTsKKwordmFyIGNsaXBSZWN0RWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoInJl
Y3QiKTsKK2NsaXBSZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjUwIik7CitjbGlw
UmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7CitjbGlwUGF0aEVsZW1l
bnQuYXBwZW5kQ2hpbGQoY2xpcFJlY3RFbGVtZW50KTsKKworZGVmc0VsZW1lbnQuYXBwZW5kQ2hp
bGQoY2xpcFBhdGhFbGVtZW50KTsKKwordmFyIHJlY3RFbGVtZW50QkcgPSBjcmVhdGVTVkdFbGVt
ZW50KCJyZWN0Iik7CityZWN0RWxlbWVudEJHLnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7
CityZWN0RWxlbWVudEJHLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwMCIpOworcmVjdEVsZW1l
bnRCRy5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVu
ZENoaWxkKHJlY3RFbGVtZW50QkcpOworCit2YXIgcmVjdEVsZW1lbnRGRyA9IGNyZWF0ZVNWR0Vs
ZW1lbnQoInJlY3QiKTsKK3JlY3RFbGVtZW50Rkcuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMDAi
KTsKK3JlY3RFbGVtZW50Rkcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7CityZWN0RWxl
bWVudEZHLnNldEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcmVjdEVsZW1lbnRGRy5zZXRB
dHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI2NsaXBwZXIpIik7CityZWN0RWxlbWVudEZHLnNl
dEF0dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlQkdUZXN0KCkiKTsKK3Jvb3RTVkdFbGVtZW50
LmFwcGVuZENoaWxkKHJlY3RFbGVtZW50RkcpOworCisvLyBUd28gcmVjdHMgYXJlIGRyYXduLiBP
bmUgaW4gdGhlIGJja2dyb3VuZCBhbmQgb25lIGluIHRoZSBmb3JlZ3JvdW5kLiBUaGUgcmVjdAor
Ly8gaW4gdGhlIGZvcmVncm91bmQgZ2V0cyBjbGlwcGVkLCBzbyBvbiBoaXR0ZXN0aW5nLCB0aGUg
YmFja2dyb3VuZCByZWN0IHNob3VsZAorLy8gdGhyb3cgYSBoaXQuCitmdW5jdGlvbiBleGVjdXRl
QkdUZXN0KCkgeworICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2VyVXBkYXRlKDc1LDUwKSIs
IDApOworICAgIHRlc3RQYXNzZWQoIkNsaXBwZWQgYXJlYSBvZiByZWN0IGRpZG4ndCB0aHJvdyBh
IGhpdC4iKTsKKyAgICBzdGFydFRlc3QocmVjdEVsZW1lbnRGRywgMjUsIDUwKTsKK30KKworZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgdGVzdFBhc3NlZCgiSGl0IHRocm93biBvbiBub3Qg
Y2xpcHBlZCBhcmVhIG9mIHJlY3QuIik7CisKKyAgICBjb21wbGV0ZVRlc3QoKTsKK30KKworZXhl
Y3V0ZUJHVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0NsaXBQYXRoRWxl
bWVudC1kb20tY2xpcFBhdGhVbml0cy1hdHRyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0NsaXBQYXRoRWxlbWVudC1kb20t
Y2xpcFBhdGhVbml0cy1hdHRyLmpzCShyZXZpc2lvbiA2MDUzOSkKKysrIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0NsaXBQYXRoRWxlbWVudC1kb20tY2xp
cFBhdGhVbml0cy1hdHRyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC05LDMyICs5LDMxIEBAIHJvb3RT
VkdFbGVtZW50LmFwcGVuZENoaWxkKGRlZnNFbGVtZW50KTsKIAogdmFyIGNsaXBQYXRoRWxlbWVu
dCA9IGNyZWF0ZVNWR0VsZW1lbnQoImNsaXBQYXRoIik7CiBjbGlwUGF0aEVsZW1lbnQuc2V0QXR0
cmlidXRlKCJpZCIsICJjbGlwcGVyIik7Ci1jbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJj
bGlwUGF0aFVuaXRzIiwgIm9iamVjdEJvdW5kaW5nQm94Iik7CitjbGlwUGF0aEVsZW1lbnQuc2V0
QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRzIiwgInVzZXJTcGFjZU9uVXNlIik7CiAKLXZhciBjaXJj
bGVFbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiY2lyY2xlIik7Ci1jaXJjbGVFbGVtZW50LnNl
dEF0dHJpYnV0ZSgiY3giLCAiMTUwIik7Ci1jaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiY3ki
LCAiMTUwIik7Ci1jaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiciIsICIxNTAiKTsKLWNsaXBQ
YXRoRWxlbWVudC5hcHBlbmRDaGlsZChjaXJjbGVFbGVtZW50KTsKK3ZhciByZWN0RWxlbWVudEEg
PSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0Iik7CityZWN0RWxlbWVudEEuc2V0QXR0cmlidXRlKCJ3
aWR0aCIsICIxMCIpOworcmVjdEVsZW1lbnRBLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwIik7
CitjbGlwUGF0aEVsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdEVsZW1lbnRBKTsKIAogZGVmc0VsZW1l
bnQuYXBwZW5kQ2hpbGQoY2xpcFBhdGhFbGVtZW50KTsKIAotdmFyIHJlY3RFbGVtZW50ID0gY3Jl
YXRlU1ZHRWxlbWVudCgicmVjdCIpOwotcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIs
ICIzMDAiKTsKLXJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjMwMCIpOwotcmVj
dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7Ci1yZWN0RWxlbWVudC5zZXRB
dHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI2NsaXBwZXIpIik7Ci1yb290U1ZHRWxlbWVudC5h
cHBlbmRDaGlsZChyZWN0RWxlbWVudCk7Cit2YXIgcmVjdEVsZW1lbnRCID0gY3JlYXRlU1ZHRWxl
bWVudCgicmVjdCIpOworcmVjdEVsZW1lbnRCLnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7
CityZWN0RWxlbWVudEIuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7CityZWN0RWxlbWVu
dEIuc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CityZWN0RWxlbWVudEIuc2V0QXR0cmli
dXRlKCJjbGlwLXBhdGgiLCAidXJsKCNjbGlwcGVyKSIpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5k
Q2hpbGQocmVjdEVsZW1lbnRCKTsKIAotc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjbGlwUGF0aEVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGlwUGF0aFVuaXRzJykiLCAib2JqZWN0Qm91bmRpbmdCb3gi
KQorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjbGlwUGF0aEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdj
bGlwUGF0aFVuaXRzJykiLCAidXNlclNwYWNlT25Vc2UiKQogCiBmdW5jdGlvbiBleGVjdXRlVGVz
dCgpIHsKLSAgICBjbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRzIiwg
InVzZXJTcGFjZU9uVXNlIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjbGlwUGF0aEVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGlwUGF0aFVuaXRzJykiLCAidXNlclNwYWNlT25Vc2UiKTsK
KyAgICBjbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRzIiwgIm9iamVj
dEJvdW5kaW5nQm94Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjbGlwUGF0aEVsZW1l
bnQuZ2V0QXR0cmlidXRlKCdjbGlwUGF0aFVuaXRzJykiLCAib2JqZWN0Qm91bmRpbmdCb3giKTsK
IAogICAgIGNvbXBsZXRlVGVzdCgpOwogfQogCi1zdGFydFRlc3QocmVjdEVsZW1lbnQsIDE1MCwg
MTUwKTsKK3N0YXJ0VGVzdChyZWN0RWxlbWVudEIsIDUsIDUpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvc2Ny
aXB0LXRlc3RzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1wcm9wLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRl
c3RzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1wcm9wLmpzCShyZXZp
c2lvbiA2MDUzOSkKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRl
c3RzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1wcm9wLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDMyICs5LDMxIEBAIHJvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKGRl
ZnNFbGVtZW50KTsKIAogdmFyIGNsaXBQYXRoRWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoImNs
aXBQYXRoIik7CiBjbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJjbGlwcGVyIik7
Ci1jbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRzIiwgIm9iamVjdEJv
dW5kaW5nQm94Iik7CitjbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwUGF0aFVuaXRz
IiwgInVzZXJTcGFjZU9uVXNlIik7CiAKLXZhciBjaXJjbGVFbGVtZW50ID0gY3JlYXRlU1ZHRWxl
bWVudCgiY2lyY2xlIik7Ci1jaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiY3giLCAiMTUwIik7
Ci1jaXJjbGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiY3kiLCAiMTUwIik7Ci1jaXJjbGVFbGVtZW50
LnNldEF0dHJpYnV0ZSgiciIsICIxNTAiKTsKLWNsaXBQYXRoRWxlbWVudC5hcHBlbmRDaGlsZChj
aXJjbGVFbGVtZW50KTsKLQotZGVmc0VsZW1lbnQuYXBwZW5kQ2hpbGQoY2xpcFBhdGhFbGVtZW50
KTs7Ci0KLXZhciByZWN0RWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3QiKTsKLXJlY3RF
bGVtZW50LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMzAwIik7Ci1yZWN0RWxlbWVudC5zZXRBdHRy
aWJ1dGUoImhlaWdodCIsICIzMDAiKTsKLXJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiZmlsbCIs
ICJncmVlbiIpOwotcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCAidXJsKCNj
bGlwcGVyKSIpOwotcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdEVsZW1lbnQpOwordmFy
IHJlY3RFbGVtZW50QSA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3QiKTsKK3JlY3RFbGVtZW50QS5z
ZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwIik7CityZWN0RWxlbWVudEEuc2V0QXR0cmlidXRlKCJo
ZWlnaHQiLCAiMTAiKTsKK2NsaXBQYXRoRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0RWxlbWVudEEp
OworCitkZWZzRWxlbWVudC5hcHBlbmRDaGlsZChjbGlwUGF0aEVsZW1lbnQpOworCit2YXIgcmVj
dEVsZW1lbnRCID0gY3JlYXRlU1ZHRWxlbWVudCgicmVjdCIpOworcmVjdEVsZW1lbnRCLnNldEF0
dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7CityZWN0RWxlbWVudEIuc2V0QXR0cmlidXRlKCJoZWln
aHQiLCAiMTAwIik7CityZWN0RWxlbWVudEIuc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7
CityZWN0RWxlbWVudEIuc2V0QXR0cmlidXRlKCJjbGlwLXBhdGgiLCAidXJsKCNjbGlwcGVyKSIp
Oworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQocmVjdEVsZW1lbnRCKTsKIAotc2hvdWxkQmUo
ImNsaXBQYXRoRWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwiLCAiU1ZHVW5pdFR5cGVzLlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1giKTsKK3Nob3VsZEJlKCJjbGlwUGF0aEVsZW1l
bnQuY2xpcFBhdGhVbml0cy5iYXNlVmFsIiwgIlNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFIik7CiAKIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewotICAgIGNsaXBQYXRo
RWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwgPSBTVkdVbml0VHlwZXMuU1ZHX1VOSVRfVFlQ
RV9VU0VSU1BBQ0VPTlVTRTsKLSAgICBzaG91bGRCZSgiY2xpcFBhdGhFbGVtZW50LmNsaXBQYXRo
VW5pdHMuYmFzZVZhbCIsICJTVkdVbml0VHlwZXMuU1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVT
RSIpOworICAgIGNsaXBQYXRoRWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwgPSBTVkdVbml0
VHlwZXMuU1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKKyAgICBzaG91bGRCZSgiY2xp
cFBhdGhFbGVtZW50LmNsaXBQYXRoVW5pdHMuYmFzZVZhbCIsICJTVkdVbml0VHlwZXMuU1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCIpOwogCiAgICAgY29tcGxldGVUZXN0KCk7CiB9CiAK
LXN0YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworc3RhcnRUZXN0KHJlY3RFbGVtZW50
QiwgNSwgNSk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57961</attachid>
            <date>2010-06-04 22:17:26 -0700</date>
            <delta_ts>2011-01-02 03:24:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-15162-20100605071724.patch</filename>
            <type>text/plain</type>
            <size>27601</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDcwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYtMDQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBoaXQg
dGVzdGluZyBkb2VzIG5vdCByZXNwZWN0IGNsaXAgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTYyCisKKyAgICAgICAgVGVzdDogc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbAorICAg
ICAgICAKKyAgICAgICAgQWRkZWQgYSBjaGVjaywgaWYgYSBmbG9hdCBwb2ludCBpcyBub3Qgb25s
eSBpbiB0aGUgc2hhcGUvb2JqZWN0IGJvdW5kYXJpZXMKKyAgICAgICAgYnV0IGFsc28gaXMgbm90
IGluIHRoZSBjbGlwcGVkIGF3YXkgYXJlYSBvZiBhIGNsaXBQYXRoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVz
dDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzdmdDbGlwQ29udGVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUGF0aDo6ZmlsbENvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6
Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvaW50SW5DbGlwcGluZ0FyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJT
dXBwb3J0Lmg6CisKIDIwMTAtMDYtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlcXVlc3QuaAkocmV2aXNpb24gNjA3MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSGl0VGVzdFJlcXVlc3QgewogcHVibGljOgogICAgIGVudW0gUmVx
dWVzdFR5cGUgewotICAgICAgICBSZWFkT25seSA9IDB4MSwKLSAgICAgICAgQWN0aXZlID0gMHgy
LAotICAgICAgICBNb3VzZU1vdmUgPSAweDQsCi0gICAgICAgIE1vdXNlVXAgPSAweDgsCi0gICAg
ICAgIElnbm9yZUNsaXBwaW5nID0gMHgxMAorICAgICAgICBSZWFkT25seSA9IDEgPDwgMSwKKyAg
ICAgICAgQWN0aXZlID0gMSA8PCAyLAorICAgICAgICBNb3VzZU1vdmUgPSAxIDw8IDMsCisgICAg
ICAgIE1vdXNlVXAgPSAxIDw8IDQsCisgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1LAor
ICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEgPDwgNgogICAgIH07CiAKICAgICBIaXRUZXN0UmVx
dWVzdChpbnQgcmVxdWVzdFR5cGUpCkBAIC00NCw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29s
IG1vdXNlTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBNb3VzZU1vdmU7IH0K
ICAgICBib29sIG1vdXNlVXAoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgTW91c2VV
cDsgfQogICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RU
eXBlICYgSWdub3JlQ2xpcHBpbmc7IH0KKyAgICBib29sIHN2Z0NsaXBDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFNWR0NsaXBDb250ZW50OyB9CiAKIHByaXZhdGU6CiAg
ICAgaW50IG1fcmVxdWVzdFR5cGU7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZl
bnRzSGl0UnVsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJF
dmVudHNIaXRSdWxlcy5jcHAJKHJldmlzaW9uIDYwNzAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpQb2lu
dGVyRXZlbnRzSGl0UnVsZXMoRUhpdFRlc3RpbmcgaGl0VGVzdGluZywgRVBvaW50ZXJFdmVudHMg
cG9pbnRlckV2ZW50cykKK1BvaW50ZXJFdmVudHNIaXRSdWxlczo6UG9pbnRlckV2ZW50c0hpdFJ1
bGVzKEVIaXRUZXN0aW5nIGhpdFRlc3RpbmcsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBFUG9pbnRlckV2ZW50cyBwb2ludGVyRXZlbnRzKQogICAgIDogcmVxdWlyZVZpc2libGUoZmFs
c2UpCiAgICAgLCByZXF1aXJlRmlsbChmYWxzZSkKICAgICAsIHJlcXVpcmVTdHJva2UoZmFsc2Up
CiAgICAgLCBjYW5IaXRTdHJva2UoZmFsc2UpCiAgICAgLCBjYW5IaXRGaWxsKGZhbHNlKQogewor
ICAgIGlmIChyZXF1ZXN0LnN2Z0NsaXBDb250ZW50KCkpCisgICAgICAgIHBvaW50ZXJFdmVudHMg
PSBQRV9GSUxMOworCiAgICAgaWYgKGhpdFRlc3RpbmcgPT0gU1ZHX1BBVEhfSElUVEVTVElORykg
ewogICAgICAgICBzd2l0Y2ggKHBvaW50ZXJFdmVudHMpCiAgICAgICAgIHsKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCShyZXZpc2lvbiA2MDcwMSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIFBvaW50ZXJFdmVudHNIaXRSdWxlc19oCiAjZGVm
aW5lIFBvaW50ZXJFdmVudHNIaXRSdWxlc19oCiAKKyNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTMyLDcgKzMzLDcgQEAgcHVibGljOgogICAgICAgICBTVkdfVEVYVF9ISVRURVNUSU5H
CiAgICAgfTsKIAotICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZywgRVBvaW50
ZXJFdmVudHMpOworICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyhFSGl0VGVzdGluZywgY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBFUG9pbnRlckV2ZW50cyk7CiAKICAgICBib29sIHJlcXVpcmVWaXNp
YmxlOwogICAgIGJvb2wgcmVxdWlyZUZpbGw7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNw
cAkocmV2aXNpb24gNjA3MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxl
cy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgiCkBAIC03MSw3ICs3Miw3IEBAIFJlbmRlclBhdGg6OlJlbmRlclBh
dGgoU1ZHU3R5bGVkVHJhbnNmb3IKIHsKIH0KIAotYm9vbCBSZW5kZXJQYXRoOjpmaWxsQ29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wgcmVxdWlyZXNGaWxsKSBjb25zdAorYm9v
bCBSZW5kZXJQYXRoOjpmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJvb2wg
cmVxdWlyZXNGaWxsLCBXaW5kUnVsZSBmaWxsUnVsZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZmls
bEJvdW5kaW5nQm94LmNvbnRhaW5zKHBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NzksNyArODAsNyBAQCBib29sIFJlbmRlclBhdGg6OmZpbGxDb250YWlucyhjb25zdCBGbG9hCiAg
ICAgaWYgKHJlcXVpcmVzRmlsbCAmJiAhUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jl
c291cmNlKHRoaXMsIHN0eWxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gbV9wYXRoLmNvbnRhaW5zKHBvaW50LCBzdHlsZSgpLT5zdmdTdHlsZSgpLT5maWxsUnVsZSgp
KTsKKyAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHBvaW50LCBmaWxsUnVsZSk7CiB9CiAKIGJv
b2wgUmVuZGVyUGF0aDo6c3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGJv
b2wgcmVxdWlyZXNTdHJva2UpIGNvbnN0CkBAIC0xOTUsNyArMTk2LDcgQEAgdm9pZCBSZW5kZXJQ
YXRoOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0bwogICAgICAgICByZWN0cy5hcHBlbmQocmVjdCk7
CiB9CiAKLWJvb2wgUmVuZGVyUGF0aDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBh
cmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQorYm9vbCBSZW5kZXJQYXRoOjpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24g
aGl0VGVzdEFjdGlvbikKIHsKICAgICAvLyBXZSBvbmx5IGRyYXcgaW4gdGhlIGZvcmdyb3VuZCBw
aGFzZSwgc28gd2Ugb25seSBoaXQtdGVzdCB0aGVuLgogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9
IEhpdFRlc3RGb3JlZ3JvdW5kKQpAQCAtMjAzLDE3ICsyMDQsMjIgQEAgYm9vbCBSZW5kZXJQYXRo
Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IAogCiAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0g
bV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKLSAg
ICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpT
VkdfUEFUSF9ISVRURVNUSU5HLCBzdHlsZSgpLT5wb2ludGVyRXZlbnRzKCkpOworICAgIGlmICgh
cG9pbnRJbkNsaXBwaW5nQXJlYSh0aGlzLCBsb2NhbFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNI
aXRSdWxlczo6U1ZHX1BBVEhfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS0+cG9pbnRlckV2
ZW50cygpKTsKICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUp
IHsKLSAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCktPnN2Z1N0
eWxlKCktPmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSAmJiBzdHJva2VD
b250YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKLSAgICAgICAgICAg
IHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLT5zdmdTdHlsZSgpLT5oYXNGaWxs
KCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSAmJiBmaWxsQ29udGFpbnMobG9jYWxQb2ludCwg
aGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgeworICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSog
c3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOworICAgICAgICBXaW5kUnVsZSBmaWxsUnVs
ZSA9IHN2Z1N0eWxlLT5maWxsUnVsZSgpOworICAgICAgICBpZiAocmVxdWVzdC5zdmdDbGlwQ29u
dGVudCgpKQorICAgICAgICAgICAgZmlsbFJ1bGUgPSBzdmdTdHlsZS0+Y2xpcFJ1bGUoKTsKKyAg
ICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN2Z1N0eWxlLT5oYXNTdHJva2Uo
KSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkgJiYgc3Ryb2tlQ29udGFpbnMobG9jYWxQb2lu
dCwgaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCisgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2Fu
SGl0RmlsbCAmJiAoc3ZnU3R5bGUtPmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwp
ICYmIGZpbGxDb250YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlRmlsbCwgZmlsbFJ1
bGUpKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHJvdW5kZWRJ
bnRQb2ludChsb2NhbFBvaW50KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBh
dGguaAkocmV2aXNpb24gNjA3MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IC8vIEhpdC1kZXRlY3Rpb24gc2VwZXJhdGVkIGZvciB0aGUgZmlsbCBhbmQgdGhlIHN0cm9rZQot
ICAgIGJvb2wgZmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHJlcXVpcmVzRmls
bCA9IHRydWUpIGNvbnN0OworICAgIGJvb2wgZmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQm
LCBib29sIHJlcXVpcmVzRmlsbCA9IHRydWUsIFdpbmRSdWxlIGZpbGxSdWxlID0gUlVMRV9OT05a
RVJPKSBjb25zdDsKICAgICBib29sIHN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBi
b29sIHJlcXVpcmVzU3Ryb2tlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbEJvdW5kaW5nQm94OyB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9u
IDYwNzAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw5IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpu
b2RlQXRGbG9hdFBvaW4KIAogICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKKyAgICBp
ZiAoIXBvaW50SW5DbGlwcGluZ0FyZWEodGhpcywgbG9jYWxQb2ludCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQg
PSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxv
Y2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVz
dWx0KHJlc3VsdCwgcm91bmRlZEludFBvaW50KGxvY2FsUG9pbnQpKTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDYwNzAxKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTcgKzExMiwx
OSBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpkZXN0cm95KCkKICAgICBSZW5kZXJJbWFnZTo6ZGVz
dHJveSgpOwogfQogCi1ib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCitib29sIFJlbmRl
clNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQs
IEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKICAgICAvLyBXZSBvbmx5IGRyYXcgaW4g
dGhlIGZvcmdyb3VuZCBwaGFzZSwgc28gd2Ugb25seSBoaXQtdGVzdCB0aGVuLgogICAgIGlmICho
aXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1
bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgc3R5bGUoKS0+cG9pbnRlckV2ZW50cygpKTsKLSAg
ICAKKyAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1
bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS0+cG9pbnRlckV2ZW50
cygpKTsKICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsK
ICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgICAgIAorICAgICAg
ICBpZiAoIXBvaW50SW5DbGlwcGluZ0FyZWEodGhpcywgbG9jYWxQb2ludCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKGhpdFJ1bGVzLmNhbkhpdEZpbGwpIHsKICAg
ICAgICAgICAgIGlmIChtX2xvY2FsQm91bmRzLmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJl
dmlzaW9uIDYwNzAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpAQCAtMjY2LDYgKzI2OCwzNCBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6Y2FsY3VsYXRlCiAgICAgfQogfQogCitib29sIFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYg
b2JqZWN0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UG9pbnQmIG5vZGVBdFBvaW50KQoreworICAg
IEZsb2F0UG9pbnQgcG9pbnQgPSBub2RlQXRQb2ludDsKKyAgICBpZiAoIXBvaW50SW5DbGlwcGlu
Z0FyZWEodGhpcywgcG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8U1ZHQ2xpcFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+Y2xpcFBhdGhVbml0cygpID09
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgeworICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAg
dHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmpl
Y3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7CisgICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVy
c2UoKS5tYXBQb2ludChwb2ludCk7CisgICAgfQorCisgICAgZm9yIChOb2RlKiBjaGlsZE5vZGUg
PSBub2RlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxk
Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKCFjaGlsZE5vZGUtPmlzU1ZHRWxlbWVudCgp
IHx8ICFzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY2hpbGROb2RlKS0+aXNTdHlsZWQoKSB8fCAh
cmVuZGVyZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFyZW5kZXJlci0+
aXNSZW5kZXJQYXRoKCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSAmJiAhcmVuZGVyZXItPmlz
U1ZHU2hhZG93VHJlZVJvb3RDb250YWluZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBJbnRQb2ludCBoaXRQb2ludDsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoaGl0
UG9pbnQpOworICAgICAgICBpZiAocmVuZGVyZXItPm5vZGVBdEZsb2F0UG9pbnQoSGl0VGVzdFJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlNWR0NsaXBDb250ZW50KSwgcmVzdWx0LCBwb2ludCwgSGl0
VGVzdEZvcmVncm91bmQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpy
ZXNvdXJjZUJvdW5kaW5nQm94KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIC8vIFNhdmUg
dGhlIHJlZmVyZW5jZSB0byB0aGUgY2FsbGluZyBvYmplY3QgZm9yIHJlbGF5b3V0aW5nIGl0IG9u
IGNoYW5naW5nIHJlc291cmNlIHByb3BlcnRpZXMuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkocmV2aXNpb24gNjA3MDEpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3Vu
ZGluZ0JveChSZW5kZXJPYmplY3QqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0K
KyAgICAKKyAgICBib29sIGhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFBvaW50Jik7CiAKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGNsaXBQYXRo
VW5pdHMoKSBjb25zdCB7IHJldHVybiB0b1VuaXRUeXBlKHN0YXRpY19jYXN0PFNWR0NsaXBQYXRo
RWxlbWVudCo+KG5vZGUoKSktPmNsaXBQYXRoVW5pdHMoKSk7IH0KIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDYwNzAxKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxlcy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgpAQCAtOTgsMTIgKzk5LDE2IEBAIFJvb3RJbmxp
bmVCb3gqIFJlbmRlclNWR1RleHQ6OmNyZWF0ZVJvb3QKIAogYm9vbCBSZW5kZXJTVkdUZXh0Ojpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rp
b24gaGl0VGVzdEFjdGlvbikKIHsKLSAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMo
UG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfVEVYVF9ISVRURVNUSU5HLCBzdHlsZSgpLT5wb2lu
dGVyRXZlbnRzKCkpOworICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVy
RXZlbnRzSGl0UnVsZXM6OlNWR19URVhUX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCktPnBv
aW50ZXJFdmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS0+dmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVW
aXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgp
LT5zdmdTdHlsZSgpLT5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAg
ICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS0+c3ZnU3R5bGUo
KS0+aGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7CiAgICAgICAgICAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgp
Lm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworCisgICAgICAgICAgICBpZiAoIXBvaW50SW5DbGlw
cGluZ0FyZWEodGhpcywgbG9jYWxQb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAgICAgICAKKwogICAgICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChy
ZXF1ZXN0LCByZXN1bHQsIChpbnQpbG9jYWxQb2ludC54KCksIChpbnQpbG9jYWxQb2ludC55KCks
IDAsIDAsIGhpdFRlc3RBY3Rpb24pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDYwNzAxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw2ICsz
MTQsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVQYWludGluZ1JlcwogICAgICAg
ICBwYWludGluZ1Jlc291cmNlLT5pbnZhbGlkYXRlQ2xpZW50KG9iamVjdCk7CiB9CiAKK2Jvb2wg
cG9pbnRJbkNsaXBwaW5nQXJlYShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpCit7CisgICAgQVNTRVJUKG9iamVjdCk7CisgICAgQVNTRVJUKG9iamVj
dC0+c3R5bGUoKSk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBvYmplY3QtPmRvY3VtZW50
KCk7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKworICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBz
dmdTdHlsZSA9IG9iamVjdC0+c3R5bGUoKS0+c3ZnU3R5bGUoKTsKKyAgICBBU1NFUlQoc3ZnU3R5
bGUpOworCisgICAgLy8gV2UganVzdCB0YWtlIGNsaXBwZXJzIGludG8gYWNjb3VudCB0byBkZXRl
cm1pbmUgaWYgYSBwb2ludCBpcyBvbiB0aGUgbm9kZS4gVGhlIFNwZWNpZmljYXRpb24gbWF5Cisg
ICAgLy8gY2hhbmdlIGxhdGVyIGFuZCB3ZSBhbHNvIG5lZWQgdG8gY2hlY2sgbWFza2Vycy4KKyAg
ICBpZiAoc3ZnU3R5bGUtPmhhc0NsaXBwZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcj4oZG9jdW1lbnQsIHN2Z1N0eWxlLT5jbGlwcGVyUmVzb3VyY2UoKSkp
CisgICAgICAgICAgICByZXR1cm4gY2xpcHBlci0+aGl0VGVzdENsaXBDb250ZW50KG9iamVjdC0+
b2JqZWN0Qm91bmRpbmdCb3goKSwgcG9pbnQpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIGRlcmVnaXN0ZXJGcm9tUmVzb3VyY2VzKFJlbmRlck9iamVjdCogb2JqZWN0KQog
ewogICAgIEFTU0VSVChvYmplY3QpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVy
U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBv
cnQuaAkocmV2aXNpb24gNjA3MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBw
b3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDggQEAgdm9pZCBhcHBseVRyYW5zZm9y
bVRvUGFpbnRJbmZvKFJlbmRlck9iagogLy8gVGhpcyBvZmZlcnMgYSB3YXkgdG8gcmVuZGVyIHBh
cnRzIG9mIGEgV2ViS2l0IHJlbmRlcmluZyB0cmVlIGludG8gYSBJbWFnZUJ1ZmZlci4KIHZvaWQg
cmVuZGVyU3VidHJlZVRvSW1hZ2UoSW1hZ2VCdWZmZXIqLCBSZW5kZXJPYmplY3QqKTsKIAorYm9v
bCBwb2ludEluQ2xpcHBpbmdBcmVhKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEZsb2F0UG9p
bnQmKTsKKwogdm9pZCBkZXJlZ2lzdGVyRnJvbVJlc291cmNlcyhSZW5kZXJPYmplY3QqKTsKIHZv
aWQgY2xhbXBJbWFnZUJ1ZmZlclNpemVUb1ZpZXdwb3J0KEZyYW1lVmlldyosIEludFNpemUmIGlt
YWdlQnVmZmVyU2l6ZSk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwNzAxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDYtMDQg
IERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBoaXQgdGVzdGluZyBkb2VzIG5vdCByZXNwZWN0IGNs
aXAgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTYyCisgICAgICAgIAorICAgICAgICBUd28gdGVzdHMgd2VyZSBpbmNvcnJlY3QsIGJlY2F1
c2Ugb2YgdGhlIGFzc3VtcHRpb24sIHRoYXQgY2xpcFBhdGggZG9lc24ndAorICAgICAgICBpbmZs
dWVuY2UgaGl0IHRlc3RpbmcuIFRoZXkgbmVlZGVkIGFuIHVwZGF0ZS4KKyAgICAgICAgVGhlIG5l
dyB0ZXN0IGNoZWNrcywgdGhhdCBjbGlwcGVkIGFyZWFzIGRvbid0IHRocm93IGEgaGl0LgorCisg
ICAgICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRl
c3RpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZHluYW1pYy11cGRhdGVz
L1NWR0NsaXBQYXRoLWluZmx1ZW5jZXMtaGl0VGVzdGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoRWxlbWVudC1kb20tY2xpcFBhdGhVbml0
cy1hdHRyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0Ns
aXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1wcm9wLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdmcvZHluYW1pYy11cGRhdGVzL3NjcmlwdC10ZXN0cy9TVkdDbGlwUGF0aC1pbmZs
dWVuY2VzLWhpdFRlc3RpbmcuanM6IEFkZGVkLgorICAgICAgICAoZXhlY3V0ZUJhY2tncm91bmRU
ZXN0KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvZHluYW1pYy11cGRh
dGVzL3NjcmlwdC10ZXN0cy9TVkdDbGlwUGF0aEVsZW1lbnQtZG9tLWNsaXBQYXRoVW5pdHMtYXR0
ci5qczoKKyAgICAgICAgKHNob3VsZEJlRXF1YWxUb1N0cmluZy5leGVjdXRlVGVzdCk6CisgICAg
ICAgICogc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGhFbGVtZW50
LXN2Z2RvbS1jbGlwUGF0aFVuaXRzLXByb3AuanM6CisgICAgICAgIChleGVjdXRlVGVzdCk6CisK
IDIwMTAtMDYtMDQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZDsgYnVpbGQgZml4LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5
bmFtaWMtdXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmctZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xp
cFBhdGgtaW5mbHVlbmNlcy1oaXRUZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGgtaW5mbHVlbmNlcy1o
aXRUZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorU1ZH
IDEuMSBkeW5hbWljIHVwZGF0ZSB0ZXN0cworCitUZXN0cyBoaXRUZXN0aW5nIG9uIGNsaXBwZWQg
RWxlbWVudHMuIENsaXBwZWQgYXJlYXMgc2hvdWxkbid0IHRocm93IGEgaGl0LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDbGlwcGVkIGFyZWEgb2YgcmVjdCBkaWRuJ3Qg
dGhyb3cgYSBoaXQuCitQQVNTIEhpdCB0aHJvd24gb24gbm90IGNsaXBwZWQgYXJlYSBvZiByZWN0
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGgtaW5mbHVlbmNl
cy1oaXRUZXN0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdDbGlwUGF0aC1pbmZsdWVuY2VzLWhpdFRlc3RpbmcuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGgtaW5mbHVl
bmNlcy1oaXRUZXN0aW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHVGVzdENhc2UuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGgxPlNWRyAxLjEgZHluYW1pYyB1
cGRhdGUgdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGgtaW5mbHVl
bmNlcy1oaXRUZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlw
UGF0aFVuaXRzLWF0dHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9keW5hbWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlwUGF0aFVuaXRzLWF0
dHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MDcwMSkKKysrIExheW91dFRlc3RzL3N2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlwUGF0aFVuaXRzLWF0dHItZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBAQCBUZXN0cyBkeW5hbWljIHVw
ZGF0ZXMgb2YgdGhlICdjbGlwUGF0aFVuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAot
UEFTUyBjbGlwUGF0aEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGlwUGF0aFVuaXRzJykgaXMgIm9i
amVjdEJvdW5kaW5nQm94IgogUEFTUyBjbGlwUGF0aEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGlw
UGF0aFVuaXRzJykgaXMgInVzZXJTcGFjZU9uVXNlIgorUEFTUyBjbGlwUGF0aEVsZW1lbnQuZ2V0
QXR0cmlidXRlKCdjbGlwUGF0aFVuaXRzJykgaXMgIm9iamVjdEJvdW5kaW5nQm94IgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZHluYW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBh
dGhVbml0cy1wcm9wLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
ZHluYW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1w
cm9wLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjA3MDEpCisrKyBMYXlvdXRUZXN0cy9zdmcvZHlu
YW1pYy11cGRhdGVzL1NWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBhdGhVbml0cy1wcm9w
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDggQEAgVGVzdHMgZHluYW1p
YyB1cGRhdGVzIG9mIHRoZSAnY2xpcFBhdGhVbgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiAKLVBBU1MgY2xpcFBhdGhFbGVtZW50LmNsaXBQYXRoVW5pdHMuYmFzZVZhbCBpcyBTVkdVbml0
VHlwZXMuU1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWAogUEFTUyBjbGlwUGF0aEVsZW1l
bnQuY2xpcFBhdGhVbml0cy5iYXNlVmFsIGlzIFNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFCitQQVNTIGNsaXBQYXRoRWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwg
aXMgU1ZHVW5pdFR5cGVzLlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGgtaW5mbHVlbmNl
cy1oaXRUZXN0aW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVw
ZGF0ZXMvc2NyaXB0LXRlc3RzL1NWR0NsaXBQYXRoLWluZmx1ZW5jZXMtaGl0VGVzdGluZy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9keW5hbWljLXVwZGF0ZXMvc2NyaXB0LXRl
c3RzL1NWR0NsaXBQYXRoLWluZmx1ZW5jZXMtaGl0VGVzdGluZy5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1MSBAQAorLy8gW05hbWVdIFNWR0NsaXBQYXRoRWxlbWVudC1zdmdkb20tY2xpcFBh
dGhVbml0cy1wcm9wLmpzCisvLyBbRXhwZWN0ZWQgcmVuZGVyaW5nIHJlc3VsdF0gZ3JlZW4gY2ly
Y2xlIC0gYW5kIGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMKKworZGVzY3JpcHRpb24oIlRlc3Rz
IGhpdFRlc3Rpbmcgb24gY2xpcHBlZCBFbGVtZW50cy4gQ2xpcHBlZCBhcmVhcyBzaG91bGRuJ3Qg
dGhyb3cgYSBoaXQuIikKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisKK3ZhciBkZWZzRWxlbWVudCA9
IGNyZWF0ZVNWR0VsZW1lbnQoImRlZnMiKTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKGRl
ZnNFbGVtZW50KTsKKwordmFyIGNsaXBQYXRoRWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoImNs
aXBQYXRoIik7CitjbGlwUGF0aEVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsICJjbGlwcGVyIik7
CisKK3ZhciBjbGlwUmVjdEVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0Iik7CitjbGlw
UmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICI1MCIpOworY2xpcFJlY3RFbGVtZW50
LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEwMCIpOworY2xpcFBhdGhFbGVtZW50LmFwcGVuZENo
aWxkKGNsaXBSZWN0RWxlbWVudCk7CisKK2RlZnNFbGVtZW50LmFwcGVuZENoaWxkKGNsaXBQYXRo
RWxlbWVudCk7CisKK3ZhciBiYWNrZ3JvdW5kUmVjdCA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3Qi
KTsKK2JhY2tncm91bmRSZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAwIik7CitiYWNrZ3Jv
dW5kUmVjdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKK2JhY2tncm91bmRSZWN0LnNl
dEF0dHJpYnV0ZSgiZmlsbCIsICJncmVlbiIpOworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQo
YmFja2dyb3VuZFJlY3QpOworCit2YXIgZm9yZWdyb3VuZFJlY3QgPSBjcmVhdGVTVkdFbGVtZW50
KCJyZWN0Iik7Citmb3JlZ3JvdW5kUmVjdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwMCIpOwor
Zm9yZWdyb3VuZFJlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwIik7Citmb3JlZ3JvdW5k
UmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK2ZvcmVncm91bmRSZWN0LnNldEF0
dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVybCgjY2xpcHBlcikiKTsKK2ZvcmVncm91bmRSZWN0LnNl
dEF0dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlQmFja2dyb3VuZFRlc3QoKSIpOworcm9vdFNW
R0VsZW1lbnQuYXBwZW5kQ2hpbGQoZm9yZWdyb3VuZFJlY3QpOworCisvLyBUd28gcmVjdHMgYXJl
IGRyYXduLiBPbmUgaW4gdGhlIGJja2dyb3VuZCBhbmQgb25lIGluIHRoZSBmb3JlZ3JvdW5kLiBU
aGUgcmVjdAorLy8gaW4gdGhlIGZvcmVncm91bmQgZ2V0cyBjbGlwcGVkLCBzbyBvbiBoaXR0ZXN0
aW5nLCB0aGUgYmFja2dyb3VuZCByZWN0IHNob3VsZAorLy8gdGhyb3cgYSBoaXQuCitmdW5jdGlv
biBleGVjdXRlQmFja2dyb3VuZFRlc3QoKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoInRyaWdn
ZXJVcGRhdGUoNzUsNTApIiwgMCk7CisgICAgdGVzdFBhc3NlZCgiQ2xpcHBlZCBhcmVhIG9mIHJl
Y3QgZGlkbid0IHRocm93IGEgaGl0LiIpOworICAgIHN0YXJ0VGVzdChmb3JlZ3JvdW5kUmVjdCwg
MjUsIDUwKTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgdGVzdFBhc3NlZCgi
SGl0IHRocm93biBvbiBub3QgY2xpcHBlZCBhcmVhIG9mIHJlY3QuIik7CisKKyAgICBjb21wbGV0
ZVRlc3QoKTsKK30KKworZXhlY3V0ZUJhY2tncm91bmRUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9z
Y3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlwUGF0aFVuaXRzLWF0dHIuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVz
dHMvU1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlwUGF0aFVuaXRzLWF0dHIuanMJKHJldmlzaW9u
IDYwNzAxKQorKysgTGF5b3V0VGVzdHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMv
U1ZHQ2xpcFBhdGhFbGVtZW50LWRvbS1jbGlwUGF0aFVuaXRzLWF0dHIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTksMzIgKzksMzEgQEAgcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQoZGVmc0VsZW1l
bnQpOwogCiB2YXIgY2xpcFBhdGhFbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiY2xpcFBhdGgi
KTsKIGNsaXBQYXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIiwgImNsaXBwZXIiKTsKLWNsaXBQ
YXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAib2JqZWN0Qm91bmRpbmdC
b3giKTsKK2NsaXBQYXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAidXNl
clNwYWNlT25Vc2UiKTsKIAotdmFyIGNpcmNsZUVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCJj
aXJjbGUiKTsKLWNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJjeCIsICIxNTAiKTsKLWNpcmNs
ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJjeSIsICIxNTAiKTsKLWNpcmNsZUVsZW1lbnQuc2V0QXR0
cmlidXRlKCJyIiwgIjE1MCIpOwotY2xpcFBhdGhFbGVtZW50LmFwcGVuZENoaWxkKGNpcmNsZUVs
ZW1lbnQpOwordmFyIHJlY3RFbGVtZW50QSA9IGNyZWF0ZVNWR0VsZW1lbnQoInJlY3QiKTsKK3Jl
Y3RFbGVtZW50QS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwIik7CityZWN0RWxlbWVudEEuc2V0
QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAiKTsKK2NsaXBQYXRoRWxlbWVudC5hcHBlbmRDaGlsZChy
ZWN0RWxlbWVudEEpOwogCiBkZWZzRWxlbWVudC5hcHBlbmRDaGlsZChjbGlwUGF0aEVsZW1lbnQp
OwogCi12YXIgcmVjdEVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0Iik7Ci1yZWN0RWxl
bWVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjMwMCIpOwotcmVjdEVsZW1lbnQuc2V0QXR0cmli
dXRlKCJoZWlnaHQiLCAiMzAwIik7Ci1yZWN0RWxlbWVudC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAi
Z3JlZW4iKTsKLXJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIiwgInVybCgjY2xp
cHBlcikiKTsKLXJvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJlY3RFbGVtZW50KTsKK3ZhciBy
ZWN0RWxlbWVudEIgPSBjcmVhdGVTVkdFbGVtZW50KCJyZWN0Iik7CityZWN0RWxlbWVudEIuc2V0
QXR0cmlidXRlKCJ3aWR0aCIsICIxMDAiKTsKK3JlY3RFbGVtZW50Qi5zZXRBdHRyaWJ1dGUoImhl
aWdodCIsICIxMDAiKTsKK3JlY3RFbGVtZW50Qi5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4i
KTsKK3JlY3RFbGVtZW50Qi5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI2NsaXBwZXIp
Iik7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0RWxlbWVudEIpOwogCi1zaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImNsaXBQYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5p
dHMnKSIsICJvYmplY3RCb3VuZGluZ0JveCIpCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNsaXBQ
YXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5pdHMnKSIsICJ1c2VyU3BhY2VPblVz
ZSIpCiAKIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewotICAgIGNsaXBQYXRoRWxlbWVudC5zZXRB
dHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAidXNlclNwYWNlT25Vc2UiKTsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImNsaXBQYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5p
dHMnKSIsICJ1c2VyU3BhY2VPblVzZSIpOworICAgIGNsaXBQYXRoRWxlbWVudC5zZXRBdHRyaWJ1
dGUoImNsaXBQYXRoVW5pdHMiLCAib2JqZWN0Qm91bmRpbmdCb3giKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNsaXBQYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsaXBQYXRoVW5pdHMn
KSIsICJvYmplY3RCb3VuZGluZ0JveCIpOwogCiAgICAgY29tcGxldGVUZXN0KCk7CiB9CiAKLXN0
YXJ0VGVzdChyZWN0RWxlbWVudCwgMTUwLCAxNTApOworc3RhcnRUZXN0KHJlY3RFbGVtZW50Qiwg
NSwgNSk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2
Z2RvbS1jbGlwUGF0aFVuaXRzLXByb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2Z2RvbS1j
bGlwUGF0aFVuaXRzLXByb3AuanMJKHJldmlzaW9uIDYwNzAxKQorKysgTGF5b3V0VGVzdHMvc3Zn
L2R5bmFtaWMtdXBkYXRlcy9zY3JpcHQtdGVzdHMvU1ZHQ2xpcFBhdGhFbGVtZW50LXN2Z2RvbS1j
bGlwUGF0aFVuaXRzLXByb3AuanMJKHdvcmtpbmcgY29weSkKQEAgLTksMzIgKzksMzEgQEAgcm9v
dFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQoZGVmc0VsZW1lbnQpOwogCiB2YXIgY2xpcFBhdGhFbGVt
ZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgiY2xpcFBhdGgiKTsKIGNsaXBQYXRoRWxlbWVudC5zZXRB
dHRyaWJ1dGUoImlkIiwgImNsaXBwZXIiKTsKLWNsaXBQYXRoRWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImNsaXBQYXRoVW5pdHMiLCAib2JqZWN0Qm91bmRpbmdCb3giKTsKK2NsaXBQYXRoRWxlbWVudC5z
ZXRBdHRyaWJ1dGUoImNsaXBQYXRoVW5pdHMiLCAidXNlclNwYWNlT25Vc2UiKTsKIAotdmFyIGNp
cmNsZUVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCJjaXJjbGUiKTsKLWNpcmNsZUVsZW1lbnQu
c2V0QXR0cmlidXRlKCJjeCIsICIxNTAiKTsKLWNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJj
eSIsICIxNTAiKTsKLWNpcmNsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyIiwgIjE1MCIpOwotY2xp
cFBhdGhFbGVtZW50LmFwcGVuZENoaWxkKGNpcmNsZUVsZW1lbnQpOwotCi1kZWZzRWxlbWVudC5h
cHBlbmRDaGlsZChjbGlwUGF0aEVsZW1lbnQpOzsKLQotdmFyIHJlY3RFbGVtZW50ID0gY3JlYXRl
U1ZHRWxlbWVudCgicmVjdCIpOwotcmVjdEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIz
MDAiKTsKLXJlY3RFbGVtZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjMwMCIpOwotcmVjdEVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7Ci1yZWN0RWxlbWVudC5zZXRBdHRy
aWJ1dGUoImNsaXAtcGF0aCIsICJ1cmwoI2NsaXBwZXIpIik7Ci1yb290U1ZHRWxlbWVudC5hcHBl
bmRDaGlsZChyZWN0RWxlbWVudCk7Cit2YXIgcmVjdEVsZW1lbnRBID0gY3JlYXRlU1ZHRWxlbWVu
dCgicmVjdCIpOworcmVjdEVsZW1lbnRBLnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAiKTsKK3Jl
Y3RFbGVtZW50QS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMCIpOworY2xpcFBhdGhFbGVtZW50
LmFwcGVuZENoaWxkKHJlY3RFbGVtZW50QSk7CisKK2RlZnNFbGVtZW50LmFwcGVuZENoaWxkKGNs
aXBQYXRoRWxlbWVudCk7CisKK3ZhciByZWN0RWxlbWVudEIgPSBjcmVhdGVTVkdFbGVtZW50KCJy
ZWN0Iik7CityZWN0RWxlbWVudEIuc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMDAiKTsKK3JlY3RF
bGVtZW50Qi5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDAiKTsKK3JlY3RFbGVtZW50Qi5zZXRB
dHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3JlY3RFbGVtZW50Qi5zZXRBdHRyaWJ1dGUoImNs
aXAtcGF0aCIsICJ1cmwoI2NsaXBwZXIpIik7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChy
ZWN0RWxlbWVudEIpOwogCi1zaG91bGRCZSgiY2xpcFBhdGhFbGVtZW50LmNsaXBQYXRoVW5pdHMu
YmFzZVZhbCIsICJTVkdVbml0VHlwZXMuU1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCIp
Oworc2hvdWxkQmUoImNsaXBQYXRoRWxlbWVudC5jbGlwUGF0aFVuaXRzLmJhc2VWYWwiLCAiU1ZH
VW5pdFR5cGVzLlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UiKTsKIAogZnVuY3Rpb24gZXhl
Y3V0ZVRlc3QoKSB7Ci0gICAgY2xpcFBhdGhFbGVtZW50LmNsaXBQYXRoVW5pdHMuYmFzZVZhbCA9
IFNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFOwotICAgIHNob3VsZEJl
KCJjbGlwUGF0aEVsZW1lbnQuY2xpcFBhdGhVbml0cy5iYXNlVmFsIiwgIlNWR1VuaXRUeXBlcy5T
VkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFIik7CisgICAgY2xpcFBhdGhFbGVtZW50LmNsaXBQ
YXRoVW5pdHMuYmFzZVZhbCA9IFNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YOworICAgIHNob3VsZEJlKCJjbGlwUGF0aEVsZW1lbnQuY2xpcFBhdGhVbml0cy5iYXNl
VmFsIiwgIlNWR1VuaXRUeXBlcy5TVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIik7CiAK
ICAgICBjb21wbGV0ZVRlc3QoKTsKIH0KIAotc3RhcnRUZXN0KHJlY3RFbGVtZW50LCAxNTAsIDE1
MCk7CitzdGFydFRlc3QocmVjdEVsZW1lbnRCLCA1LCA1KTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>